안녕하세요. 프뚜입니다!
Windows 환경에서 Redis Standalone & Cluster 설정에 대해 포스팅하려고 합니다.
1. Redis Standalone 실행
2. Redis Standalone Slave 연동
3. Redis Cluster 실행
4. Redis Cluster Slave(Replica) 연동
# Redis 설치하기(링크)
Windows 환경이기 때문에 Redis-x64.3.0.504.zip을 다운 받습니다.
(프뚜는 Latest 버전 3.0.504을 다운 받았습니다.)
알집을 해제하면 위와 같은 파일들이 보입니다.
# Redis Standalone Config 설정하기
...
dir C:\Users\Administrator\Desktop\redis
...
port 6379
...
bind 0.0.0.0 ::1
...
redis.windows.conf 파일을 열어서 해당 내용을 수정합니다.
dir: redis config, logs 등 default 경로 설정
port: redis 접근 port
bind: redis 접근 ip 할당
많은 config가 있지만 standalone이 defualt 설정이기 때문에 크게 수정 할 내용은 없습니다.
redis-server.exe redis.windows.conf 명령어를 통해 서버를 실행합니다.
정상적으로 6379 port로 redis가 구동됐습니다.
redis-cli.exe -p 6379 명령어로 redis에 접속합니다.
set 명령어를 통해 key, value 값을 입력 후 get 명령어를 통해 name value를 응답받습니다.
# Redis Standalone Slave 설정하기
master(6379)의 redis가 비정상 종료가 되었을 때 redis의 모든 데이터(메모리)를 손실하게 됩니다. 이를 방지하고자 slave(replica) 설정을 합니다. slave는 read만 가능한 특징이 있습니다.
...
dir C:\Users\Administrator\Desktop\redis
...
port 6380
...
bind 0.0.0.0 ::1
...
slaveof 127.0.0.1 6379
...
redis.windows.conf 파일을 열어서 해당 내용을 수정합니다.
dir: redis config, logs 등 default 경로 설정
port: redis 접근 port
bind: redis 접근 ip 할당
slaveof: <masterIP> <masterPort>
redis-server.exe redis.windows.conf 명령어를 통해 서버를 실행합니다.
정상적으로 6380 port로 redis(slave)가 구동됐습니다.
redis-cli.exe -p 6380 명령어로 redis에 접속합니다.
info Replication 명령어로 role 확인 시 slave로 생성됨을 확인할 수 있습니다.
master(6379)에 있는 데이터 sync가 제대로 들어가 있습니다.
redis-cli.exe -p 6379 shutdown 명령어로 master(6379)를 종료합니다.
redis-cli.exe -p 6380 명령어로 slave에 접속 후 get name 명령어 실행 시 이상 없이 사용이 가능합니다.
# Redis Cluster 설정하기
windows에서 redis cluster 설정하기 위해선 여러가지 사전 작업이 필요합니다.
RubyInstaller 페이지로 이동 후 WITHOUT DEVKIT 메뉴의 Ruby 3.2.2-1(x64)를 다운 받습니다.
다운 받은 파일을 실행 후 설치합니다.
명령프롬프트에 gem install redis 명령어를 통해 redis를 설치합니다. (redis-cli를 쓰기 위함)
링크로 이동하여 Ctrl + S로 파일을 저장합니다. 파일명은 redis-trib.rb로 저장합니다.
...
dir C:\Users\Administrator\Desktop\redis
...
port 포트입력
...
bind 0.0.0.0 ::1
...
cluster-enabled yes
...
cluster-config-file nodes-포트입력.conf
...
redis.windows.conf 파일을 열어서 해당 내용을 수정합니다.
dir: redis config, logs 등 default 경로 설정
port: redis 접근 port
bind: redis 접근 ip 할당
cluster-enable: 클러스터 사용 여부
cluster-config-file: 클러스터 세팅 시 conf가 출력될 파일명
cluster는 master node가 3개가 있어야합니다. master1(7000), master2(7001), master3(7002)으로 port를 수정하고 conf를 저장합니다. 또한 cluster 시 서로 클러스터링을 하기 위해 지정한 포트 + 10,000 port를 사용합니다.
예) 7000 port의 클러스터링 port는 17000입니다.
master1(7000), master2(7001), master3(7002)을 실행합니다.
3개의 cluster mode redis 서버가 실행됐습니다.
ruby redis-trib.rb create --replicas 0 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 명령어를 통해 master1~3을 클러스터링합니다.
redis-cli.exe -c -p 7000 명령어로 master에 접속합니다. standalone에서는 -c옵션이 없었지만, cluster 환경에서는 -c 옵션을 입력해야합니다.
master1(7000)에 접속해서 데이터를 입력했으나, name의 키는 5798 slot에 적재되기 때문에 master2(7001)로 이동됨을 확인할 수 있습니다.
# Redis Cluster Slave 설정하기
...
dir C:\Users\Administrator\Desktop\redis
...
port 포트입력
...
bind 0.0.0.0 ::1
...
cluster-enabled yes
...
cluster-config-file nodes-포트입력.conf
...
master1(7000), master2(7001) , master3(7002), slave1(7010), slave2(7011) , slave3(7012) conf를 생성한 후 redis를 실행합니다. (서버 실행 방법은 위 내용 참고바랍니다.)
ruby redis-trib.rb create --replicas 1 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7010 127.0.0.1:7011 127.0.0.1:7012
명령어를 통해 master와 slave을 생성합니다. --replicas 1은 한 쌍의(3개) slave를 생성합니다.
redis 관련된 내용은 이전 포스팅에도 자세하게 했으나, windows 세팅은 linux 환경과 실행 시 다른 부분이 있어서 포스팅하게 되었습니다.