5대 서버에 redis cluster 셋업하기
다운로드 받고 설치
$ wget http://download.redis.io/releases/redis-3.0.7.tar.gz
$ tar zxvf redis-3.0.7.tar.gz
설정 추가하기
$ cd redis-3.0.7
$ mkdir 7000
$ cat > cluster.conf
port 7000
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 3000
daemonize yes
appendonly yes
dir ./7000
실행한 redis의 상태를 보면, 7000 번 포트가 떠있고, cluster 상태인지 알 수 있다.
$ ./src/redis-server cluster.conf
$
$ ps -ef | grep redis
www 11235 1 0 11:25 ? 00:00:00 ./src/redis-server *:7000 [cluster]
cluster.conf 파일에 dir 지시자의 결과 디렉토리(7000)에 다음 파일이 존재하는 것을 확인할 수 있다.
$ ls
appendonly.aof nodes.conf
만약 cluster.conf 파일에 daemonize yes를 사용하지 않고 데몬을 띄우면, Running in cluster mode 라는 로그를 볼 수 있다.
$ ./src/redis-server cluster.conf
* No cluster configuration found, I'm d2c520147ed01b7b8dca0509b0ba71e0ba028f6c
_._
_.-``__ ''-._
_.-`` `. `_. ''-._ Redis 3.0.7 (00000000/0) 64 bit
.-`` .-```. ```\/ _.,_ ''-._
( ' , .-` | `, ) Running in cluster mode
|`-._`-...-` __...-.``-._|'` _.-'| Port: 7000
| `-._ `._ / _.-' | PID: 27837
`-._ `-._ `-./ _.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' | http://redis.io
`-._ `-._`-.__.-'_.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' |
`-._ `-._`-.__.-'_.-' _.-'
`-._ `-.__.-' _.-'
`-._ _.-'
`-.__.-'
한 대의 서버에 레디스 클러스터(src/redis-trib.rb)를 실행한다. 그 전에 먼저 ruby가 설치되었는지 확인하고, redis gem을 설치한다.
만약 아래와 같은 에러가 나면, 권한이 없다는 것이다.(cd /usr/local/lib/ruby/gems/2.1.0 디렉토리에 chmod 또는 chown 명령어를 사용한다).
$ ruby install redis
ERROR: While executing gem ... (Gem::FilePermissionError)
You don't have write permissions for the /usr/local/lib/ruby/gems/2.1.0 directory.
$ gem install redis
Fetching: redis-3.3.0.gem (100%)
Successfully installed redis-3.3.0
Parsing documentation for redis-3.3.0
Installing ri documentation for redis-3.3.0
Done installing documentation for redis after 0 seconds
1 gem installed
redis gem을 설치한 서버에서 src/redis-trib.rb 파일을 실행한다.
$ src/redis-trib.rb create 1.1.1.1:7000 1.1.1.2:7000 1.1.1.3:7000 1.1.1.4:7000 1.1.1.5:7000
>>> Creating cluster
>>> Performing hash slots allocation on 5 nodes...
Using 5 masters:
1.1.1.1:7000
1.1.1.2:7000
1.1.1.3:7000
1.1.1.4:7000
1.1.1.5:7000
M: d2c520147ed01b7b8dca0509b0ba71e0ba028f6c 1.1.1.1:7000
slots:0-3276 (3277 slots) master
M: 928190fdc1003f6bafc85da34cc23d20ce6cd1b01 1.1.1.2:7000
slots:3277-6553 (3277 slots) master
M: 7a31e87116846784171dd55c559eaf6f3beef08f 1.1.1.3:7000
slots:6554-9829 (3276 slots) master
M: bb90967fa662a4ca57d7329a138e86ae48b7b828 1.1.1.4:7000
slots:9830-13106 (3277 slots) master
M: ffc4b32105d84e1ef0db310afddf70ae6befcf9e 1.1.1.5:7000
slots:13107-16383 (3277 slots) master
Can I set the above configuration? (type 'yes' to accept): yes
>>> Nodes configuration updated
>>> Assign a different config epoch to each node
>>> Sending CLUSTER MEET messages to join the cluster
Waiting for the cluster to join..
>>> Performing Cluster Check (using node 1.1.1.1:7000)
M: d2c520147ed01b7b8dca0509b0ba71e0ba028f6 1.1.1.1:7000
slots:0-3276 (3277 slots) master
M: 928190fdc1003f6bafc85da34cc23d20ce6cd1b0 1.1.1.2:7000
slots:3277-6553 (3277 slots) master
M: 7a31e87116846784171dd55c559eaf6f3beef08f 1.1.1.3:7000
slots:6554-9829 (3276 slots) master
M: bb90967fa662a4ca57d7329a138e86ae48b7b828 1.1.1.4:7000
slots:9830-13106 (3277 slots) master
M: ffc4b32105d84e1ef0db310afddf70ae6befcf9e 1.1.1.5:7000
slots:13107-16383 (3277 slots) master
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
hash slot이 제대로 설치되었는지 확인했다.
클러스터 상태로 접근해서 레디스 데이터를 저장하고 삭제해 본다.
'nosql' 카테고리의 다른 글
zookeeper rmr 커맨드 (0) | 2017.01.12 |
---|---|
[hbase]-로컬 환경 - Failed to become active master 해결 (0) | 2016.08.03 |
[cassandra] history 보기 (0) | 2016.05.06 |
[cassandra] Unsupported null value (0) | 2015.12.28 |
프레스토 소개 (facebook presto) (0) | 2015.11.05 |