2023년 9월 19일 화요일

docker-compose로 Cassandra 클러스터 구성

docker-compose로 Cassandra 노드 3개로 클러스터를 구축해본다.

docker-compose.yml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
version: '3.9'
 
services:
  cassandra-db-node1:
    image: cassandra:4.0
    container_name: cassandra-db-node1
    ports:
      - "9042:9042"
    expose:
      - "9042"
    restart: always
    extra_hosts:
      - 'host.docker.internal:host-gateway'
    environment:
      - TZ=Asia/Seoul
      - CASSANDRA_CLUSTER_NAME=DbCluster
      - CASSANDRA_ENDPOINT_SNITCH=GossipingPropertyFileSnitch
      - CASSANDRA_DC=dbCentre
    networks:
      - dbeaver
    mem_limit: "2.5g"
  cassandra-db-node2:
    image: cassandra:4.0
    container_name: cassandra-db-node2
    ports:
      - "9043:9042"
    expose:
      - "9042"
    restart: always
    extra_hosts:
      - 'host.docker.internal:host-gateway'
    environment:
      - TZ=Asia/Seoul
      - CASSANDRA_SEEDS=cassandra-db-node1
      - CASSANDRA_CLUSTER_NAME=DbCluster
      - CASSANDRA_ENDPOINT_SNITCH=GossipingPropertyFileSnitch
      - CASSANDRA_DC=dbCentre
    networks:
      - dbeaver
    depends_on:
      - cassandra-db-node1
    mem_limit: "2.5g"
  cassandra-db-node3:
    image: cassandra:4.0
    container_name: cassandra-db-node3
    ports:
      - "9044:9042"
    expose:
      - "9042"
    restart: always
    extra_hosts:
      - 'host.docker.internal:host-gateway'
    environment:
      - TZ=Asia/Seoul
      - CASSANDRA_SEEDS=cassandra-db-node1
      - CASSANDRA_CLUSTER_NAME=DbCluster
      - CASSANDRA_ENDPOINT_SNITCH=GossipingPropertyFileSnitch
      - CASSANDRA_DC=dbCentre
    networks:
      - dbeaver
    depends_on:
      - cassandra-db-node1
    mem_limit: "2.5g"
 
networks:
  dbeaver:
    driver: bridge
 
cs

Cassandra 컨테이너 구동 시 default로 heap 메모리 사이즈가 2G로 최초 구동시 mem_limit은 최소 2g는 넘어야 안정적으로 돌아간다.

'docker-compose up -d' 명령어로 컨테이너 3개를 구동한다.

'docker ps' 명령어로 노드 3개 컨테이너가 제대로 떠 있는지 확인.

'docker exec' 명령어로 노드 1에 접속한다.

1
docker exec -it cassandra-db-node1 cqlsh
cs

keyspace와 table을 생성하고, 데이터까지 insert 해본다.

노드 2에 접속하여 데이터가 제대로 샤딩되었나 확인한다.

댓글 없음:

댓글 쓰기

Kotlin, SpringBoot 3, GraalVM 환경에서 Native Image로 컴파일하여 애플리케이션 실행

Spring Boot 3부터, GraalVM Native Image를 공식 지원하여 애플리케이션의 시작 속도와 메모리 사용량을 크게 줄일 수 있다. Native Image란 기존의 JVM 기반 위에서 돌아가는 Java 애플리케이션과는 달리 JVM 없이...