클러스터 노드 구성 방법
redis-cli 혹은 redis-trib.rb 의 create 옵션을 사용하여 클러스터를 구성하는 방법
create 옵션을 사용하여 클러스터를 구성할 수 있으며, 이 때는 Redis 엔진에 의해 마스터/복제 노드가 지정됩니다.
마스터는 최소 3개 이상으로 구성되어야 합니다.
모든 마스터는 동일한 복제 노드 수를 가지고 있어야 합니다.
* redis-trib.rb는 레디스5.0 버전부터 redis-cli로 대체되었으며 여기에서는 다루지 않습니다.
매뉴얼을 사용하여 개별 구성하는 방법
마스터/복제노드를 사용자가 설정할 수 있습니다.
마스터와 복제노드를 사용자가 원하는 만큼 개별적으로 설정할 수 있습니다.
매뉴얼을 사용하여 개별 구성하는 방법을 권장드리며 이유는 포스팅 하단에 작성되어 있습니다.
redis-cli 를 사용한 클러스터 노드 구성 방법
마스터 노드 3개를 구성하는 방법 (총 3노드)
1 2 3 4 5 6 7 8 9 10 11 | $ redis-server 7000/redis_7000.conf $ redis-server 8000/redis_8000.conf $ redis-server 9000/redis_9000.conf $ redis-cli --cluster create 127.0.0.1:7000 127.0.0.1:8000 127.0.0.1:9000 $ redis-cli -c -p 7000 127.0.0.1:7000> cluster nodes 8b27f9ee6a0389ff9902883f298c24dbbcd7e192 127.0.0.1:7000@17000 myself,master - 0 1584891282000 1 connected 0-5460 f3ebf6b11ee07bb404d2a2d1b8e76c58916873d0 127.0.0.1:9000@19000 master - 0 1584891283424 3 connected 10923-16383 d0d90875d0cab217ea8c5470b6f42877dacb647a 127.0.0.1:8000@18000 master - 0 1584891283000 2 connected 5461-10922 | cs |
마스터 노드 3개와 각 마스터에 복제 노드 3개씩 구성하는 방법 (총 6노드)
* --cluster-replicas 값이 2인경우 마스터 3개이고 각 마스터에 복제노드가 2개씩 구성되어야 하기 때문에 총 9개의 노드가 필요합니다.
* 마스터서버가 구성된 후, 이후 나열되는 복제서버는 마스터노드에 랜덤으로 지정됩니다. (단, 복제수는 맞춤)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | $ redis-server 7000/redis_7000.conf $ redis-server 7001/redis_7001.conf $ redis-server 8000/redis_8000.conf $ redis-server 8001/redis_8001.conf $ redis-server 9000/redis_9000.conf $ redis-server 9001/redis_9001.conf $ redis-cli --cluster create 127.0.0.1:7000 127.0.0.1:8000 127.0.0.1:9000 \ 127.0.0.1:7001 127.0.0.1:8001 127.0.0.1:9001 --cluster-replicas 1 $ redis-cli -c -p 7000 127.0.0.1:7000> cluster nodes 0cd9d0a05e47e43b9f75261c5b38758ae4e76f56 127.0.0.1:8000@18000 master - 0 1584892014565 2 connected 5461-10922 8ad74b2b153b29d75e4d09b88535c0bd1da85513 127.0.0.1:8001@18001 slave 0cd9d0a05e47e43b9f75261c5b38758ae4e76f56 0 1584892014000 5 connected 85dbfd72292ef1a6a0afa0ca71f7009abe76d8bc 127.0.0.1:9001@19001 slave e8f98e267e5bec09b6cd392c08d6c627c9006624 0 1584892014565 6 connected 2503fb62e1bc1d4e0a313062f359e8035b6dca3b 127.0.0.1:7000@17000 myself,master - 0 1584892014000 1 connected 0-5460 0d9b52fee36407c810dffb0baa074268bfd05aa0 127.0.0.1:7001@17001 slave 2503fb62e1bc1d4e0a313062f359e8035b6dca3b 0 1584892014000 4 connected e8f98e267e5bec09b6cd392c08d6c627c9006624 127.0.0.1:9000@19000 master - 0 1584892014969 3 connected 10923-16383 | cs |
마스터 노드 2개와 복제노드 1개로 구성하려는 경우 (총 3노드 - 오류발생)
redis-cli 를 사용하여 클러스터를 구성할 때는 마스터 노드가 최소 3개 이상이어야 합니다.
1 2 3 4 5 6 7 8 9 10 | $ redis-server 7000/redis_7000.conf $ redis-server 8000/redis_8000.conf $ redis-server 9000/redis_9000.conf $ redis-cli --cluster create 127.0.0.1:7000 127.0.0.1:8000 127.0.0.1:9000 --cluster-replicas 1 *** ERROR: Invalid configuration for cluster creation. *** Redis Cluster requires at least 3 master nodes. *** This is not possible with 3 nodes and 1 replicas per node. *** At least 6 nodes are required. | cs |
마스터 노드 3개와 복제노드 2개로 구성하려는 경우 (총 5노드 - 오류 발생)
redis-cli 를 사용하여 클러스터를 구성할 때는 마스터와 복제노드의 매핑 수가 일치해야 합니다.
1 2 3 4 5 6 7 8 9 10 11 12 | $ redis-server 7000/redis_7000.conf $ redis-server 8000/redis_8000.conf $ redis-server 9000/redis_9000.conf $ redis-server 7001/redis_7001.conf $ redis-server 8001/redis_8001.conf $ redis-cli --cluster create 127.0.0.1:7000 127.0.0.1:8000 127.0.0.1:9000 \ 127.0.0.1:7001 127.0.0.1:8001 --cluster-replicas 1 *** ERROR: Invalid configuration for cluster creation. *** Redis Cluster requires at least 3 master nodes. *** This is not possible with 5 nodes and 1 replicas per node. *** At least 6 nodes are required | cs |
[주의] redis-cli 에서는 복제노드를 구성할 때 특징
앞에 나열한 서버의 노드를 마스터로 구성합니다.
이후 나열한 서버는 Redis 엔진에서 랜덤으로 마스터서버의 복제서버로 구성됩니다.
즉, 작성한 순서대로 마스터 서버의 노드의 복제서버로 지정되지 않습니다.
Line 17-22 : 작성한 순서와 별개로 마스터서버의 복제서버로 지정되는 것을 확인할 수 있습니다.
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 | $ redis-server 7000/redis_7000.conf $ redis-server 8000/redis_8000.conf $ redis-server 9000/redis_9000.conf $ redis-server 7001/redis_7001.conf $ redis-server 8001/redis_8001.conf $ redis-server 9001/redis_9001.conf $ redis-server 7002/redis_7002.conf $ redis-server 8002/redis_8002.conf $ redis-server 9002/redis_9002.conf $ redis-cli --cluster create 127.0.0.1:7000 127.0.0.1:8000 127.0.0.1:9000 \ 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:8001 \ 127.0.0.1:8002 127.0.0.1:9001 127.0.0.1:9002 --cluster-replicas 2 >>> Performing hash slots allocation on 9 nodes... Master[0] -> Slots 0 - 5460 Master[1] -> Slots 5461 - 10922 Master[2] -> Slots 10923 - 16383 Adding replica 127.0.0.1:7002 to 127.0.0.1:7000 Adding replica 127.0.0.1:8001 to 127.0.0.1:7000 Adding replica 127.0.0.1:8002 to 127.0.0.1:8000 Adding replica 127.0.0.1:9001 to 127.0.0.1:8000 Adding replica 127.0.0.1:9002 to 127.0.0.1:9000 Adding replica 127.0.0.1:7001 to 127.0.0.1:9000 $ redis-cli -c -p 7000 127.0.0.1:7000> cluster nodes d2c858c6730f7344f40c0dfab26dea9a0e5c4073 127.0.0.1:8000@18000 master - 0 1584896829028 2 connected 5461-10922 cca90e44bfa3ab98fe94307f2b3e7a7116f155a6 127.0.0.1:9002@19002 slave 6fcd9c2d6a363ce17fc7ab5bccb5f32b9fa05a09 0 1584896828521 9 connected 48e4f908a8109453a92fd11056cf9c28c37869aa 127.0.0.1:9001@19001 slave d2c858c6730f7344f40c0dfab26dea9a0e5c4073 0 1584896829028 8 connected dfa40c112a8ebbc95d64b4631a23da29a1a763df 127.0.0.1:7002@17002 slave 79bc08efe700e340567713a7f8a56106e848d855 0 1584896828521 5 connected ee5ceb4a6570fdebd2e76e1aed971365a63de21f 127.0.0.1:8002@18002 slave d2c858c6730f7344f40c0dfab26dea9a0e5c4073 0 1584896828000 7 connected 79bc08efe700e340567713a7f8a56106e848d855 127.0.0.1:9000@19000 master - 0 1584896829028 3 connected 10923-16383 6fcd9c2d6a363ce17fc7ab5bccb5f32b9fa05a09 127.0.0.1:7000@17000 myself,master - 0 1584896828000 1 connected 0-5460 fa9da1b28d54725601f490fb97140e9cad1efe0c 127.0.0.1:8001@18001 slave 79bc08efe700e340567713a7f8a56106e848d855 0 1584896828014 6 connected c64911edfcfcea2236b77b67cb9063e5f0449133 127.0.0.1:7001@17001 slave 6fcd9c2d6a363ce17fc7ab5bccb5f32b9fa05a09 0 1584896828521 4 connected | cs |
다음 포스팅에서는 매뉴얼대로 구성하는 방법에 대해 포스팅해보겠습니다.
'Database > Redis' 카테고리의 다른 글
[Redis] 클러스터 노드간 슬롯을 변경(이동)하는 방법 (2) | 2020.04.05 |
---|---|
[Redis] 클러스터 마스터노드 구성방법, 마스터 노드, 복제 노드 추가 방법 (0) | 2020.03.23 |
[Redis] 클러스터 구성 및 정보 확인하기, 클러스터 접속방법 (0) | 2020.03.22 |
[Redis] 클러스터 개념 및 Key 할당 방법 (0) | 2020.03.22 |
[Redis] 센티넬을 사용한 자동 Failover 방법 (Failback 포함) (0) | 2020.03.19 |