Cassandra Multi Node cluster 구성하기(centos7)

3개의 노드로 Cassandra 클러스터를 구축

node0 172.16.254.180 (seed1)
node1 172.16.254.181
node2 172.16.254.182

만약 cassandra가 구동되고 있다면 중지하고 현재 데이터를 삭제한다.

systemctl stop cassandra
rm -rf /var/lib/cassandra/data/*

각 노드들 설정파일 수정

각 노드들의 /etc/cassandra/conf/cassandra.yaml의 내용중 아래 부분을 찾아서 수정해준다.

  • seed node의 경우 auto_bootstrap의 값을 false로 해주고 나머지 노드들은 true값으로 설정한다.
  • listen_address의 경우 각 노드의 IP주소를 넣어준다.
cluster_name: 'MyCassandraCluster'
num_token: 256
-seeds: 172.16.254.180
listen_address: 172.16.254.180
rpc_address: 0.0.0.0
broadcast_rpc_address: 172.16.254.255 # rpc_address가 wildcard address(0.0.0.0)일 경우 반드시 해당 IP대역의 broadcast_rpc_address를 설정함
endpoint_snitch: GossipingPropertyFileSnitch
auto_bootstrap: false # seed node일 경우 추가함. 나머지 노드들은 ‘true’로 설정

cassandra-rackdc.properties 파일 수정

각 노드들의 /etc/cassandra/conf/cassandra-rackdc.properties파일의 내용을 동일하게 수정한다.

# indicate the rack and dc for this node
dc=DC1
rack=RAC1

Cassandra 클러스터 시작

각 노드들의 설정파일 수정이 완료 되면 seed node 부터 구동을 해주고 나머지 노드들을 구동한다.

systemctl start cassandra

Cassandra 클러스터 확인

nodetool status 명령으로 클러스터의 상태를 확인

# nodetool status
Datacenter: DC1
===============
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
--  Address         Load       Tokens       Owns (effective)  Host ID                               Rack
UN  172.16.254.180  116.8 KB   256          69.6%             e6c52a7b-ac64-4805-b14a-6c99b444af59  RAC1
UN  172.16.254.181  101.83 KB  256          67.8%             4c9a95bf-047b-489a-ab19-a150db6b174c  RAC1
UN  172.16.254.182  75.88 KB   256          62.6%             b32a71fa-4b9d-4c13-91ed-4cdb2954069e  RAC1

테스트

cqlsh 명령어로 cassandra에 접속

Keyspace 생성

CREATE KEYSPACE demo WITH replication = {'class': 'SimpleStrategy', 'replication_factor': 3};
cqlsh> DESCRIBE KEYSPACES
demo  system_schema  system_auth  system  system_distributed  system_traces
cqlsh>

Table 생성

cqlsh> USE demo ;
cqlsh:demo> CREATE TABLE users ( id int PRIMARY KEY, email text, name text );

Data 입력

각 노드에서 insert를 해본다.

node-0

cqlsh:demo> INSERT INTO users ( id, email, name ) VALUES ( 1, 'naver@naver.com', 'Kim' );

node-1

cqlsh:demo> INSERT INTO users ( id, email, name ) VALUES ( 2, 'google@gmail.com', 'Lee' );

node-2

INSERT INTO users ( id, email, name ) VALUES ( 3, 'daum@daum.net', 'Park' );

Data 조회

각 노드에서 select 를 실행해보면 결과를 확인 할 수 있다.

cqlsh:demo> select * from users ;
 id | email            | name
----+------------------+------
  1 |  naver@naver.com |  Kim
  2 | google@gmail.com |  Lee
  3 |    daum@daum.net | Park
(3 rows)
cqlsh:demo>

참고 자료

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다