[Redis] Redis 설치 및 Master-Slave(Replica) 관계 설정하기

설치하기 전에

Ubuntu 18.04.2 LTS 기준으로 진행하나, 16 버전이어도 무방할 듯하다. 먼저, 의존 라이브러리를 설치한다.

1
2
sudo apt-get update
sudo apt-get install build-essential tcl

설치

먼저, /tmp/src 폴더를 생성하고 그 안에서 작업하자.

1
2
3
4
5
6
7
8
9
10
11
12
# 폴더 생성
sudo mkdir /tmp/src
cd /tmp/src
# 압축파일 다운로드
sudo curl -O http://download.redis.io/redis-stable.tar.gz
# 압축 해제
sudo tar xzvf redis-stable.tar.gz
# 코드 옮기기
sudo mkdir /lib/redis
sudo mv redis-stable /lib/redis
# 이동
cd /lib/redis/redis-stable

소스코드를 컴파일한 후 테스트한 다음 설치한다.

1
2
3
make
make test
sudo make install

설치 확인

1
2
# 시작
redis-server

아래와 비슷한 로그가 찍힐 것이다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
10608:C 28 Jan 2019 16:48:14.211 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
10608:C 28 Jan 2019 16:48:14.211 # Redis version=5.0.3, bits=64, commit=00000000, modified=0, pid=10608, just started
10608:C 28 Jan 2019 16:48:14.211 # Configuration loaded
10609:M 28 Jan 2019 16:48:14.213 * Increased maximum number of open files to 10032 (it was originally set to 1024).
_._
_.-``__ ''-._
_.-`` `. `_. ''-._ Redis 5.0.3 (00000000/0) 64 bit
.-`` .-```. ```\/ _.,_ ''-._
( ' , .-` | `, ) Running in standalone mode
|`-._`-...-` __...-.``-._|'` _.-'| Port: 6379
| `-._ `._ / _.-' | PID: 10609
`-._ `-._ `-./ _.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' | http://redis.io
`-._ `-._`-.__.-'_.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' |
`-._ `-._`-.__.-'_.-' _.-'
`-._ `-.__.-' _.-'
`-._ _.-'
`-.__.-'

10609:M 28 Jan 2019 16:48:14.214 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
10609:M 28 Jan 2019 16:48:14.214 # Server initialized

ctrl + c 로 종료하자.


여러 Redis 생성

Redis는 기본적으로 초기 셋팅을 편리하게 도와주는 스크립트(install_server.sh)를 제공한다. install_server.sh/redis-stable/utils 에서 확인할 수 있다. 우리는 6379, 6382, 6383 총 세 가지의 conf file을 생성할 것이다.

1
2
# shell script 실행
sudo ./install_server.sh

아래와 같은 installer가 실행된다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Welcome to the redis service installer
This script will help you easily set up a running redis server

Please select the redis port for this instance: [6379]
Selecting default: 6379
Please select the redis config file name [/etc/redis/6379.conf] /lib/redis/6379.conf
Please select the redis log file name [/var/log/redis_6379.log]
Selected default - /var/log/redis_6379.log
Please select the data directory for this instance [/var/lib/redis/6379]
Selected default - /var/lib/redis/6379
Please select the redis executable path [/usr/local/bin/redis-server]
Selected config:
Port : 6379
Config file : lib/redis/6379.conf
Log file : /var/log/redis_6379.log
Data dir : /var/lib/redis/6379
Executable : /usr/local/bin/redis-server
Cli Executable : /usr/local/bin/redis-cli
Is this ok? Then press ENTER to go on or Ctrl-C to abort.

모두 기본 설정을 따르나, config file의 경로를 기존 /etc/redis/6379.conf 에서 /lib/redis/6379.conf 로 수정하였다. 이 과정을 총 세 번(6379, 6382, 6383) 반복한다.


Redis 동시에 실행 & 종료

conf file이 있는 경로에서 다음의 명령어를 실행한다.

1
sudo redis-server ./6379.conf & sudo redis-server ./6382.conf & sudo redis-server ./6383.conf &

각각 redis-cli 명령어를 입력했을 때, shell에 정상적으로 진입하면 된다.

1
2
3
redis-cli -p 6379
redis-cli -p 6382
redis-cli -p 6383

shell 안에서 정보를 확인해 보자. info 를 입력하면 해당 redis의 정보가 출력된다.

현재 상태에서는 6379, 6382, 6383 모두 master로 출력되어야 정상이다. 이제 redis를 내리고 6379를 master로, 6382, 6383을 slave로 설정해 보자.

1
2
3
4
# redis shutdown
redis-cli -p 6379 shutdown
redis-cli -p 6382 shutdown
redis-cli -p 6383 shutdown

Master-Slave 관계 설정

Redis에서 Master-Slave 관계 설정은 conf file 수정하면 된다. Master로 설정할 6379를 제외하고, 6382, 6383 두 file에 다음의 코드를 추가한다.

1
2
3
4
# slaveof [마스터ip] [마스터port]
# 로컬에서 진행하기 때문에 127.0.0.1을 사용했다.
slaveof 127.0.0.1 6379
slave-read-only yes

현재 모든 redis는 localhost에서 동작하고 있기에 ip를 127.0.0.1 로 설정하였고, master가 될 port(6379)를 입력하였다.

다시 redis를 실행시키고 설정된 구조를 확인해 보자.

1
2
3
4
5
6
# redis 시작
sudo redis-server ./6379.conf & sudo redis-server ./6382.conf & sudo redis-server ./6383.conf &
# 각각의 client shell 진입
redis-cli -p 6379
redis-cli -p 6382
redis-cli -p 6383

shell에 진입하여 info 명령을 입력해 보면, 6379는 master, 6382와 6383은 slave로 출력되는 것을 확인할 수 있다.

2018년 10월 redis 버전 5.0이 나오며 slave의 공식 명칭이 replica로 변경되었다. 단, 과거 버전임을 표시하기 위해서는 slave를 사용한다.


외부 접속 허용

외부 ip로 redis에 접속할 수 있도록 해 보자. 각각의 conf file에 bind 설정을 해 주면 된다. 6379, 6382, 6383의 conf file을 열고 다음의 코드를 추가하고 redis를 재시작한다.

1
2
bind 0.0.0.0
protected-mode yes

위의 코드는 외부에서 들어오는 모든 ip를 허용하겠다는 뜻이다. 만약 이 과정을 거치고도 외부 접속이 되지 않는다면 공유기의 포트 포워딩 설정에서 6379~6383 port를 열어 주면 된다.


참고


Share