繼承操作
登錄集群
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
列出節(jié)點(diǎn)信息
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
增加節(jié)點(diǎn) 比如,在node1服務(wù)器上增加一節(jié)點(diǎn)。首先,我們添加如下配置:
# copy配置
cp /usr/local/redis/cluster_redis_7003.conf /usr/local/redis/cluster_redis_7004.conf
# 創(chuàng)建存儲(chǔ)目錄
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
# 授權(quán)
chown -R redis:redis /usr/local/redis && chown -R redis:redis /opt/software/redis-7.0.3/cluster/redis_7004
然后,再啟動(dòng)服務(wù)。
redis-server /usr/local/redis/cluster_redis_7004.conf
netstat -tnlp|grep :7004
如果要在集群中增加節(jié)點(diǎn),可以使用下面的方式。
[root@local-168-182-110 ~]# redis-cli -c -h 192.168.182.110 -p 7001
192.168.182.110:7001> auth 123456
# 添加節(jié)點(diǎn)
192.168.182.110:7001> CLUSTER MEET 192.168.182.110 7004
# 查看節(jié)點(diǎn)信息
192.168.182.110:7001> CLUSTER NODES
可以看到,新增的節(jié)點(diǎn)都是以master身份加入集群的。如果要【更換節(jié)點(diǎn)身份】,比如將新增的192.168.182.110:7004節(jié)點(diǎn)身份改為192.168.182.130:7001的slave。
redis-cli -c -h 192.168.182.110 -p 7004
192.168.182.110:7004> auth 123456
# 改變節(jié)點(diǎn)類(lèi)型
192.168.182.110:7004> cluster replicate 0a9d68b75d529b611b4bae5753be602006fcef74
192.168.182.110:7004> CLUSTER NODES
刪除某個(gè)節(jié)點(diǎn),可以參考下面的內(nèi)容。
redis-cli -c -h 192.168.182.110 -p 7001
192.168.182.110:7001> auth 123456
# 查看節(jié)點(diǎn)
192.168.182.110:7001> CLUSTER NODES
# 刪除節(jié)點(diǎn)
192.168.182.110:7001> CLUSTER FORGET 378ef2a24fb4138496b8da85bb66143800b53686
# 檢查節(jié)點(diǎn)信息
192.168.182.110:7001> CLUSTER NODES
最后,在配置修改完后保存配置。
redis-cli -c -h 192.168.182.110 -p 7001
192.168.182.110:7001> auth 123456
# 將節(jié)點(diǎn)的配置文件保存到硬盤(pán)里面
192.168.182.110:7001> CLUSTER SAVECONFIG
可以看到,之前刪除的節(jié)點(diǎn)又恢復(fù)了,這是因?yàn)閷?duì)應(yīng)的配置文件沒(méi)有刪除,執(zhí)行CLUSTER SAVECONFIG恢復(fù)。
接下來(lái),我們模擬下模擬master節(jié)點(diǎn)掛掉的場(chǎng)景。
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,狀態(tài)為disconnected;而對(duì)應(yīng)192.168.182.110:7004
的一行,slave已經(jīng)變成master。
接著,我們?cè)倌M下故障恢復(fù)場(chǎng)景,重新啟動(dòng)192.168.182.110:7001節(jié)點(diǎn)。
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
節(jié)點(diǎn)啟動(dòng)后為slave節(jié)點(diǎn),并且是192.168.182.110:7004
的slave節(jié)點(diǎn)。即master節(jié)點(diǎn)如果掛掉,它的slave節(jié)點(diǎn)變?yōu)樾耺aster節(jié)點(diǎn)繼續(xù)對(duì)外提供服務(wù),而原來(lái)的master節(jié)點(diǎn)如果重啟,則變?yōu)樾耺aster節(jié)點(diǎn)的slave節(jié)點(diǎn)。需要說(shuō)明的是,cluster不能選擇db,只能默認(rèn)db為0,所以select切庫(kù)相當(dāng)于是不能使用的。
#常用命令
#查看集群信息
- cluster info :打印集群的信息
- cluster nodes :列出集群當(dāng)前已知的所有節(jié)點(diǎn)( node),以及這些節(jié)點(diǎn)的相關(guān)信息。
#節(jié)點(diǎn)操作
- cluster meet :將 ip 和 port 所指定的節(jié)點(diǎn)添加到集群當(dāng)中,讓它成為集群的一份子。
- cluster forget <node_id> :從集群中移除 node_id 指定的節(jié)點(diǎn)。
- cluster replicate <node_id> :將當(dāng)前節(jié)點(diǎn)設(shè)置為 node_id 指定的節(jié)點(diǎn)的從節(jié)點(diǎn)。
- cluster saveconfig :將節(jié)點(diǎn)的配置文件保存到硬盤(pán)里面。
#槽(slot)操作
- cluster addslots [slot …] :將一個(gè)或多個(gè)槽( slot)指派( assign)給當(dāng)前節(jié)點(diǎn)。
- cluster delslots [slot …] :移除一個(gè)或多個(gè)槽對(duì)當(dāng)前節(jié)點(diǎn)的指派。
- cluster flushslots :移除指派給當(dāng)前節(jié)點(diǎn)的所有槽,讓當(dāng)前節(jié)點(diǎn)變成一個(gè)沒(méi)有指派任何槽的節(jié)點(diǎn)。
- cluster setslot node <node_id> :將槽 slot 指派給 node_id 指定的節(jié)點(diǎn),如果槽已經(jīng)指派給另一個(gè)節(jié)點(diǎn),那么先讓另一個(gè)節(jié)點(diǎn)刪除該槽>,然后再進(jìn)行指派。
- cluster setslot migrating <node_id> :將本節(jié)點(diǎn)的槽 slot 遷移到 node_id 指定的節(jié)點(diǎn)中。
- cluster setslot importing <node_id> :從 node_id 指定的節(jié)點(diǎn)中導(dǎo)入槽 slot 到本節(jié)點(diǎn)。
- cluster setslot stable :取消對(duì)槽 slot 的導(dǎo)入( import)或者遷移( migrate)。
#鍵
cluster keyslot :計(jì)算鍵 key 應(yīng)該被放置在哪個(gè)槽上。 cluster countkeysinslot :返回槽 slot 目前包含的鍵值對(duì)數(shù)量。 cluster getkeysinslot :返回 count 個(gè) slot 槽中的鍵 主從模式、哨兵模式、集群模式的環(huán)境部署就到這里了,redis更多操作請(qǐng)查看官方文檔。
來(lái)源:https://blog.csdn.net/xiangzhihong8/article/details/127936842