redis cluster环境搭建
redis cluster是什么?
如何搭建集群环境?
1.官网下载源码
wget http://download.redis.io/releases/redis-5.0.5.tar.gz
2.编译安装程序
tar -xzf redis-5.0.5.tar.gz
cd redis-5.0.5
make
make make install
3.使用源码包utils里的install_server.sh快速配置redis server分布如下:
192.168.1.2 6379
192.168.1.6 6379 6380 6381 6382
192.168.1.7 6379 6380 6381
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
6.通过ps -ef | grep redis-server 确认server启动
7.通过redis-cli 连接相应的节点,执行info命令,确保节点可访问,并开启了集群功能
8.通过redis-cli –cluster 工具初始化集群
redis-cli --cluster create 192.168.1.2:6379 192.168.1.6:6379 192.168.1.6:6380 192.168.1.6:6381 192.168.1.6:6382 192.168.1.7:6379 192.168.1.7:6380 192.168.1.7:6381 --cluster-replicas 1
>>> Performing hash slots allocation on 8 nodes...
Master[0] -> Slots 0 - 4095
Master[1] -> Slots 4096 - 8191
Master[2] -> Slots 8192 - 12287
Master[3] -> Slots 12288 - 16383
Adding replica 192.168.1.6:6381 to 192.168.1.2:6379
Adding replica 192.168.1.7:6381 to 192.168.1.6:6379
Adding replica 192.168.1.6:6382 to 192.168.1.7:6379
Adding replica 192.168.1.7:6380 to 192.168.1.6:6380
M: ddd75e058dd4d3d8c6202f6fb1b90f2f6e3936f7 192.168.1.2:6379
slots:[0-4095] (4096 slots) master
M: ed8a5c0f4df226dbc8a5d534f49decb88b5838cd 192.168.1.6:6379
slots:[4096-8191] (4096 slots) master
M: 755800e1330a60fde74de939fe7b97daf53abff6 192.168.1.6:6380
slots:[12288-16383] (4096 slots) master
S: 974ded7561fa8fe9263cc5ebf87da12edd53be45 192.168.1.6:6381
replicates ddd75e058dd4d3d8c6202f6fb1b90f2f6e3936f7
S: 8de83041cf2ec43930111e93c0255e703e31f609 192.168.1.6:6382
replicates 274ab3f3de33ed601cb33776f5b434ee91cd2288
M: 274ab3f3de33ed601cb33776f5b434ee91cd2288 192.168.1.7:6379
slots:[8192-12287] (4096 slots) master
S: 9bf2b9e65d6e91c309926668619a0b613b1ed65b 192.168.1.7:6380
replicates 755800e1330a60fde74de939fe7b97daf53abff6
S: eee4a71f418caf7dd72f491cb2a54b40f4d749bc 192.168.1.7:6381
replicates ed8a5c0f4df226dbc8a5d534f49decb88b5838cd
>>> 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 192.168.1.2:6379)
M: ddd75e058dd4d3d8c6202f6fb1b90f2f6e3936f7 192.168.1.2:6379
slots:[0-4095] (4096 slots) master
1 additional replica(s)
M: 274ab3f3de33ed601cb33776f5b434ee91cd2288 192.168.1.7:6379
slots:[8192-12287] (4096 slots) master
1 additional replica(s)
S: 4a8ca1ce2786c45610eb79d9936c09a3ec6fac98 192.168.1.6:6381
slots: (0 slots) slave
replicates ddd75e058dd4d3d8c6202f6fb1b90f2f6e3936f7
M: 223eb187a9141c3d651deec15a8243ebf5d01fbf 192.168.1.6:6380
slots:[12288-16383] (4096 slots) master
1 additional replica(s)
S: be352e6487c8fc647077610f0acfc5acbfd8025d 192.168.1.6:6382
slots: (0 slots) slave
replicates 274ab3f3de33ed601cb33776f5b434ee91cd2288
S: 9bf2b9e65d6e91c309926668619a0b613b1ed65b 192.168.1.7:6380
slots: (0 slots) slave
replicates 223eb187a9141c3d651deec15a8243ebf5d01fbf
M: 61f5192703e1258592ed8028fb67f8003d19de34 192.168.1.6:6379
slots:[4096-8191] (4096 slots) master
1 additional replica(s)
S: eee4a71f418caf7dd72f491cb2a54b40f4d749bc 192.168.1.7:6381
slots: (0 slots) slave
replicates 61f5192703e1258592ed8028fb67f8003d19de34
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
9.通过redis-cli 连接任意一个节点执行 CLUSTER NODES 查看集群状态,也可以通过redis-cli –cluster check 检查集群状态
10.通过redis-cli向集群写入数据
redis-cli -c -h 192.168.1.2 -p 6379
192.168.1.2:6379> set foo bar
-> Redirected to slot [12182] located at 192.168.1.7:6379
OK
192.168.1.7:6379> get foo
"bar"
192.168.1.7:6379> INCR hello
-> Redirected to slot [866] located at 192.168.1.2:6379
(integer) 1
192.168.1.2:6379> INCR hello
(integer) 2
192.168.1.2:6379> get hello
"2"
如何日常维护集群?
Resharding the cluster 交互式:
redis-cli --cluster reshard 127.0.0.1:7000
redis-cli --cluster reshard <host>:<port> --cluster-from <node-id> --cluster-to <node-id> --cluster-slots <number of slots> --cluster-yes
redis-cli --cluster add-node new_host:new_port existing_host:existing_port
--cluster-slave
--cluster-master-id <arg>
更多维护见官方文档