티스토리 뷰

개발/Redis

Redis Cluster 설치 및 구성

소금집사 2024. 1. 8. 11:04
반응형

OS: Cent OS 7

Redis Version: Redis 5.0.7

 

 

1. Redis package Download

# wget http://download.redis.io/releases/redis-5.0.7.tar.gz
# tar xzf redis-5.0.7.tar.gz

[직접다운로드링크]

 

Index of /releases/

 

download.redis.io

 

 

2. Redis package install

# cd redis-5.0.7
# make
# make install

make 명령어 입력 시 패키지 오류 발생했을 경우. deps 디렉토리에 들어가 아래 명령어를 실행해 준다.

# cd deps
# make hiredis jemalloc linenoise geohash-int lua

 

 

 

3. Copy & Backup Redis .conf File

  • 각각 포트에 따른 설정파일 수정을 위해 Redis 설정파일을 복사한다. (Master : 1001, 1002, 1003 / Slave : 2001, 2002, 2003)
# mkdir /var/REC/redis/redis_conf
# cp redis.conf /var/REC/redis/redis_conf/1001.conf
# cp redis.conf /var/REC/redis/redis_conf/1002.conf
# cp redis.conf /var/REC/redis/redis_conf/1003.conf
# cp redis.conf /var/REC/redis/redis_conf/2001.conf
# cp redis.conf /var/REC/redis/redis_conf/2002.conf
# cp redis.conf /var/REC/redis/redis_conf/2003.conf

 

포트별 Redis 설정파일을 수정해준다.

 

# cd /var/REC/redis/redis_conf
# vim 1001.conf

 

 

{port}.conf

port 1001 

# bind 127.0.0.1    <-- 주석처리
    
#no 설정시 원격으로 접속 가능
protected-mode no

#백그라운드 실행 및 식별등록
daemonize yes
pidfile /var/run/redis_1001.pid

#로그파일 경로설정
logfile /var/REC/log/redis/redis_1001.log

#Cluster 모드 사용
cluster-enable yes

#Cluster 상태를 기록하는 바이너리 파일로 상태가 변경될 때마다 상태를 기록 ( 해당파일은 자동생성,관리되며 수정불가함 )
cluster-config-file nodes_1001.conf

#Redis 노드가 다운되었는지 판단하는 시간 ( 3000 ~ 5000 권장)
cluster-node-timeout 5000

#클러스터 설정파일 경로
cluster-config-file /var/REC/redis/redis_conf/1001.conf

#다운된 Master 노드 재시작시 가장 최근 데이터가 저장되어 있으므로 yes로 하는것을 권장
appendonly yes
appendfilename "appendonly.aof"

 

 

4. Start Cluster

  • 각 Redis Cluster Node 실행
# /usr/local/bin/redis-server 1001.conf
# /usr/local/bin/redis-server 1002.conf
# /usr/local/bin/redis-server 1003.conf

# /usr/local/bin/redis-server 2001.conf
# /usr/local/bin/redis-server 2002.conf
# /usr/local/bin/redis-server 2003.conf

 

  • Redis 실행여부 확인
  •  
# ps -ef | grep redis 

	root	1295	1   0  Jul25 ?	00:02:03  /usr/local/bin/redis-server *1001 [cluster]
	root	1296	1   0  Jul25 ?	00:02:03  /usr/local/bin/redis-server *1002 [cluster]
	root	1297	1   0  Jul25 ?	00:02:03  /usr/local/bin/redis-server *1003 [cluster]
	root	1298	1   0  Jul25 ?	00:02:03  /usr/local/bin/redis-server *2001 [cluster]
	root	1299	1   0  Jul25 ?	00:02:03  /usr/local/bin/redis-server *2002 [cluster]
	root	1300	1   0  Jul25 ?	00:02:03  /usr/local/bin/redis-server *2003 [cluster]

 

 

  • Redis Cluster Create
# /usr/local/bin/redis-cli --cluster create 127.0.0.1:1001 127.0.0.1:1002 127.0.0.1:1003 127.0.0.1:2001 127.0.0.1:2002 127.0.0.1:2003 --cluster-replicas 1

 

 

  • Redis Cluster Infomation (예시)
# /usr/local/bin/redis-cli -p 1001
127.0.0.1:1001 > cluster nodes

804daa70a1262952672a06a059b62dfd47f2b250 127.0.0.1:2003@12003 slave 855283bfd9920a9310f9c3b2bd0e8329a9905aec 0 1627283497000 4 connected
f36c1bfc329719934c08f41a175a39f389118f8b 127.0.0.1:1003@11003 master - 0 1627283498000 18 connected 10923-16383
0fb258fcaf1b1f1f876f8e49cd7e332754c9d1a5 127.0.0.1:2002@12002 slave f36c1bfc329719934c08f41a175a39f389118f8b 0 1627283499284 18 connected
115ae080b71b3685c45086b9983f60d31cefc73e 127.0.0.1:2001@12001 slave 4bfe522fde89996730d98907ed52c375aad5c71f 0 1627283498000 6 connected
4bfe522fde89996730d98907ed52c375aad5c71f 127.0.0.1:1001@11001 myself,master - 0 1627283496000 1 connected 0-5460 (현재서버)
855283bfd9920a9310f9c3b2bd0e8329a9905aec 127.0.0.1:1002@11002 master - 0 1627283498278 2 connected 5461-10922

 

 

  • 현재 노드정보 확인
127.0.0.1:1001 > INFO

# Replication (예시)
role:master
connected_slaves:1
slave0:ip=127.0.0.1,port=5302,state=online,offset=98490,lag=0
master_replid:7f23accb70ddfb33f05696ba9db6ce8c73e14ff7
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:98490
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:98490

 

 


Cluster 구성 시...

클러스터 생성 명령은 아무 서버에서 수행해도 되며

클러스터가 생성되면 각각의 클러스터 노드끼리의 통신을 위한 포트들이 하나씩 더 생기게 되는데, 기본으로 설정된 port + 10000으로 생성됩니다.

예로 port가 6379 이면 클러스터 통신용 포트는 16379가 됩니다.

그래서 방화벽을 오픈할 때는 두개의 포트를 오픈해 주어야 됩니다.

반응형

'개발 > Redis' 카테고리의 다른 글

Redis Cluster 란?  (1) 2024.01.08
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함
반응형