Docker Compose를 사용하여 3-Node CrateDB 클러스터를 구축할 때, 가장 중요한 것은 command 섹션의 설정값.
CrateDB는 Elasticsearch를 기반으로 하기 때문에 설정 방식이 유사하며
스플릿 브레인(Split-Brain) 방지와
데이터 무결성(Data Integrity)을 위해 아래 옵션들을 정확히 이해하고 설정해야함.
# CrateDB Node 1 (Seed / Master)
crate-node1:
image: crate:latest
container_name: crate-node1
ports:
- "4200:4200"
- "5432:5432"
command: >
crate
-Cnetwork.host=_site_
-Ccluster.name=crate-cluster
-Cnode.name=crate-node1
-Cdiscovery.seed_hosts=crate-node2,crate-node3
-Ccluster.initial_master_nodes=crate-node1,crate-node2,crate-node3
-Cgateway.expected_data_nodes=3
-Cgateway.recover_after_data_nodes=2
restart: always
# CrateDB Node 2
crate-node2:
image: crate:latest
container_name: crate-node2
command: >
crate
-Cnetwork.host=_site_
-Ccluster.name=crate-cluster
-Cnode.name=crate-node2
-Cdiscovery.seed_hosts=crate-node1,crate-node3
-Ccluster.initial_master_nodes=crate-node1,crate-node2,crate-node3
-Cgateway.expected_data_nodes=3
-Cgateway.recover_after_data_nodes=2
restart: always
# CrateDB Node 3
crate-node3:
image: crate:latest
container_name: crate-node3
command: >
crate
-Cnetwork.host=_site_
-Ccluster.name=crate-cluster
-Cnode.name=crate-node3
-Cdiscovery.seed_hosts=crate-node1,crate-node2
-Ccluster.initial_master_nodes=crate-node1,crate-node2,crate-node3
-Cgateway.expected_data_nodes=3
-Cgateway.recover_after_data_nodes=2
restart: always
-C-C[키]=[값] (예: -Ccluster.name=my-cluster)crate.yml) 수정 없이 실행 시점에 설정 주입-D 시스템 프로퍼티 주입과 동일 원리-Cnetwork.host=_site__site_ 사용. 컨테이너의 사설 IP(Private IP) 자동 감지 및 바인딩localhost는 외부 접근 불가)-Ccluster.name=crate-cluster-Cnode.name=crate-node1-Cdiscovery.seed_hosts=crate-node2,crate-node3-Ccluster.initial_master_nodes=node1,node2,node3-Cgateway.expected_data_nodes=3-Cgateway.recover_after_data_nodes=2