클러스터 노드 구성 방법
redis-cli 혹은 redis-trib 의 create 옵션을 사용하여 클러스터를 구성하는 방법
https://mozi.tistory.com/381 포스팅을 참고해 주세요
매뉴얼을 사용하여 개별 구성하는 방법
마스터/복제노드를 사용자가 설정할 수 있습니다.
마스터와 복제노드를 사용자가 원하는 만큼 개별적으로 설정할 수 있습니다.
클러스터 매뉴얼대로 개별 구성 방법
마스터 노드 한 개로 클러스터 구성하기
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | $ redis-server 7000/redis_7000.conf $ redis-cli -c -p 7000 127.0.0.1:7000> cluster info cluster_state:fail cluster_slots_assigned:0 cluster_size:0 127.0.0.1:7000> cluster nodes 960bb6ffc1514ceb1e3ceffdff11c23ade57f72d :7000@17000 myself,master - 0 0 0 connected $ redis-cli -p 7000 cluster addslots {0..16383} OK $ redis-cli -c -p 7000 127.0.0.1:7000> cluster info cluster_state:ok cluster_slots_assigned:16384 cluster_size:1 127.0.0.1:7000> cluster nodes 960bb6ffc1514ceb1e3ceffdff11c23ade57f72d :7000@17000 myself,master - 0 0 0 connected 0-16383 | cs |
Line 1 : Redis 를 구동합니다. 아직 클러스터로 조인된 것은 아닙니다.
Line 4-7 : 클러스터 정보를 확인하면 상태가 fail 이며 슬롯이 할당되지 않은 것을 확인할 수 있습니다.
Line 8-9 : 클러스터 enable 상태이기 때문에 ID 값을 가지고 있습니다.
Line 11 : 클러스터에 슬롯을 할당합니다.
Line 15-18 : 클러스터가 활성화 되었으며 클러스터 기능을 수행할 수 있습니다.
마스터 노드에 복제서버 추가하기
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | $ redis-server 7001/redis_7001.conf $ redis-cli -p 7001 cluster meet 127.0.0.1 7000 OK $ redis-cli -c -p 7001 127.0.0.1:7001> cluster nodes 960bb6ffc1514ceb1e3ceffdff11c23ade57f72d 127.0.0.1:7000@17000 master - 0 1584900548040 0 connected 0-16383 9378f7f3c639d74e7102575213bc54cdb9f4476a 127.0.0.1:7001@17001 myself,master - 0 0 1 connected $ redis-cli -p 7001 cluster replicate 960bb6ffc1514ceb1e3ceffdff11c23ade57f72d OK $ redis-cli -c -p 7000 127.0.0.1:7000> cluster info cluster_state:ok cluster_slots_assigned:16384 cluster_known_nodes:2 cluster_size:1 127.0.0.1:7000> cluster nodes 9378f7f3c639d74e7102575213bc54cdb9f4476a 127.0.0.1:7001@17001 slave 960bb6ffc1514ceb1e3ceffdff11c23ade57f72d 0 1584900281326 1 connected 960bb6ffc1514ceb1e3ceffdff11c23ade57f72d 127.0.0.1:7000@17000 myself,master - 0 0 0 connected 0-16383 | cs |
Line 1 : 복제서버로 사용할 Redis(7001)를 구동합니다.
Line 3 : 마스터서버(7000)에 복제서버(7001)를 조인합니다.
Line 6-9 : 복제서버라는 것을 알려주지 않았으므로 아직 둘 다 마스터인 상태입니다.
Line 11 : 복제서버(7001)가 마스터서버ID(7000)의 복제역할을 한다는 것을 서버에 알려줍니다.
Line 15-19 : 노드는 2개로 늘었고, 마스터 서버는 1개 입니다.
Line 20-22 : 복제서버(7001) 은 slave 역할을 수행합니다.
혹은 redis-cli 명령어의 add-node 옵션을 통해서도 진행할 수 있습니다.
[슬레이브 IP:PORT] , [클러스터 노드 IP:PORT], [--cluster-slave 옵션], [마스터가 될 노드 ID] 순으로 입력해 주세요.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | $ redis-server redis_7001.conf $ redis-cli --cluster add-node 127.0.0.1:7001 127.0.0.1:7000 --cluster-slave 869859e396c881b3c26f2a386c1495235225b57b >>> Adding node 127.0.0.1:7001 to cluster 127.0.0.1:7000 >>> Performing Cluster Check (using node 127.0.0.1:7000) M: 869859e396c881b3c26f2a386c1495235225b57b 127.0.0.1:7000 slots:[0-16383] (16384 slots) master M: dcae268548d26662de97d3843f658318953004a7 127.0.0.1:8000 slots: (0 slots) master [OK] All nodes agree about slots configuration. >>> Check for open slots... >>> Check slots coverage... [OK] All 16384 slots covered. Automatically selected master 127.0.0.1:7000 >>> Send CLUSTER MEET to node 127.0.0.1:7001 to make it join the cluster. Waiting for the cluster to join >>> Configure node as replica of 127.0.0.1:7000. [OK] New node added correctly. | cs |
복제노드에서 데이터 확인이 안되는 경우가 있습니다.. 왜그럴까?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | $ redis-cli -c -p 7000 127.0.0.1:7000> set key mozi OK $ redis-cli -c -p 7001 127.0.0.1:7001> get key -> Redirected to slot [12539] located at 127.0.0.1:7000 "mozi" $ redis-cli -c -p 7001 127.0.0.1:7001> readonly OK 127.0.0.1:7001> get key "mozi" | cs |
마스터 노드 추가하기
1 2 3 4 5 6 7 8 9 10 | $ redis-server 8000/redis_8000.conf $ redis-cli -p 8000 cluster meet 127.0.0.1 7000 OK $ redis-cli -c -p 7000 127.0.0.1:7000> cluster nodes 9378f7f3c639d74e7102575213bc54cdb9f4476a 127.0.0.1:7001@17001 slave 960bb6ffc1514ceb1e3ceffdff11c23ade57f72d 0 1584901693471 1 connected 960bb6ffc1514ceb1e3ceffdff11c23ade57f72d 127.0.0.1:7000@17000 myself,master - 0 1584901692000 0 connected 0-16383 5cd4603e77197a22f6c563942c11b36bdebed670 127.0.0.1:8000@18000 master - 0 1584901693988 2 connected | cs |
Line 3 : 새로운 마스터서버(8000)을 기존 클러스터에 조인합니다.
Line 7-10 : 새로 추가된 마스터서버ID를 확인합니다.
Line 11-13 : 새로 추가된 마스터서버에 슬롯을 할당해 줍니다.
(슬롯에 데이터가 없는 경우에만 가능합니다. 슬롯에 데이터가 있는 경우 ERR 메시지가 발생합니다.)
혹은 redis-cli 명령어의 add-node 옵션을 통해서도 진행할 수 있습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | $ redis-server redis_8000.conf $ redis-cli --cluster add-node 127.0.0.1:8000 127.0.0.1:7000 >>> Adding node 127.0.0.1:8000 to cluster 127.0.0.1:7000 >>> Performing Cluster Check (using node 127.0.0.1:7000) M: 869859e396c881b3c26f2a386c1495235225b57b 127.0.0.1:7000 slots:[0-16383] (16384 slots) master 1 additional replica(s) S: e8b8e9115aab2a8bb42ec9aff1c62f1aeb3cc10c 127.0.0.1:7001 slots: (0 slots) slave replicates 869859e396c881b3c26f2a386c1495235225b57b [OK] All nodes agree about slots configuration. >>> Check for open slots... >>> Check slots coverage... [OK] All 16384 slots covered. >>> Send CLUSTER MEET to node 127.0.0.1:8000 to make it join the cluster. [OK] New node added correctly. | cs |
마스터 노드가 추가되었으면 reshard 명령어를 통해 slot 을 재 분배 해줍니다.
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 | $ redis-cli --cluster reshard 127.0.0.1:7000 >>> Performing Cluster Check (using node 127.0.0.1:7000) M: 960bb6ffc1514ceb1e3ceffdff11c23ade57f72d 127.0.0.1:7000 slots:[0-16383] (16384 slots) master 1 additional replica(s) S: 9378f7f3c639d74e7102575213bc54cdb9f4476a 127.0.0.1:7001 slots: (0 slots) slave replicates 960bb6ffc1514ceb1e3ceffdff11c23ade57f72d M: 5cd4603e77197a22f6c563942c11b36bdebed670 127.0.0.1:8000 slots: (0 slots) master [OK] All nodes agree about slots configuration. >>> Check for open slots... >>> Check slots coverage... [OK] All 16384 slots covered. How many slots do you want to move (from 1 to 16384)? 8191 What is the receiving node ID? 5cd4603e77197a22f6c563942c11b36bdebed670 Please enter all the source node IDs. Type 'all' to use all the nodes as source nodes for the hash slots. Type 'done' once you entered all the source nodes IDs. Source node #1: 960bb6ffc1514ceb1e3ceffdff11c23ade57f72d Source node #2: done ... Moving slot 8189 from 960bb6ffc1514ceb1e3ceffdff11c23ade57f72d Moving slot 8190 from 960bb6ffc1514ceb1e3ceffdff11c23ade57f72d Do you want to proceed with the proposed reshard plan (yes/no)? yes ... Moving slot 8189 from 127.0.0.1:7000 to 127.0.0.1:8000: Moving slot 8190 from 127.0.0.1:7000 to 127.0.0.1:8000: | cs |
Line 1 : 재 샤딩을 하여 추가된 마스터에 슬롯을 할당해 줍니다.
Line 3-14 : 현재 마스터에 할당된 슬롯을 확인할 수 있습니다.
Line 15 : 슬롯을 이동할 개수를 입력합니다.
Line 16 : 슬롯을 이동할 Destination 마스터의 ID 를 입력합니다.
Line 20 : 슬롯이 있는 Source Node 를 입력합니다.
Line 22-24 : Source Node 로부터 슬롯번호를 이동합니다. (실제 이동은 아닙니다.)
Line 25 : 재 샤딩을 할 건지 한번 더 확인받습니다.
Line 26-28 : Destination 마스터로 슬롯을 이동합니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | $ redis-cli -c -p 8000 127.0.0.1:8000> cluster slots 1) 1) (integer) 0 2) (integer) 8190 3) 1) "127.0.0.1" 2) (integer) 8000 3) "5cd4603e77197a22f6c563942c11b36bdebed670" 2) 1) (integer) 8191 2) (integer) 16383 3) 1) "127.0.0.1" 2) (integer) 7000 3) "960bb6ffc1514ceb1e3ceffdff11c23ade57f72d" 4) 1) "127.0.0.1" 2) (integer) 7001 3) "9378f7f3c639d74e7102575213bc54cdb9f4476a" | cs |
Line 2-15 : 서버의 ID, Port, ID 값에 할당된 슬롯번호를 확인할 수 있습니다.
'Database > Redis' 카테고리의 다른 글
[Redis] 클러스터 마스터, 슬레이브 노드를 제거하는 방법 (0) | 2020.04.05 |
---|---|
[Redis] 클러스터 노드간 슬롯을 변경(이동)하는 방법 (2) | 2020.04.05 |
[Redis] redis-cli create 옵션으로 클러스터 노드 마스터/복제 구성방법과 주의점 (0) | 2020.03.23 |
[Redis] 클러스터 구성 및 정보 확인하기, 클러스터 접속방법 (0) | 2020.03.22 |
[Redis] 클러스터 개념 및 Key 할당 방법 (0) | 2020.03.22 |