继承操作
登录集群
redis-cli -c -h 192.168.182.110 -p 7001
192.168.182.110:7001> auth 123456
集群信息
redis-cli -c -h 192.168.182.129 -p 7001
192.168.182.110:7001> auth 123456
192.168.182.110:7001> CLUSTER INFO
列出节点信息
redis-cli -c -h 192.168.182.129 -p 7001
192.168.182.110:7001> auth 123456
192.168.182.110:7001> CLUSTER INFO
192.168.182.110:7001> CLUSTER NODES
增加节点 比如,在node1服务器上增加一节点。首先,我们添加如下配置:
# copy配置
cp /usr/local/redis/cluster_redis_7003.conf /usr/local/redis/cluster_redis_7004.conf
# 创建存储目录
mkdir /opt/software/redis-7.0.3/cluster/redis_7004
# 修改配置
vi /usr/local/redis/cluster_redis_7004.conf
bind 192.168.182.110
port 7004
daemonize yes
pidfile "/var/run/redis_7004.pid"
logfile "/usr/local/redis/cluster_redis_7004.log"
dir "/opt/software/redis-7.0.3/cluster/redis_7004"
#replicaof 192.168.182.110 6379
masterauth "123456"
requirepass "123456"
appendonly yes
cluster-enabled yes
cluster-config-file nodes_7004.conf
cluster-node-timeout 15000
# 授权
chown -R redis:redis /usr/local/redis && chown -R redis:redis /opt/software/redis-7.0.3/cluster/redis_7004
然后,再启动服务。
redis-server /usr/local/redis/cluster_redis_7004.conf
netstat -tnlp|grep :7004
如果要在集群中增加节点,可以使用下面的方式。
[root@local-168-182-110 ~]# redis-cli -c -h 192.168.182.110 -p 7001
192.168.182.110:7001> auth 123456
# 添加节点
192.168.182.110:7001> CLUSTER MEET 192.168.182.110 7004
# 查看节点信息
192.168.182.110:7001> CLUSTER NODES
可以看到,新增的节点都是以master身份加入集群的。如果要【更换节点身份】,比如将新增的192.168.182.110:7004节点身份改为192.168.182.130:7001的slave。
redis-cli -c -h 192.168.182.110 -p 7004
192.168.182.110:7004> auth 123456
# 改变节点类型
192.168.182.110:7004> cluster replicate 0a9d68b75d529b611b4bae5753be602006fcef74
192.168.182.110:7004> CLUSTER NODES
删除某个节点,可以参考下面的内容。
redis-cli -c -h 192.168.182.110 -p 7001
192.168.182.110:7001> auth 123456
# 查看节点
192.168.182.110:7001> CLUSTER NODES
# 删除节点
192.168.182.110:7001> CLUSTER FORGET 378ef2a24fb4138496b8da85bb66143800b53686
# 检查节点信息
192.168.182.110:7001> CLUSTER NODES
最后,在配置修改完后保存配置。
redis-cli -c -h 192.168.182.110 -p 7001
192.168.182.110:7001> auth 123456
# 将节点的配置文件保存到硬盘里面
192.168.182.110:7001> CLUSTER SAVECONFIG
可以看到,之前删除的节点又恢复了,这是因为对应的配置文件没有删除,执行CLUSTER SAVECONFIG恢复。
接下来,我们模拟下模拟master节点挂掉的场景。
netstat -lntp |grep :7001|awk '{print $NF}'|cut -d '/' -f 1|xargs kill -9
redis-cli -c -h 192.168.182.111 -p 7001 -a 123456 CLUSTER NODES
可以看到,192.168.182.110:7001
的一行为master fail,状态为disconnected;而对应192.168.182.110:7004
的一行,slave已经变成master。
接着,我们再模拟下故障恢复场景,重新启动192.168.182.110:7001节点。
redis-server /usr/local/redis/cluster_redis_7001.conf
redis-cli -c -h 192.168.182.111 -p 7001 -a 123456 CLUSTER NODES
可以看到,192.168.182.110:7001
节点启动后为slave节点,并且是192.168.182.110:7004
的slave节点。即master节点如果挂掉,它的slave节点变为新master节点继续对外提供服务,而原来的master节点如果重启,则变为新master节点的slave节点。需要说明的是,cluster不能选择db,只能默认db为0,所以select切库相当于是不能使用的。
#常用命令
#查看集群信息
- cluster info :打印集群的信息
- cluster nodes :列出集群当前已知的所有节点( node),以及这些节点的相关信息。
#节点操作
- cluster meet :将 ip 和 port 所指定的节点添加到集群当中,让它成为集群的一份子。
- cluster forget <node_id> :从集群中移除 node_id 指定的节点。
- cluster replicate <node_id> :将当前节点设置为 node_id 指定的节点的从节点。
- cluster saveconfig :将节点的配置文件保存到硬盘里面。
#槽(slot)操作
- cluster addslots [slot …] :将一个或多个槽( slot)指派( assign)给当前节点。
- cluster delslots [slot …] :移除一个或多个槽对当前节点的指派。
- cluster flushslots :移除指派给当前节点的所有槽,让当前节点变成一个没有指派任何槽的节点。
- cluster setslot node <node_id> :将槽 slot 指派给 node_id 指定的节点,如果槽已经指派给另一个节点,那么先让另一个节点删除该槽>,然后再进行指派。
- cluster setslot migrating <node_id> :将本节点的槽 slot 迁移到 node_id 指定的节点中。
- cluster setslot importing <node_id> :从 node_id 指定的节点中导入槽 slot 到本节点。
- cluster setslot stable :取消对槽 slot 的导入( import)或者迁移( migrate)。
#键
cluster keyslot :计算键 key 应该被放置在哪个槽上。 cluster countkeysinslot :返回槽 slot 目前包含的键值对数量。 cluster getkeysinslot :返回 count 个 slot 槽中的键 主从模式、哨兵模式、集群模式的环境部署就到这里了,redis更多操作请查看官方文档。
来源:https://blog.csdn.net/xiangzhihong8/article/details/127936842