CentOS 7에서 Redis 마스터-슬레이브 복제 구축하기

(1). 실험 환경

서버1 192.168.1.6 마스터 서버

서버2 192.168.1.7 슬레이브 서버

(2). 실험 단계

  1. 두 서버에 Redis를 yum으로 설치하고 시작 및 부팅 시 자동 실행 설정

자세한 내용은 CentOS7에서 yum으로 Redis 설치 참조

  1. 마스터 서버의 설정 변경
[root@서버1 ~]# vim /etc/redis.conf
bind 0.0.0.0  //69번째 줄, 모든 주소에서 접속 허용
requirepass 비밀번호  //507번째 줄, 인증 비밀번호 설정
[root@서버1 ~]# systemctl restart redis

방화벽이 활성화된 경우 포트를 추가해야 합니다

[root@서버1 ~]# firewall-cmd --permanent --zone=public --add-port=6379/tcp && firewall-cmd --reload
success
success
  1. 슬레이브 서버의 설정 변경
[root@서버2 ~]# vim /etc/redis.conf
replicaof 192.168.1.6 6379  //286번째 줄, 마스터 IP와 포트 설정
masterauth 비밀번호  //293번째 줄, 마스터 인증 비밀번호 설정
[root@서버2 ~]# systemctl restart redis
  1. 마스터와 슬레이브 상태 정보 확인

마스터 상태 정보 확인

[root@서버1 ~]# redis-cli
127.0.0.1:6379> auth 비밀번호
OK
127.0.0.1:6379> info replication
# Replication
role:master  //마스터 서버입니다
connected_slaves:1  //연결된 슬레이브 서버 수
slave0:ip=192.168.1.7,port=6379,state=online,offset=350,lag=1  //슬레이브 서버 정보
master_replid:e26e1e0953261c81b2ca2de08ce8ebda264eeabf
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:350
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:350

슬레이브 상태 정보 확인

[root@서버2 ~]# redis-cli
127.0.0.1:6379> info replication
# Replication
role:slave  //슬레이브 서버입니다
master_host:192.168.1.6  //마스터 서버 IP 주소
master_port:6379  //마스터 서버 포트
master_link_status:up  //연결 상태
master_last_io_seconds_ago:5
master_sync_in_progress:0
slave_repl_offset:112
slave_priority:100
slave_read_only:1  //슬레이브 서버로 전환 후 읽기 전용
connected_slaves:0
master_replid:e26e1e0953261c81b2ca2de08ce8ebda264eeabf
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:112
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:112
  1. 기능 테스트

마스터 서버에 키-값 쌍을 생성하고 슬레이브에서 확인

[root@서버1 ~]# redis-cli
127.0.0.1:6379> auth 비밀번호
OK
127.0.0.1:6379> set 사용자 테스트
OK

[root@서버2 ~]# redis-cli
127.0.0.1:6379> get 사용자
"테스트"

설정이 성공적으로 완료되었습니다.

(3). 마스터-슬레이브 복제 고급 설정 매개변수

CentOS7에서 yum으로 Redis 설치에 대한 내용은 이미 다루었으므로, 참조를 위해 다시 인용합니다.

/*218~220번째 줄, 스냅샷 저장 정책, 디스크에 저장되는 영속성 정책
* 첫 번째 숫자는 시간 단위(초), 두 번째 숫자는 키 값 변화 횟수
* 예를 들어 첫 번째 규칙은 900초 내에 최소 1번의 키 값 변화가 발생하면 스냅샷(영속성)을 한 번 수행
* 두 번째 규칙은 300초 내에 최소 10번의 키 값 변화가 발생하면 스냅샷(영속성)을 한 번 수행
* 모든 조건은 병렬 관계이며, 다른 키 값 변화에 따라 규칙을 선택하여 적용
*/
save 900 1
save 300 10
save 60 10000
//235번째 줄, 스냅샷 백업 중 오류 발생 시 중지 여부, 기본값인 yes로 설정
stop-writes-on-bgsave-error yes
//241번째 줄, RDB 파일 압축 여부 지정. yes는 압축을 의미하며 CPU 리소스를 소모
rdbcompression yes
/*250번째 줄, RDB 파일에 체크섬 검사를 수행할지 여부.
* 이 항목은 redis 시작 시 RDB 파일을 로드할 때 파일 체크섬을 검사할지를 정의합니다. 
* redis가 RDB 파일을 생성할 때 체크섬 정보를 생성하며, redis가 다시 시작하거나 RDB 파일을 로드할 때 체크섬 정보를 검사할지 여부를 결정합니다.
* 검사하는 경우 시간이 소요되어 redis 시작이 느려지지만, RDB 파일에 오류가 발생했는지 판단할 수 있습니다.
*/
rdbchecksum yes
//253번째 줄, RDB 파일 이름
 dbfilename dump.rdb
//263번째 줄, RDB 파일 저장 경로
dir /var/lib/redis
 
//286번째 줄, 마스터 서버 IP와 포트 정의, 마스터-슬레이브 복제 설정 정보
# replicaof <마스터IP> <마스터포트>
//293번째 줄, 마스터 서버 비밀번호 정의, 마스터-슬레이브 복제 설정 정보
# masterauth <마스터-비밀번호>
//308번째 줄, 슬레이브가 마스터와 연결이 끊어졌을 때 yes는 계속 서비스를 제공하되 데이터가 최신이 아닐 수 있음을 의미; no는 요청에 대해 오류 메시지 반환
replica-serve-stale-data yes
//324번째 줄, 슬레이브 읽기 전용 설정
replica-read-only yes
//355번째 줄, 기본적으로 diskless(디스크 없음) 동기화 방식을 사용하지 않음
repl-diskless-sync no
//367번째 줄, diskless(디스크 없음) 방식으로 데이터 전달 전 지연 시간, 슬레이브가 전송 대상 큐에 도달할 수 있도록 기본 5초
repl-diskless-sync-delay 5
//373번째 줄, 슬레이브가 마스터로 ping을 보내는 간격, 기본 10초
# repl-ping-replica-period 10
//385번째 줄, 타임아웃 시간 설정
# repl-timeout 60
/*400번째 줄, TCP_NODELAY 활성화 여부.
* 활성화하면 소량의 TCP 패킷과 대역폭을 사용하여 슬레이브로 데이터 전송 속도가 느려집니다.
* 비활성화하면 더 많은 대역폭을 사용하여 데이터 전송 속도가 빨라집니다.
*/
repl-disable-tcp-nodelay no
/*413번째 줄, backlog 크기 설정. backlog는 슬레이브가 연결이 끊겼을 때 슬레이브로 동기화할 데이터를 저장하는 버퍼입니다.
* 따라서 슬레이브가 다시 연결될 때 일반적으로 완전한 동기화가 필요하지 않습니다. backlog가 클수록 슬레이브가 연결이 끊긴 시간이 길어집니다(상대적으로)
*/
# repl-backlog-size 1mb
//426번째 줄, 일정 시간 후 슬레이브가 마스터에 연결되지 않으면 backlog(버퍼) 메모리가 해제됩니다. 0은 해제하지 않음, 기본 3600초
# repl-backlog-ttl 3600
//441번째 줄, 슬레이브 우선순위 설정. 숫자가 작을수록 우선순위가 높습니다. 마스터 장애 시 우선순위가 높은 슬레이브로 복구됩니다. 0으로 설정하면 해당 슬레이브는 절대로 선택되지 않음
replica-priority 100
//457~458번째 줄, 마스터의 사용 가능 슬레이브가 3개 미만이나 네트워크 지연이 10초 이상일 경우 마스터가 사용자의 쓰기 요청을 거부
# min-replicas-to-write 3
# min-replicas-max-lag 10

태그: Redis CentOS 마스터-슬레이브 복제 NoSQL 데이터베이스

6월 23일 04:06에 게시됨