Redis의 인스턴스.
노드 내부에서 데이터를 저장하거나 관리하기 위해 사용되는 구체적인 공간 또는 위치이다. 데이터 관리의 복잡성을 줄이고, 성능을 향상시키며, 시스템의 확장성을 높이는 데 도움을 줄 수 있다.
레플리카는 마스터 노드의 데이터를 복제하여 보관하는 슬레이브 노드를 의미하며, 이는 데이터의 안정성과 가용성을 높이고, 읽기 요청의 처리 성능을 향상시키는 데에 목적을 두고 있습니다.
샤딩(Sharding)은 데이터베이스의 데이터를 수평적으로 분할하여 다른 서버들에 분산시키는 방식을 말합니다. 각 서버는 데이터베이스의 일부분(샤드)만을 관리하게 되며, 이를 통해 전체 데이터베이스 시스템의 처리 능력과 확장성을 향상시킬 수 있습니다. 예를 들어, 한 데이터베이스에 사용자 정보가 저장되어 있고, 사용자가 매우 많아 데이터베이스가 너무 크게 되어 성능이 저하되는 경우, 샤딩을 사용하여 데이터베이스를 여러 조각으로 나누고 각 조각을 다른 서버에 분산시킬 수 있습니다. 사용자 ID를 기준으로 샤딩을 할 경우, 특정 ID 범위를 가진 사용자 데이터는 한 서버에, 다른 ID 범위를 가진 사용자 데이터는 다른 서버에 저장됩니다. 이렇게 하면 특정 서버에 대한 요청이 과도하게 몰리는 것을 방지하고, 각 서버는 자신이 관리하는 데이터만을 처리하기 때문에, 시스템 전체의 부하를 분산시키며 성능을 향상시킬 수 있습니다. 단, 샤딩은 데이터를 분산시키는 방법이므로, 샤드 간의 데이터 조작이 필요한 경우 복잡성이 증가할 수 있고, 샤딩 전략을 잘 설계해야 합니다.
여러 대의 서버가 하나의 시스템처럼 작동하는 것을 말한다. 클러스터링은 여러 대의 독립적인 컴퓨터를 연결하여 마치 하나의 컴퓨터처럼 사용하는 기술로, 높은 가용성(High Availability), 부하 분산(Load Balancing), 병렬 처리(Parallel Processing) 등의 목적으로 사용됩니다. 클러스터는 주로 다음과 같은 목적으로 구성됩니다:
t2023-m0021@t2023-m0021ui-MacBookAir Participatory-Trial % redis-cli -c -h 127.0.0.1 -p 6380 cluster nodes
5c410e07aa9931a1387ca69c7d4593b5eeda96c6 172.24.0.7:6380@16380 myself,master - 0 1713542499504 7 connected 0-16383
2bfed000a9350ecb9ab46a8f20bd598e4ae00314 172.24.0.5:6385@16385 slave,fail? ff203b1c48812d613fc824bfa7dadaf05cdae866 1713542502042 1713542499504 2 connected
51facc9d0d87f650a88d593449c4ae509e377a28 172.24.0.2:6382@16382 master,fail? - 1713542502042 1713542499504 3 connected
b1d54dd23e919223a62c04f2f6a08b333fe23a52 172.24.0.4:6384@16384 slave,fail? 5c410e07aa9931a1387ca69c7d4593b5eeda96c6 1713542500419 1713542499504 7 connected
8d4ebd1f448ccf4165e2c54d83169a4ac82aa80e 172.24.0.3:6383@16383 slave,fail? 51facc9d0d87f650a88d593449c4ae509e377a28 1713542502042 1713542499504 3 connected
ff203b1c48812d613fc824bfa7dadaf05cdae866 172.24.0.6:6381@16381 master,fail? - 1713542501433 1713542499504 2 connected
t2023-m0021@t2023-m0021ui-MacBookAir Participatory-Trial %
fail?: 이 상태는 클러스터의 다른 노드들이 해당 노드와의 연결이 끊겼다고 판단하고, 그 노드가 실패했다고 간주할 때 나타납니다. 실패 상태가 확인되면, 해당 노드는 클러스터에서 제외되며, 그 노드에 저장된 데이터는 다른 노드에서 복제되어 복구됩니다.
pfail?: 이 상태는 '잠재적 실패' 상태를 의미하며, 특정 노드가 일시적으로 응답하지 않거나 네트워크 문제로 인해 접근할 수 없을 때 나타납니다. 이 상태는 일시적일 수 있으며, 문제가 해결되면 노드는 다시 정상 상태로 돌아올 수 있습니다.
해당 노드들이 실패 상태로 표시된 경우, 다음과 같은 조치를 취할 수 있습니다:
네트워크 연결 확인: 해당 노드의 네트워크 연결이 올바르게 작동하는지 확인하세요. 네트워크 문제가 원인일 수 있습니다.
노드 로그 확인: 실패한 노드의 로그 파일을 확인하여 문제의 원인을 파악하세요. 로그 파일은 종종 실패의 원인을 밝히는데 도움이 됩니다.
Redis 서버 재시작: 때때로, 문제가 일시적인 것일 수 있으며, 해당 노드의 Redis 서버를 재시작하면 문제가 해결될 수 있습니다.
클러스터 상태 점검: redis-cli
명령어를 사용하여 클러스터의 전체 상태를 다시 확인하세요. 문제가 해결되었는지 확인하기 위해 cluster info
및 cluster nodes
명령어를 사용할 수 있습니다.
t2023-m0021@t2023-m0021ui-MacBookAir Participatory-Trial % redis-cli -c -h 127.0.0.1 -p 6380
127.0.0.1:6380> cluster info
cluster_state:ok
cluster_slots_assigned:16384
cluster_slots_ok:16384
cluster_slots_pfail:0
cluster_slots_fail:0
cluster_known_nodes:6
cluster_size:1
cluster_current_epoch:7
cluster_my_epoch:7
cluster_stats_messages_ping_sent:5
cluster_stats_messages_sent:5
cluster_stats_messages_received:0
total_cluster_links_buffer_limit_exceeded:0
redis-cli
명령어 실행 결과를 보면, 현재 Redis 클러스터의 상태에 대해 다음과 같은 정보를 알 수 있습니다:
이 정보를 통해 현재 클러스터는 정상 상태이며, 모든 슬롯이 정상적으로 작동 중임을 알 수 있습니다. 그러나 클러스터의 크기가 1로 표시되어 있어, 실제 운영 환경에서는 더 많은 마스터 노드를 포함한 더 복잡한 구성을 고려할 필요가 있을 수 있습니다. 클러스터의 노드 구성이나 데이터 분산 방식 등 추가적인 설정을 검토하는 것이 좋습니다.
... 라는데 문제가 우선은 일시적이었고 자동으로 복구를 했다는 것으로 받아들였다.
t2023-m0021@t2023-m0021ui-MacBookAir Participatory-Trial % redis-cli -c -h 127.0.0.1 -p 6380
127.0.0.1:6380> cluster info
cluster_state:ok
cluster_slots_assigned:16384
cluster_slots_ok:16384
cluster_slots_pfail:0
cluster_slots_fail:0
cluster_known_nodes:6
cluster_size:1
cluster_current_epoch:7
cluster_my_epoch:7
cluster_stats_messages_ping_sent:5
cluster_stats_messages_sent:5
cluster_stats_messages_received:0
total_cluster_links_buffer_limit_exceeded:0
127.0.0.1:6380> CLUSTER NODES
t2023-m0021@t2023-m0021ui-MacBookAir Participatory-Trial % redis-cli -c -p 6382
127.0.0.1:6382> ping
PONG
127.0.0.1:6382> set sdjkh sadfasdasdf
OK
127.0.0.1:6382> set sdfadf asdfasdf
OK
127.0.0.1:6382> set asdfff sdfsaaaa
OK
127.0.0.1:6382> set asdf awllopjllkjj
OK
127.0.0.1:6382> set tkjjp qjcatech
OK
127.0.0.1:6382> get 12345
(nil)
127.0.0.1:6382> cluster nodes
b1d54dd23e919223a62c04f2f6a08b333fe23a52 172.24.0.4:6384@16384 slave,fail? 5c410e07aa9931a1387ca69c7d4593b5eeda96c6 1713542501267 1713542499325 1 connected
ff203b1c48812d613fc824bfa7dadaf05cdae866 172.24.0.6:6381@16381 master,fail? - 1713542500248 1713542499325 2 connected
5c410e07aa9931a1387ca69c7d4593b5eeda96c6 172.24.0.7:6380@16380 master,fail? - 1713542501873 1713542499325 1 connected
51facc9d0d87f650a88d593449c4ae509e377a28 172.24.0.2:6382@16382 myself,master - 0 1713542499325 7 connected 0-16383
2bfed000a9350ecb9ab46a8f20bd598e4ae00314 172.24.0.5:6385@16385 slave,fail? ff203b1c48812d613fc824bfa7dadaf05cdae866 1713542501874 1713542499325 2 connected
8d4ebd1f448ccf4165e2c54d83169a4ac82aa80e 172.24.0.3:6383@16383 slave,fail? 51facc9d0d87f650a88d593449c4ae509e377a28 1713542501874 1713542499325 7 connected
127.0.0.1:6382> FLUSHALL
OK
127.0.0.1:6382> cluster nodes
b1d54dd23e919223a62c04f2f6a08b333fe23a52 172.24.0.4:6384@16384 slave,fail? 5c410e07aa9931a1387ca69c7d4593b5eeda96c6 1713542501267 1713542499325 1 connected
ff203b1c48812d613fc824bfa7dadaf05cdae866 172.24.0.6:6381@16381 master,fail? - 1713542500248 1713542499325 2 connected
5c410e07aa9931a1387ca69c7d4593b5eeda96c6 172.24.0.7:6380@16380 master,fail? - 1713542501873 1713542499325 1 connected
51facc9d0d87f650a88d593449c4ae509e377a28 172.24.0.2:6382@16382 myself,master - 0 1713542499325 7 connected 0-16383
2bfed000a9350ecb9ab46a8f20bd598e4ae00314 172.24.0.5:6385@16385 slave,fail? ff203b1c48812d613fc824bfa7dadaf05cdae866 1713542501874 1713542499325 2 connected
8d4ebd1f448ccf4165e2c54d83169a4ac82aa80e 172.24.0.3:6383@16383 slave,fail? 51facc9d0d87f650a88d593449c4ae509e377a28 1713542501874 1713542499325 7 connected
127.0.0.1:6382> cluster reset
OK
127.0.0.1:6382> cluster nodes
51facc9d0d87f650a88d593449c4ae509e377a28 172.24.0.2:6382@16382 myself,master - 0 1713542499325 7 connected
127.0.0.1:6382>
t2023-m0021@t2023-m0021ui-MacBookAir Participatory-Trial % redis-cli -c -p 6380
127.0.0.1:6380> FLUSHALL
OK
127.0.0.1:6380> cluster reset
OK
127.0.0.1:6380>
t2023-m0021@t2023-m0021ui-MacBookAir Participatory-Trial % redis-cli -c -p 6381
127.0.0.1:6381> FLUSHALL
OK
127.0.0.1:6381> cluster reset
OK
127.0.0.1:6381>
t2023-m0021@t2023-m0021ui-MacBookAir Participatory-Trial % redis-cli -c -p 6383
127.0.0.1:6383> FLUSHALL
(error) READONLY You can't write against a read only replica.
127.0.0.1:6383> cluster reset
OK
127.0.0.1:6383>
t2023-m0021@t2023-m0021ui-MacBookAir Participatory-Trial % redis-cli -c -p 6384
127.0.0.1:6384> FLUSHALL
(error) READONLY You can't write against a read only replica.
127.0.0.1:6384> cluster reset
OK
127.0.0.1:6384>
t2023-m0021@t2023-m0021ui-MacBookAir Participatory-Trial % redis-cli -c -p 6385
127.0.0.1:6385> FLUSHALL
(error) READONLY You can't write against a read only replica.
127.0.0.1:6385> cluster reset
OK
127.0.0.1:6385>
t2023-m0021@t2023-m0021ui-MacBookAir Participatory-Trial % docker exec -it participatory-trial-redis-0-1 redis-cli --cluster create participatory-trial-redis-0-1:6380 participatory-trial-redis-1-1:6381 participatory-trial-redis-2-1:6382 participatory-trial-redis-3-1:6383 participatory-trial-redis-4-1:6384 participatory-trial-redis-5-1:6385 --cluster-replicas 1 --cluster-yes
>>> Performing hash slots allocation on 6 nodes...
Master[0] -> Slots 0 - 5460
Master[1] -> Slots 5461 - 10922
Master[2] -> Slots 10923 - 16383
Adding replica participatory-trial-redis-4-1:6384 to participatory-trial-redis-0-1:6380
Adding replica participatory-trial-redis-5-1:6385 to participatory-trial-redis-1-1:6381
Adding replica participatory-trial-redis-3-1:6383 to participatory-trial-redis-2-1:6382
M: 5c410e07aa9931a1387ca69c7d4593b5eeda96c6 participatory-trial-redis-0-1:6380
slots:[0-5460] (5461 slots) master
M: ff203b1c48812d613fc824bfa7dadaf05cdae866 participatory-trial-redis-1-1:6381
slots:[5461-10922] (5462 slots) master
M: 51facc9d0d87f650a88d593449c4ae509e377a28 participatory-trial-redis-2-1:6382
slots:[10923-16383] (5461 slots) master
S: 8d4ebd1f448ccf4165e2c54d83169a4ac82aa80e participatory-trial-redis-3-1:6383
replicates 51facc9d0d87f650a88d593449c4ae509e377a28
S: b1d54dd23e919223a62c04f2f6a08b333fe23a52 participatory-trial-redis-4-1:6384
replicates 5c410e07aa9931a1387ca69c7d4593b5eeda96c6
S: 2bfed000a9350ecb9ab46a8f20bd598e4ae00314 participatory-trial-redis-5-1:6385
replicates ff203b1c48812d613fc824bfa7dadaf05cdae866
>>> Nodes configuration updated
>>> Assign a different config epoch to each node
>>> Sending CLUSTER MEET messages to join the cluster
Waiting for the cluster to join
.
>>> Performing Cluster Check (using node participatory-trial-redis-0-1:6380)
M: 5c410e07aa9931a1387ca69c7d4593b5eeda96c6 participatory-trial-redis-0-1:6380
slots:[0-5460] (5461 slots) master
1 additional replica(s)
S: b1d54dd23e919223a62c04f2f6a08b333fe23a52 172.27.0.7:6384
slots: (0 slots) slave
replicates 5c410e07aa9931a1387ca69c7d4593b5eeda96c6
S: 2bfed000a9350ecb9ab46a8f20bd598e4ae00314 172.27.0.6:6385
slots: (0 slots) slave
replicates ff203b1c48812d613fc824bfa7dadaf05cdae866
M: 51facc9d0d87f650a88d593449c4ae509e377a28 172.27.0.3:6382
slots:[10923-16383] (5461 slots) master
1 additional replica(s)
S: 8d4ebd1f448ccf4165e2c54d83169a4ac82aa80e 172.27.0.2:6383
slots: (0 slots) slave
replicates 51facc9d0d87f650a88d593449c4ae509e377a28
M: ff203b1c48812d613fc824bfa7dadaf05cdae866 172.27.0.4:6381
slots:[5461-10922] (5462 slots) master
1 additional replica(s)
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
t2023-m0021@t2023-m0021ui-MacBookAir Participatory-Trial % redis-cli -c -p 6380
127.0.0.1:6380> cluster nodes
5c410e07aa9931a1387ca69c7d4593b5eeda96c6 172.27.0.5:6380@16380 myself,master - 0 1713614298000 9 connected 0-5460
b1d54dd23e919223a62c04f2f6a08b333fe23a52 172.27.0.7:6384@16384 slave 5c410e07aa9931a1387ca69c7d4593b5eeda96c6 0 1713614299528 9 connected
2bfed000a9350ecb9ab46a8f20bd598e4ae00314 172.27.0.6:6385@16385 slave ff203b1c48812d613fc824bfa7dadaf05cdae866 0 1713614298000 7 connected
51facc9d0d87f650a88d593449c4ae509e377a28 172.27.0.3:6382@16382 master - 0 1713614298000 8 connected 10923-16383
8d4ebd1f448ccf4165e2c54d83169a4ac82aa80e 172.27.0.2:6383@16383 slave 51facc9d0d87f650a88d593449c4ae509e377a28 0 1713614299017 8 connected
ff203b1c48812d613fc824bfa7dadaf05cdae866 172.27.0.4:6381@16381 master - 0 1713614300037 7 connected 5461-10922
127.0.0.1:6380> cluster info
cluster_state:ok
cluster_slots_assigned:16384
cluster_slots_ok:16384
cluster_slots_pfail:0
cluster_slots_fail:0
cluster_known_nodes:6
cluster_size:3
cluster_current_epoch:9
cluster_my_epoch:9
cluster_stats_messages_ping_sent:69
cluster_stats_messages_pong_sent:64
cluster_stats_messages_sent:133
cluster_stats_messages_ping_received:59
cluster_stats_messages_pong_received:64
cluster_stats_messages_meet_received:5
cluster_stats_messages_received:128
total_cluster_links_buffer_limit_exceeded:0
127.0.0.1:6380>
t2023-m0021@t2023-m0021ui-MacBookAir Participatory-Trial % docker exec -it 5c4 /bin/bash
Error response from daemon: No such container: 5c4
t2023-m0021@t2023-m0021ui-MacBookAir Participatory-Trial % redis-cli
127.0.0.1:6379>
t2023-m0021@t2023-m0021ui-MacBookAir Participatory-Trial % redis-cli -c -p 6380
127.0.0.1:6380> get xin_wangui852@windstream.org
-> Redirected to slot [13822] located at 172.27.0.3:6382
^C%
t2023-m0021@t2023-m0021ui-MacBookAir Participatory-Trial % redis-cli -c -p 6380
127.0.0.1:6380> cluster nodes
5c410e07aa9931a1387ca69c7d4593b5eeda96c6 172.27.0.5:6380@16380 myself,master - 0 1713615191000 9 connected 0-5460
b1d54dd23e919223a62c04f2f6a08b333fe23a52 172.27.0.7:6384@16384 slave 5c410e07aa9931a1387ca69c7d4593b5eeda96c6 0 1713615191000 9 connected
2bfed000a9350ecb9ab46a8f20bd598e4ae00314 172.27.0.6:6385@16385 slave ff203b1c48812d613fc824bfa7dadaf05cdae866 0 1713615191143 7 connected
51facc9d0d87f650a88d593449c4ae509e377a28 172.27.0.3:6382@16382 master - 0 1713615190121 8 connected 10923-16383
8d4ebd1f448ccf4165e2c54d83169a4ac82aa80e 172.27.0.2:6383@16383 slave 51facc9d0d87f650a88d593449c4ae509e377a28 0 1713615191652 8 connected
ff203b1c48812d613fc824bfa7dadaf05cdae866 172.27.0.4:6381@16381 master - 0 1713615191000 7 connected 5461-10922
127.0.0.1:6380>
t2023-m0021@t2023-m0021ui-MacBookAir Participatory-Trial % docker exec 5c410e07aa9931a1387ca69c7d4593b5eeda96c6 /bin/bash
Error response from daemon: No such container: 5c410e07aa9931a1387ca69c7d4593b5eeda96c6
t2023-m0021@t2023-m0021ui-MacBookAir Participatory-Trial % docker exec -it 5c410e07aa9931a1387ca69c7d4593b5eeda96c6 /bin/bash
Error response from daemon: No such container: 5c410e07aa9931a1387ca69c7d4593b5eeda96c6
t2023-m0021@t2023-m0021ui-MacBookAir Participatory-Trial % docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
87d6460adfb6 docker.elastic.co/beats/filebeat:7.9.3 "/usr/local/bin/dock…" 20 hours ago Up 3 hours participatory-trial-filebeat-1
d19860461967 docker.elastic.co/logstash/logstash:7.9.3 "/usr/local/bin/dock…" 20 hours ago Up 8 minutes 0.0.0.0:5044->5044/tcp, 9600/tcp participatory-trial-logstash-1
e32f0ca09ebb docker.elastic.co/kibana/kibana:7.9.3 "/usr/local/bin/dumb…" 20 hours ago Up 20 hours 0.0.0.0:5601->5601/tcp participatory-trial-kibana-1
d856cf8deca0 my-custom-elasticsearch:latest "/tini -- /usr/local…" 20 hours ago Up 20 hours 0.0.0.0:9200->9200/tcp, 0.0.0.0:9300->9300/tcp participatory-trial-elasticsearch-1
1d53d96b160f postgres:16 "docker-entrypoint.s…" 20 hours ago Up 20 hours 0.0.0.0:5432->5432/tcp participatory-trial-postgres-1
afee97c78433 redis:latest "docker-entrypoint.s…" 20 hours ago Up 20 hours 6379/tcp, 0.0.0.0:6381->6381/tcp participatory-trial-redis-1-1
077963fd9f9e redis:latest "docker-entrypoint.s…" 20 hours ago Up 20 hours 6379/tcp, 0.0.0.0:6380->6380/tcp participatory-trial-redis-0-1
d9dc6eddf636 redis:latest "docker-entrypoint.s…" 20 hours ago Up 20 hours 6379/tcp, 0.0.0.0:6383->6383/tcp participatory-trial-redis-3-1
203483ac2ec9 redis:latest "docker-entrypoint.s…" 20 hours ago Up 20 hours 0.0.0.0:6379->6379/tcp participatory-trial-redis-1
bb666247eb81 redis:latest "docker-entrypoint.s…" 20 hours ago Up 20 hours 6379/tcp, 0.0.0.0:6384->6384/tcp participatory-trial-redis-4-1
40d26247fd8f redis:latest "docker-entrypoint.s…" 20 hours ago Up 20 hours 6379/tcp, 0.0.0.0:6382->6382/tcp participatory-trial-redis-2-1
7c03f8eae6e1 redis:latest "docker-entrypoint.s…" 20 hours ago Up 20 hours 6379/tcp, 0.0.0.0:6385->6385/tcp participatory-trial-redis-5-1
t2023-m0021@t2023-m0021ui-MacBookAir Participatory-Trial % docker exec -it 077963fd9f9e /bin/bash
root@077963fd9f9e:/data# redis-cli -c -p 6380
127.0.0.1:6380> get xin_wangui852@windstream.org
-> Redirected to slot [13822] located at 172.27.0.3:6382
"335351"