Database/Cassandra

[Cassandra] multi-node cassandra docker-compose.yml file

bisi 2020. 5. 18. 12:33

 

카산드라를 도커에 설치하기 위한 방법은 

대표적으로 도커와 도커 컴포즈 방법이 있다. 

 

하나씩 띄우기에는 도커로 간편하게 띄울 순 있지만,

카산드라를 멀티 노드로 구축하거나, 카산드라 외에 다른 어플리케이션과 함께 설치하고 관리해야하는 경우에는

도커 컴포즈 파일로 한꺼번에 띄우는 방법을 사용할 수 있다. 

 

도커 컴포즈는 사전에 설치 되어 있어야한다.

도커 컴포즈를 실행시키기전에 아래 yml 파일 구성을 먼저 확인한다.

 

version: "3.8"
services:
  cassandra-0:
    image: cassandra:latest
    restart: always    
    ports:
      - 7000:7000
      - 9042:9042
    volumes:
      - /home/cassandra-node-0/commitlog:/var/lib/cassandra/commitlog
      - /home/cassandra-node-0/hints:/var/lib/cassandra/hints
      - /home/cassandra-node-0/data:/var/lib/cassandra/data
      - /home/cassandra-node-0/saved_caches:/var/lib/cassandra/saved_caches
      - /home/cassandra-node-0/logs:/var/log/cassandra
    environment:
      - CASSANDRA_SEEDS=cassandra-0
      - CASSANDRA_CLUSTER_NAME=cluster
      - CASSANDRA_NUM_TOKENS=8
      - CASSANDRA_DC=dc1
      - CASSANDRA_RACK=rack0
      - CASSANDRA_ENDPOINT_SNITCH=GossipingPropertyFileSnitch
      - MAX_HEAP_SIZE=8G
      - HEAP_NEWSIZE=200M

  cassandra-1:
    image: cassandra:latest    
    restart: always
    ports:
      - 1700:7000
      - 19042:9042
    volumes:
      - /home/cassandra-node-1/data:/var/lib/cassandra/data
      - /home/cassandra-node-1/commitlog:/var/lib/cassandra/commitlog
      - /home/cassandra-node-1/hints:/var/lib/cassandra/hints
      - /home/cassandra-node-1/saved_caches:/var/lib/cassandra/saved_caches
      - /home/cassandra-node-1/logs:/var/log/cassandra
    environment:
      - CASSANDRA_SEEDS=cassandra-0
      - CASSANDRA_CLUSTER_NAME=cluster
      - CASSANDRA_NUM_TOKENS=8
      - CASSANDRA_DC=dc1
      - CASSANDRA_RACK=rack0
      - CASSANDRA_ENDPOINT_SNITCH=GossipingPropertyFileSnitch      
      - MAX_HEAP_SIZE=8G
      - HEAP_NEWSIZE=200M

  cassandra-2:
    image: cassandra:latest
    restart: always    
    ports:
      - 27000:7000
      - 29042:9042
    volumes:
      - /home/cassandra-node-2/data:/var/lib/cassandra/data
      - /home/cassandra-node-2/commitlog:/var/lib/cassandra/commitlog
      - /home/cassandra-node-2/hints:/var/lib/cassandra/hints
      - /home/cassandra-node-2/saved_caches:/var/lib/cassandra/saved_caches
      - /home/cassandra-node-2/logs:/var/log/cassandra      
    environment:
      - CASSANDRA_SEEDS=cassandra-0
      - CASSANDRA_CLUSTER_NAME=cluster
      - CASSANDRA_NUM_TOKENS=8
      - CASSANDRA_DC=dc1
      - CASSANDRA_RACK=rack0
      - CASSANDRA_ENDPOINT_SNITCH=GossipingPropertyFileSnitch
      - MAX_HEAP_SIZE=8G
      - HEAP_NEWSIZE=200M
      

 

옵션 설명

image

카산드라의 버전은 가장 최신 것으로 사용한다. latest tag 부분을 변경하여 특정 버전의 카산드라 버전을 사용할수도 있다. 

 

restart: always 

시스템 시작시 항상 해당 어플리케이션이 자동으로 실행된다.

 

port 

도커에서 외부로 열어줄 port를 설정한다. 

 

volumes

도커 내부에 저장하는 경로를 외부에 연동시킨다. 

 

enviroment

카산드라 관련 옵션 셋팅으로 docker-compose.yml 파일에서 관리한다.

 

network 

위의 예시는 도커에서 사용하는 기본 IP를 자동으로 할당 받도록 설정하였다. 

network 옵션을 통해 특정 IP할당할수도 있다.

참고 : [Programming/Server] - [Docker] docker-compose 특정 ip 설정

 

 

특정 IP를 할당하고, 실행하는 방법에 대해선 github를 참고하면 된다. 

 

https://github.com/logengineer/cassandra-docker-compose

 

logengineer/cassandra-docker-compose

Setting cassandra on docker compose. Contribute to logengineer/cassandra-docker-compose development by creating an account on GitHub.

github.com