redis

redis sentinel 구성

끄적끄적 2022. 4. 25. 15:42

redis의 replication구성과 sentinel까지 3대의 EC2에서 docker환경으로 구현해보겠다.

redis가 실행시 EC2(ubuntu)의 기본유저(1000, ubuntu)로 실행되도록 Dockerfile을 생성하여 빌드

FROM redis:6.2.6
RUN groupmod -g 1000 redis
RUN usermod -u 1000 -g 1000 redis
USER 1000
CMD [ "redis-server", "/data/redis.conf" ]
docker build -t seaking7/redis:1.0 .

 

Redis replication 구동
3개의 EC2 노드에서 각각 docker로 구동 및 replication 설정

docker run --name redis-replica -v /home/ubuntu/redis-replica:/data -p 3000:3000 -d seaking7/redis:1.0 redis-server /data/redis.conf

replication 명령어
slaveof <masterip> <masterport>
slaveof no one
config set slave-read-only no : slave에서 쓰기도 허용

sentinel 설정
별도의 경로 /redis-sentinel 에 redis-sentinel.conf 설정

port 26379
logfile "/data/sentinel_8000.log"
sentinel monitor mymaster 100.51.0.162 3000 2
sentinel down-after-milliseconds mymaster 5000

sentinel docker 실행

docker run --name redis-sentinel -v /home/ubuntu/redis-sentinel:/data -p 26379:26379 -d bitnami/redis-sentinel:6.2.6 redis-sentinel /data/redis-sentinel.conf

spring boot 에서 접속(application.properties 설정)

spring.redis.sentinel.master=mymaster
spring.redis.sentinel.nodes=100.51.6.77:26379,100.51.5.35:26379,100.51.0.162:26379

master다운시 HA 확인
기존에 master(100.51.0.162 3000) 다운시 투표를 통해 다음 master(100.51.5.35 3000)로 전환되었다.

어플리케이션도 변경된 master로 재접속하여 정상 insert를 해주고 있다.

 : Reconnecting, last destination was /100.51.0.162:3000
 : Cannot reconnect to [100.51.0.162:3000]: Connection refused: /100.51.0.162:3000
 : Reconnecting, last destination was 100.51.0.162:3000
 : Reconnected to 100.51.5.35:3000
 : >>>>>>> [save] FrequencyAds=FrequencyAds(id=125113, adsNumber=173123, adsViewTime=2022-04-25T15:41:33.513739)
 : >>>>>>> [save] FrequencyAds=FrequencyAds(id=165373, adsNumber=180442, adsViewTime=2022-04-25T15:41:33.861325)
 : >>>>>>> [save] FrequencyAds=FrequencyAds(id=198809, adsNumber=120054, adsViewTime=2022-04-25T15:41:34.116591)

 

 

반응형