슬롯이란
클러스터 키를 해시함수로 적용하여 나온 값을 슬롯에 매핑하여 저장할 수 있게 해주는 기능입니다.
해시함수로 적용하여 나온 값에 매핑되는 슬롯이 없으면 데이터가 저장될 수 없습니다.
따라서 슬롯이 정상적인지 확인을 할 수 있어야 합니다.
오픈되어 있는 슬롯, 없는 슬롯을 확인하는 방법
check 명령어를 통해서 확인할 수 있습니다.
클러스터로 묶인 노드 중 한곳에 접속해서 확인할 수 있습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | $ redis-cli --cluster check 127.0.0.1:7000 127.0.0.1:7000 (869859e3...) -> 2 keys | 16383 slots | 1 slaves. 127.0.0.1:8000 (dcae2685...) -> 0 keys | 0 slots | 0 slaves. [OK] 2 keys in 2 masters. 0.00 keys per slot on average. >>> Performing Cluster Check (using node 127.0.0.1:7000) M: 869859e396c881b3c26f2a386c1495235225b57b 127.0.0.1:7000 slots:[0-9999],[10001-16383] (16383 slots) master 1 additional replica(s) S: a8248c454007d610685bba8e805c5a6004867d15 127.0.0.1:7001 slots: (0 slots) slave replicates 869859e396c881b3c26f2a386c1495235225b57b M: dcae268548d26662de97d3843f658318953004a7 127.0.0.1:8000 slots: (0 slots) master [ERR] Nodes don`t agree about configuration! >>> Check for open slots... [WARNING] Node 127.0.0.1:7000 has slots in migrating state 12539. [WARNING] Node 127.0.0.1:8000 has slots in importing state 12539. [WARNING] The following slots are open: 12539. >>> Check slots coverage... [ERR] Not all 16384 slots are covered by nodes. | cs |
Line |
설명 |
2 |
7000 마스터에 2개의 키 값이 있고 16383 의 슬롯이 있고 하나의 슬레이브 서버를 가지고 있습니다. |
7 |
7000 마스터에는 0-9999, 10001-16383 까지의 슬롯이 있습니다. |
15 |
에러를 출력합니다. |
17, 18, 19 |
현재 오픈되어 있는 슬롯이 있습니다. 이는 7000 에서 8000 으로 이동할 슬롯이 있고 이동이 완료되지 않다는 것을 나타냅니다. |
21 |
클러스터에 16384 개의 슬롯이 없습니다. 이 때는 addslots 옵션으로 없는 슬롯을 추가해주어야 합니다. 없는 슬롯은 Line 8, 14 에서 계산해서 찾을 수 있습니다. |
해결 방법
오픈되어 있는 슬롯을 해결하는 방법
내용이 길어서 아래 URL 을 참고해서 해결해 주면 됩니다.
없는 슬롯을 추가하는 방법
check로 출력된 빈 슬롯을 확인하면 10000 번이 비어있는 것을 확인할 수 있습니다.
addslots 으로 10000 슬롯을 추가해 줍니다.
1 2 | 127.0.0.1:7000> cluster addslots 10000 OK | cs |
다시 check 명령어로 확인해 보면 WARNING 과 ERR 가 없는 것을 확인할 수 있습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | $ redis-cli --cluster check 127.0.0.1:7000 127.0.0.1:7000 (869859e3...) -> 2 keys | 16384 slots | 1 slaves. 127.0.0.1:8000 (dcae2685...) -> 0 keys | 0 slots | 0 slaves. [OK] 2 keys in 2 masters. 0.00 keys per slot on average. >>> 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: a8248c454007d610685bba8e805c5a6004867d15 127.0.0.1:7001 slots: (0 slots) slave replicates 869859e396c881b3c26f2a386c1495235225b57b 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. | cs |
'Database > Redis' 카테고리의 다른 글
[Redis] INFO 명령어로 조회되는 대상 의미 파악 (0) | 2020.07.17 |
---|---|
[Redis] 클러스터 Failover 및 FailBack 하는 방법 (0) | 2020.04.05 |
[Redis] 클러스터 마스터, 슬레이브 노드를 제거하는 방법 (0) | 2020.04.05 |
[Redis] 클러스터 노드간 슬롯을 변경(이동)하는 방법 (2) | 2020.04.05 |
[Redis] 클러스터 마스터노드 구성방법, 마스터 노드, 복제 노드 추가 방법 (0) | 2020.03.23 |