본문 바로가기
오픈소스/Redis

[Redis] Redis 클러스터 구성(Redis Clustering)

by sangyeon 2021. 10. 29.
728x90

1. Redis Clustering이란?

각기 다른 서버들을 하나로 묶어 하나의 시스템처럼 동작하게 함으로써 클라이언트에게 고가용성(HA) 제공하는 것이다.

클러스터링의 장점

- 데이터를 여러 서버에서 처리함으로써 특정서버에 트래픽이 집중되는 것을 분산 시킴

- 서버 일부분이 장애가 나더라도 다른 서버의 보완을 통해 서비스를 계속 이어나갈 수 있음

- 데이터 유실 최소화

 

 

2. 설정 방법

2-1. 마스터 노드 설정 파일(6379.conf/6380.conf/6381.conf)에 클러스터 설정 추가

1387 cluster-enabled yes
1396 cluster-config-file nodes-6379.conf
1403 cluster-node-timeout 15000
1254 appendonly yes

appendonly 옵션은 데이터를 Append Only File에 쓸지 여부를 정하는 파라미터이다. yes/no로 설정할 수 있다. 디폴트는 no이다. 레디스는 주 기억 장소가 메인 메모리(RAM)이다. 그러므로 서버 이상 시(레디스 서버 비정상 종료, OS 이상 상황 발생, 서버 전원 끊김 등) 저장한 모든 데이터가 날아가게 된다.   이를 방지하기 위한 기능 중 하나가 Appendonly이다.  Appendonly를 yes로 설정하면 레디스 서버에 데이터가 입력/수정/삭제될 때 마다 디스크에 쓴다.  그래서 서버 이상 시에도 데이터를 보존할 수 있다.   디스크에 써진 데이터는 레디스 서버 시작 시 읽켜서 메모리에 저장된다.

 

2-2. 클러스터 생성

[root@sydev redis]# redis-cli -a foobared --cluster create 127.0.0.1:6379 127.0.0.1:6380 127.0.0.1:6381
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
>>> Performing hash slots allocation on 3 nodes...
Master[0] -> Slots 0 - 5460
Master[1] -> Slots 5461 - 10922
Master[2] -> Slots 10923 - 16383
M: 6d9a9acb0616bbe345cfb248f6f8dfbd726db2bc 127.0.0.1:6379
   slots:[0-5460] (5461 slots) master
M: 78e3aaf93f932f9feded3ffcd3b4d1db1ef3f583 127.0.0.1:6380
   slots:[5461-10922] (5462 slots) master
M: 95830583afde90f9305a589a0fa6b17b1ead9f96 127.0.0.1:6381
   slots:[10923-16383] (5461 slots) master
Can I set the above configuration? (type 'yes' to accept): yes
>>> 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 127.0.0.1:6379)
M: 6d9a9acb0616bbe345cfb248f6f8dfbd726db2bc 127.0.0.1:6379
   slots:[0-5460] (5461 slots) master
M: 78e3aaf93f932f9feded3ffcd3b4d1db1ef3f583 127.0.0.1:6380
   slots:[5461-10922] (5462 slots) master
M: 95830583afde90f9305a589a0fa6b17b1ead9f96 127.0.0.1:6381
   slots:[10923-16383] (5461 slots) master
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.

 

2-3. 데이터 삽입 및 확인

[root@sydev redis]# redis-cli -c -p 6379 -a foobared
127.0.0.1:6379> set key1 value1
-> Redirected to slot [9189] located at 127.0.0.1:6380
OK
127.0.0.1:6380>
127.0.0.1:6380> set key2 value2
-> Redirected to slot [4998] located at 127.0.0.1:6379
OK


127.0.0.1:6379> get key1
-> Redirected to slot [9189] located at 127.0.0.1:6380
"value1"
127.0.0.1:6380> get key2
-> Redirected to slot [4998] located at 127.0.0.1:6379
"value2"

 

728x90