Cassandra 구성

Cassandra 구성 (Configuring Cassandra)

Cassandra 구성 파일의 위치는 설치 유형에 따라 달라져요.

출처: Configuring 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.propertiescommitlog의 아카이빙 파라미터를 설정해요.

샘플 구성 파일은 ./conf에서도 찾을 수 있어요.

  • cqlshrc.sample — CQL 셸인 cqlsh를 구성하는 방법.

주요 런타임 속성

Cassandra 구성은 cassandra.yaml 파일에 yaml 속성을 설정하는 방식으로 수행돼요. 최소한 다음 속성을 설정하는 것을 고려해야 해요.

  • cluster_name — 클러스터의 이름을 설정해요.
  • seeds — 클러스터 seed nodes의 IP 주소를 쉼표로 구분한 목록.
  • storage_port — 기본 포트 7000이 방화벽에 의해 차단되지 않았는지 확인해요.
  • listen_addresslisten address는 노드가 클러스터의 다른 노드와 통신할 수 있게 하는 IP 주소예요. 기본값은 localhost로 설정돼요. 또는 listen_interface를 설정해 Cassandra가 사용할 인터페이스, 결과적으로 사용할 주소를 알려줄 수 있어요. 둘 중 하나만 설정하세요.
  • native_transport_port — cqlsh 같은 클라이언트가 이 포트로 Cassandra와 통신할 수 있도록 기본 포트 9042가 방화벽에 의해 차단되지 않았는지 확인해요.

디렉터리 위치 변경

다음 yaml 속성은 디렉터리 위치를 제어해요.

  • data_file_directoriesSSTables 같은 데이터 파일이 위치한 하나 이상의 디렉터리.
  • commitlog_directory — commitlog 파일이 위치한 디렉터리.
  • saved_caches_directory — 저장된 캐시가 위치한 디렉터리.
  • hints_directoryhints가 위치한 디렉터리.

성능상의 이유로 디스크가 여러 개라면 commitlog와 데이터 파일을 서로 다른 디스크에 두는 것을 고려하세요.

환경 변수

힙 크기 같은 JVM 레벨 설정은 cassandra-env.sh에서 설정할 수 있어요. 추가 JVM 명령줄 인자를 JVM_OPTS 환경 변수에 추가할 수 있어요. Cassandra가 시작될 때 이 인자들은 JVM에 전달돼요.

로깅

기본 로거는 logback이에요. 기본적으로 다음을 로깅해요.

  • system.log에서 INFO 레벨
  • debug.log에서 DEBUG 레벨

포그라운드에서 실행할 때는 콘솔에도 INFO 레벨로 로깅해요. logback.xml을 편집하거나 nodetool setlogginglevel 명령을 실행해 로깅 속성을 변경할 수 있어요.

더 알아보기 (Learn more)