위처럼 단일 레디스 서버 구성은 dev환경에서 개발 과정에 무리가 없다.
다만 production환경에서 하나의 Redis Server로 운영하는 것은 굉장히 위험한 선택이므로 이번에는 Master-Slave(Replica)구성을 구축해보자.
서버명 | IP:PORT |
---|---|
MasterNode | 127.0.0.1:6379 |
Slave Node - 1 | 127.0.0.1:6380 |
Slave Node - 2 | 127.0.0.1:6381 |
구성은 위 구성으로 진행해보자. 진행하기 앞서 redis.conf파일을 작성해주어야 한다.
우선 MasterNode의 설정파일로 사용할 redis.conf이다.
>bind 127.0.0.1
>port 6379
>requirepass yourpassword
>daemonize yes
이정도 설정으로 나머지는 기본설정을 사용한다.
이제는 나머지 SlaveNode의 설정파일 2개이다.
>bind 127.0.0.1
>port 6380(slave-1) / port 6381 (slave-2)
replicaof 127.0.0.1 6379
>requirepass yourpassword
>daemonize yes
설정값 | 설명 |
---|---|
daemonize [yes | |
port [number] default 6379 | Connection 요청을 받을 포트를 지정하는 설정입니다. |
bind [ip] default all interface | Redis를 bind 할 특정 interface를 지정하는 설정입니다. 만약 명시하지 않으면 모든 interface로부터 들어오는 요청들을 listen합니다. |
unixsocket [path], unixsocketperm [number]unixsocket /tmp/redis.sock / unixsocketperm 755 | 소켓으로 Redis Server를 붙게할 수 있는 설정입니다. |
timeout [second] | 클라이언트의 idle 시간이 해당 초만큼 지속되면 connection을 닫습니다. |
0으로 지정할시 항상 connection을 열어둡니다. | |
loglevel [level - debug, verbose,notice,warning] | 로그레벨지정 |
logfile [file path] | 로그파일이 쓰여질 파일 경로를 지정합니다. |
slaveof -> replicaof [master ip] [master port] 최근 버젼은 slaveof에서 replicaof로 변경됨.(어느 버전부터 바뀐지는 확인필요) | Master-Slave 관계를 구성하기 위하여 Master의 replication Node가될 slave Node 설정파일에 Master Node의 ip와port 정보를 기입하는 설정이다. |
즉, Master의 데이터가 slave에 replicate되게 된다. | |
masterauth [master-password] | 만약 Master Node 설정파일에 Slave Node가 붙기 위한 암호요구를 하였다면(require pass [password]), Slave Node의 설정파일은 Master Node가 지정한 패스워드로 해당 설정을 해줘야한다. |
slave-server-stale-data [yes |