Once in a Lifetime

01. Redis - Master/Slave 설치 본문

Develope Diary

01. Redis - Master/Slave 설치

riceworld 2016. 2. 5. 08:19

Redis 의 복제 구성과 Sentinel 을 이용한 Failover. 고가용성을 위한 HaProxy 의 Keepalived 를 이용한 이중화에 대해서 포스팅 합니다.




서버의 구성은 위와 같이 진행합니다.


1. Redis 마스터 서버 (쓰기/읽기) - 통상 쓰기 전용으로 사용

2. Redis 슬레이브 서버 (읽기) - 읽기 전용

3. Redis 마스터들을 감시하여 마스터가 다운되었을 경우 FailOver (슬레이브를 마스터로 승격)

4. Redis 상단에 HaProxy 를 이용한 스위치 구성 (Keepalived 로 이중화)


실제 클라이언트는 스위치(HaProxy)를 통해 쓰기(5000번 포트) / 읽기(5001번 포트)에 접속하는 것으로 구성합니다.


설치 전 준비사항


 -본 포스팅에서 운영체제는 CentOS 7 을 사용합니다.


net-tools

yum -y install net-tools


nano

yum -y install nano


wget

yum -y install wget


firewalld

yum -y install firewalld


Install EPEL Repo

wget -r --no-parent -A 'epel-release-*.rpm' http://dl.fedoraproject.org/pub/epel/7/x86_64/e/

rpm -Uvh dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-*.rpm


EPEL Repo 확인 (epel.repo / epel-testing.repo)

ls -l /etc/yum.repos.d/


필요한 데몬과 툴, 리파지터리를 설치했으면 본격적으로 Redis 서버를 설치해 보겠습니다.


Install Redis

yum -y install redis


전체적으로 업데이트를 한번 실행해 줍니다.

yum update


Redis 는 마스터/슬레이브의 구분(물리적인 패키지)이 없고, 설정파일만으로 구분하기 때문에, 위의 구성도와 같이 서버를 구성하기 위해 총 3대의 서버에 동일하게 Redis 서버를 설치해 줍니다. 각각의 서버별로 기본 포트인 6379 외 다른 포트를 바인딩 하기도 하지만, 본 포스팅에서는 3대의 서버 모두 기본 포트인 6379 를 바인딩 합니다.


방화벽 설정


Redis 기본 포트인 6379 번 포트를 오픈하여 외부에서 해당 포트로 접속이 가능하도록 설정합니다.


firewalld 실행 및 등록

systemctl start firewalld.service

systemctl enable firewalld.service


방화벽 public zone 에 추가

firewall-cmd --permanent -zone=public --add-port=6379/tcp

firewall-cmd --reload


설정 파일


Redis 서버의 설정 파일은 /etc/redis.conf 입니다.


nano /etc/redis.conf


공통 설정 부분 입니다.


- 원격 접속을 위해 로컬 아이피 바인딩을 주석 처리

#bind 127.0.0.1


- 마스터 서버의 FailOver 시 슬레이브를 마스터 서버로 승격시 사용할 서버 패스워드 설정

  마스터/슬레이브 모두 동일하게 설정

masterauth mypassword


- 서버 패스워드 설정

requirepass mypassword


- 백업파일(rdb) 생성 주기 옵션 (save 초 변경키수)

save 900 1

save 300 10

save 60 1000


기본적인 Redis 서버 구성이 완료 되었습니다.

Redis 서버를 실행 및 등록하고 제대로 동작하는지 확인해 보겠습니다.


[root@localhost ~]# redis-cli

127.0.0.1:6379> auth mypassword

OK

127.0.0.1:6379> ping

PONG


제대로 설치된 것 같네요.


기타 트러블 슈팅의 기본은 로그 파일의 확인인 점 잊지마시고, 로그 파일의 경로는 아래와 같습니다.


/var/log/redis/redis.log


다음 포스팅은 설치한 마스터 서버 1대, 슬레이브 서버 2대를 이용하여 복제(Replication) 구성을 해보도록 하겠습니다.


Comments