Redis Cluster (레디스 클러스터) 설치 (CentOS 7.2.1511 64-bit)
설치 전 준비사항
- 최소 2개 이상의 서버 (또는 VM)에 CentOS 7 설치. 아래의 설명에 사용된 서버들 정보는 아래와 같습니다.
- Server A: 192.168.2.105
- Server B: 192.168.3.105
- Server C: 192.168.3.102
- Redis 3.0 이상 버전의 패키지를 인터넷에서 다운 받아서 설치. 참고로 Redis Cluster는 3.0 이상 버전부터 지원
가능합니다. 아래는 레디스 3.0.0을 다운 받아서 설치하는 명령어의 예이며 만약 더 최신 버전을 원하시면
http://download.redis.io/releases 페이지에 들어가셔서 최신 패키지 정보를 얻으셔서 다운 받으시면
됩니다.
- mkdir build && cd build
wget http://download.redis.io/releases/redis-3.0.0.tar.gz
tar -xvfz redis-3.0.0.tar.gz
cd redis-3.0.0/
- 아래의 패키지들을 yum을 이용해서 설치
- yum install gem ruby ruby-devel ruby gems redis-stat rpm-build
설치 단계
- Redis Cluster용 설정파일 생성
- 기존의 설정파일인 ‘redis.conf’를 수정해서 사용해도 되나 우선 불필요한 설정들도 많고 Redis를 한 서버에서만 사용하게
되면 (클러스터 모드가 아닌) 다시 수정을 해야 하기 때문에 클러스터용 설정 파일을 새로 생성해서 사용하는게 좋습니다. (예를
들어 파일명은 ‘redis-cluster.conf’) 클러스터용 설정 파일의 예는 아래와 같습니다.
port 6379
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
append only yes
- 위의 설정파일을 이용해서 Redis Server 시작. 만약 클러스터 모드로 정상적으로 시작되었다면 서버 시작 후에 ‘Running in cluster mode’라는 글을 확인할 수 있습니다.
- src/redis-server redis-cluster.conf
- 위의 두 사항을 클러스터에 포함될 다른 서버들에 반복해서 수행합니다.
- 위의 과정을 거쳐 클러스터 모드로 시작된 Redis Server들을 아래의 명령어 실행을 통해 연결합니다. 참고로 이
과정은 하나의 서버에서만 수행하면 됩니다. 예를 들어 클러스터를 형성할 서버 A, B, C가 있다고 가정하면 A에서만 아래의
명령어를 실행하면 클러스터가 바로 형성되기 때문에 같은 작업을 B랑 C에서 반복적으로 할 필요가 없습니다.
- src/redis-cli -p 6379 CLUSTER MEET 192.168.3.105 6379
- 참고로 위의 명령어는 서버 B의 IP가 192.168.3.105 이고 서버 A에서 클러스터를 형성한 경우의 예입니다.
- ‘redis-trib.rb’라는 Redis 패키지에서 제공하는 유틸리티 프로그램을 이용해서 아래의 명령어를 실행해서 slot들을
할당합니다. 참고로 이 절차는 총 16384개의 슬롯을 오픈하고 오픈된 슬롯들을 클러스터 서버에 N 등분 해서 (여기서 N은
클러스터에 등록된 서버수) 할당하는 과정입니다.
- src/redis-trib.rb create 192.168.2.105:6379 192.168.3.105:6379
- 만약 5번 실행 중 문제가 발생했다면 아래의 명령어들을 서버 A에서 실행해보세요.
- for slot in {0..5400}; do redis-cli -h 192.168.2.105 -p 6379 CLUSTER ADDSLOTS $slot; done;
- for slot in {5400..10800}; do src/redis-cli -h 17.198.30.160 -p 6379 CLUSTER ADDSLOTS $slot; done;
- for slot in {10801..16383}; do src/redis-cli -h 17.198.30.157 -p 6379 CLUSTER ADDSLOTS $slot; done;
- References
- http://redis.io/topics/cluster-tutorial
- https://www.digitalocean.com/community/tutorials/how-to-configure-a-redis-cluster-on-centos-7
- https://www.javacodegeeks.com/2015/09/redis-clustering.html
- https://ilyabylich.svbtle.com/redis-cluster-quick-overview
No comments:
Post a Comment