Cassandra 구성
Cassandra 구성 (Configuring Cassandra)
Cassandra 구성 파일의 위치는 설치 유형에 따라 달라져요.
본문
- docker:
/etc/cassandra디렉터리 - tarball: tarball 설치 위치 내의
conf디렉터리 - package:
/etc/cassandra디렉터리
Cassandra의 기본 구성 파일인 cassandra.yaml은 간단한 단일 노드 cluster를 살펴보기에는 충분해요. 하지만 로컬에서 단일 노드 클러스터를 실행하는 것 이상은 다양한 Cassandra 구성 파일에 추가 구성을 요구해요. 비기본 구성을 요구하는 예로는 다중 노드 클러스터 배포나 클러스터 노드에서 실행되지 않는 클라이언트 사용이 있어요.
cassandra.yaml— Cassandra의 주요 구성 파일로, 민감한 설정을 포함하므로 신뢰할 수 없는 사용자가 접근하거나 수정해서는 안 돼요.cassandra-env.sh— 환경 변수를 설정할 수 있어요.cassandra-rackdc.properties또는cassandra-topology.properties— 클러스터의 랙과 데이터센터 정보를 설정해요.logback.xml— 로깅 레벨을 포함한 로깅 구성.jvm-*— 서버와 클라이언트 모두를 위한 여러 JVM 구성 파일.commitlog_archiving.properties—commitlog의 아카이빙 파라미터를 설정해요.
샘플 구성 파일은 ./conf에서도 찾을 수 있어요.
cqlshrc.sample— CQL 셸인 cqlsh를 구성하는 방법.
주요 런타임 속성
Cassandra 구성은 cassandra.yaml 파일에 yaml 속성을 설정하는 방식으로 수행돼요. 최소한 다음 속성을 설정하는 것을 고려해야 해요.
cluster_name— 클러스터의 이름을 설정해요.seeds— 클러스터seed nodes의 IP 주소를 쉼표로 구분한 목록.storage_port— 기본 포트 7000이 방화벽에 의해 차단되지 않았는지 확인해요.listen_address—listen address는 노드가 클러스터의 다른 노드와 통신할 수 있게 하는 IP 주소예요. 기본값은 localhost로 설정돼요. 또는listen_interface를 설정해 Cassandra가 사용할 인터페이스, 결과적으로 사용할 주소를 알려줄 수 있어요. 둘 중 하나만 설정하세요.native_transport_port— cqlsh 같은 클라이언트가 이 포트로 Cassandra와 통신할 수 있도록 기본 포트 9042가 방화벽에 의해 차단되지 않았는지 확인해요.
디렉터리 위치 변경
다음 yaml 속성은 디렉터리 위치를 제어해요.
data_file_directories—SSTables같은 데이터 파일이 위치한 하나 이상의 디렉터리.commitlog_directory— commitlog 파일이 위치한 디렉터리.saved_caches_directory— 저장된 캐시가 위치한 디렉터리.hints_directory—hints가 위치한 디렉터리.
성능상의 이유로 디스크가 여러 개라면 commitlog와 데이터 파일을 서로 다른 디스크에 두는 것을 고려하세요.
환경 변수
힙 크기 같은 JVM 레벨 설정은 cassandra-env.sh에서 설정할 수 있어요. 추가 JVM 명령줄 인자를 JVM_OPTS 환경 변수에 추가할 수 있어요. Cassandra가 시작될 때 이 인자들은 JVM에 전달돼요.
로깅
기본 로거는 logback이에요. 기본적으로 다음을 로깅해요.
system.log에서 INFO 레벨debug.log에서 DEBUG 레벨
포그라운드에서 실행할 때는 콘솔에도 INFO 레벨로 로깅해요. logback.xml을 편집하거나 nodetool setlogginglevel 명령을 실행해 로깅 속성을 변경할 수 있어요.