redis
集群
一.创建集群配置环境:
1.部署管理主机:
- 在redis服务器上部署ruby脚本运行环境
- 创建管理集群脚本redis-trib.rb
#yum -y install rubygems ruby #gem install redis-3.2.1.gem #mkdir /root/bin
//创建命令检索目录
#tar -xf redis-4.0.8.tar.gz
#cp redis-4.0.8/src/reds-trib.rb /root/bin/
//创建管理集群脚本
#chmod +x /root/bin/redis-trib.rb
#redis-trib.rb help
//查看命令帮助
redis-trib脚本
用法:
#redis-trib.rb <command> <options> <arguments...>
命令 | 描述 |
---|---|
create | 创建 |
check | 检查集群 |
info | 查看集群信息 |
reshard | 重新分片 |
del-node | 删除主机 |
add-node --slave | 添加slave主机 |
add-node | 添加master主机 |
rebalance | 平均分配hash slots |
创建集群
- 配置redis服务器
– 启用集群功能
– 查看服务信息
#vim /etc/redis/redis.conf
cluster-enabled yes
cluster-config-file node-6379.conf
cluster-node-timeout 5000
#/etc/init.d/redis_6379 restart
//重起服务
#netstat -untlp | grep redis-server
在管理主机 创建集群
root@mgm57 ~]#redis-trib.rb create --replicas 1 \
> 192.168.4.51:6351 192.168.4.52:6352 192.168.4.53:6353 \
> 192.168.4.54:6354 192.168.4.55:6355 192.168.4.56:6356
查看集群信息
1)在管理主机查看集群信息
[root@mgm57 ~]# redis-trib.rb info 192.168.4.51:6351 //查看集群信息
192.168.4.51:6351 (d9f8fe6d...) -> 0 keys | 5461 slots | 1 slaves.
192.168.4.52:6352 (324e05df...) -> 0 keys | 5462 slots | 1 slaves.
192.168.4.53:6353 (9e44139c...) -> 0 keys | 5461 slots | 1 slaves.
[OK] 0 keys in 3 masters.
0.00 keys per slot on average
2)在管理主机检测集群
[root@mgm57 ~]# redis-trib.rb check 192.168.4.51:6351 //检测集群
3)在任意一台redis服务器本机,查看集群信息
oot@redisA ~]# redis-cli -h 192.168.4.51 -p 6351 192.168.4.51:6351> cluster info
/查看集群信息
4)在客户端连接集群中的任意一台服务器存取数据
[root@client50 ~]# redis-cli -c -h 192.168.4.51 -p 6351 //连接服务器51
192.168.4.51:6351>
192.168.4.51:6351> set x 100 //存储
-> Redirected to slot [16287] located at 192.168.4.53:6353 //提示存储在53主机
OK
添加服务器
1)在管理主机,重新分配hash槽
[root@mgm57 ~]# redis-trib.rb reshard 192.168.4.53:6353
How many slots do you want to move (from 1 to 16384)?4096 //拿出4096个hash 槽给主机192.168.4.58
What is the receiving node ID? c5e0da48f335c46a2ec199faa99b830f537dd8a0 //主机192.168.4.58的id值
Source node #1:all //从当前所有master服务器获取hash槽
Do you want to proceed with the proposed reshard plan (yes/no)?yes //同意以上配置问集群
添加slave角色主机到集群里
1)部署新的redis服务器
root@mgm57 ~]# redis-trib.rb add-node --slave 192.168.4.59:6359 192.168.4.51:6351
//添加命令
添加master角色主机到集群里
在管理主机,添加master角色主机
oot@mgm57 ~]# redis-trib.rb add-node 192.168.4.58:6358 192.168.4.53:6353
//行添加命
移除服务器
步骤一:把slave服务器移除集群
1)在管理主机,移除slave服务器,从服务器没有槽,直接移除即可。
[root@mgm57 ~]# redis-trib.rb del-node 192.168.4.51:6351 f6649ea99b2f01faca26217691222c17a3854381 //执行移除命令
2)在管理主机,查看集群信息
[root@mgm57 ~]# redis-trib.rb info 192.168.4.51:6351
192.168.4.55:6355 (2d343a9d...) -> 3 keys | 4096 slots | 1 slaves.
192.168.4.53:6353 (9e44139c...) -> 3 keys | 4096 slots | 1 slaves.
192.168.4.52:6352 (324e05df...) -> 2 keys | 4096 slots | 1 slaves.
192.168.4.58:6358 (4fe1fa46...) -> 5 keys | 4096 slots | 0 slaves.//58主机,没有从服务器
[OK] 13 keys in 4 masters.
0.00 keys per slot on average.
步骤二:把master服务器移除集群
1)在管理主机,先删除master服务器占用的hash槽
[root@mgm57 ~]# redis-trib.rb reshard 192.168.4.53:6353
How many slots do you want to move (from 1 to 16384)?4096 //移除4096个数槽
What is the receiving node ID? bc5c4e082a5a3391b634cf433a6486c867cfc44b
//要移动给谁的id即目标主机(这里可以随机写一个master的ID)
Source node #1: c5e0da48f335c46a2ec199faa99b830f537dd8a0
//从谁那移动即源主机(这里写4.58的ID)
Source node #2:done //设置完毕
2)在管理主机,查看集群信息
[root@mgm57 ~]# redis-trib.rb info 192.168.4.51:6351
192.168.4.55:6355 (2d343a9d...) -> 3 keys | 4096 slots | 1 slaves.
192.168.4.53:6353 (9e44139c...) -> 3 keys | 4096 slots | 1 slaves.
192.168.4.52:6352 (324e05df...) -> 2 keys | 4096 slots | 1 slaves.
192.168.4.58:6358 (4fe1fa46...) -> 0 keys | 0 slots | 0 slaves. //零个槽
[OK] 13 keys in 4 masters.
0.00 keys per slot on average.
移除master主机
oot@mgm57 ~]# redis-trib.rb del-node 192.168.4.53:6353 \ c5e0da48f335c46a2ec199faa99b830f537dd8a0
// 删除谁+删除的id
在管理主机,查看集群信息
[root@mgm57 ~]# redis-trib.rb info 192.168.4.51:6351
192.168.4.55:6355 (2d343a9d...) -> 3 keys | 4096 slots | 1 slaves.
192.168.4.53:6353 (9e44139c...) -> 3 keys | 4096 slots | 1 slaves.
192.168.4.52:6352 (324e05df...) -> 2 keys | 4096 slots | 1 slaves.
[OK] 13 keys in 3 masters. //主服务器个数3台,没有58
0.00 keys per slot on average.
访问集群
- 在客户端可以链接任意一台redis服务器
- 命令]
redis-cli -c -h ip地址 -p 端口号
- 选项 -c 集群模式