redis版本:redis-5.0.3.tar.gz
操作系統:完全新安裝的centos7.6系統
使用一台虛擬機模擬6個redis節點,3個master,3個slave,虛擬機IP為192.168.220.11
和使用不同的IP創建集群基本過程一致,為了方便,就不創建多個虛擬機了。
開始搭建:
操作系統:完全新安裝的centos7.6系統
使用一台虛擬機模擬6個redis節點,3個master,3個slave,虛擬機IP為192.168.220.11
和使用不同的IP創建集群基本過程一致,為了方便,就不創建多個虛擬機了。
開始搭建:
yum install -y wget gcc systemctl stop firewalld.service systemctl disable firewalld.service cd /opt wget http://download.redis.io/releases/redis-5.0.3.tar.gz tar zxvf redis-5.0.3.tar.gz mv redis-5.0.3 redis cd redis
解壓后目錄結構如下:
編譯安裝:
make MALLOC=libc make install
src目錄包含了redis server和redis cli的相關命令腳本,將該路徑加入到PATH環境變量當中,方便使用
cd /opt/redis mkdir cluster # 創建redis實例根目錄 cd cluster mkdir 7001 # 創建具體redis實例相關目錄,指定其端口號為7001 cd 7001 cp /opt/redis/redis.conf . #復制配置文件,修改之后當作當前redis實例的啟動配置 mkdir data # 創建數據存儲目錄
修改配置文件文件,最小化修改配置 下面為需要修改的配置項以及說明 port 7001 # 客戶端連接端口 bind 192.168.220.11 #實例綁定的IP地址 dir /opt/redis/cluster/7001/data # redis實例數據配置存儲位置 daemonize yes # 是否以后台進程的方式啟動redis實例 pidfile pidfile /var/run/redis_7001.pid # 指定該進程pidfile cluster-enabled yes # 開啟集群模式 cluster-config-file # 集群中該實例的配置文件,該文件會在data目錄下生成 appendonly yes # 開啟aop日志 protected-mode no # 關閉保護模式 requirepass cyclone # master開啟密碼保護 masterauth cyclone # replica同master交互密碼 接下來按照同樣的方式創建7002,7003,7004,7005,7006的文件夾,修改配置文件 依次啟動redis實例 redis-server /opt/redis/cluster/7001/redis.conf redis-server /opt/redis/cluster/7002/redis.conf redis-server /opt/redis/cluster/7003/redis.conf redis-server /opt/redis/cluster/7004/redis.conf redis-server /opt/redis/cluster/7005/redis.conf redis-server /opt/redis/cluster/7006/redis.conf 查看啟動結果
集群的創建,將redis實例聯系起來,創建一個集群
redis-cli -a cyclone --cluster create --cluster-replicas 1 192.168.220.11:7001 192.168.220.11:7002 192.168.220.11:7003 192.168.220.11:7004 192.168.220.11:7005 192.168.220.11:7006 輸出如下:
一些slave和master在相同的物理主機上,所以會出現一些警告,這個不影響。
連接到集群的某個節點:
redis-cli -a cyclone -c -h 192.168.220.11 -p 7001
查看集群相關信息:

查看集群節點信息:

集群相關操作:
1.關閉集群的某個節點,比如關閉端口號為7001的實例:
redis-cli -a cyclone -c -h 192.168.220.11 -p 7001 shutdown查看結果

關閉之后,使用redis-server /opt/redis/cluster/7001/redis.conf命令可以將實例重新啟動,啟動完成之后,自動加入到集群當中

2.集群的關閉
逐個關閉redis實例進程即可查找redis實例進程號
ps -ef | grep redis
關閉redis進程,使用kill -9 ${進程號},如果需要關閉多個進程,進程號之間空格隔開即可
kill -9 10252 10257 10262 10267 10272 10294 也可執行以下命令來關閉redis進程
pkill -9 redis
3.redis集群的重新啟動
保留原來的數據:逐個關閉redis實例,再逐個的啟動即可。
丟棄原來的數據:
關閉實例,清空實例中數據存放目錄的所有內容,然后逐個啟動實例,在任意一個實例上執行集群的創建命令即可,本質上就是創建一個新的集群
清空數據存儲目錄內容:
關閉實例,清空實例中數據存放目錄的所有內容,然后逐個啟動實例,在任意一個實例上執行集群的創建命令即可,本質上就是創建一個新的集群
清空數據存儲目錄內容:
rm -rf /opt/redis/cluster/7001/data/* rm -rf /opt/redis/cluster/7002/data/* rm -rf /opt/redis/cluster/7003/data/* rm -rf /opt/redis/cluster/7004/data/* rm -rf /opt/redis/cluster/7005/data/* rm -rf /opt/redis/cluster/7006/data/*
啟動實例:
redis-server /opt/redis/cluster/7001/redis.conf redis-server /opt/redis/cluster/7002/redis.conf redis-server /opt/redis/cluster/7003/redis.conf redis-server /opt/redis/cluster/7004/redis.conf redis-server /opt/redis/cluster/7005/redis.conf redis-server /opt/redis/cluster/7006/redis.conf
執行集群創建命令:
redis-cli -a cyclone --cluster create --cluster-replicas 1 192.168.220.11:7001 192.168.220.11:7002 192.168.220.11:7003 192.168.220.11:7004 192.168.220.11:7005 192.168.220.11:7006
轉自
作者:cyclone_29
鏈接:https://www.jianshu.com/p/e9eab2f4a564
來源:簡書
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。
redis cluster-cluster 命令手動管理redis集群
3、將 ip 和 port 所指定的節點添加到集群中 CLUSTER MEET <ip> <port> 4、從集群中移除 node_id 指定的節點 CLUSTER FORGET <node_id> 5、將當前節點設置為 node_id 指定的節點的從節點 CLUSTER REPLICATE <node_id> 6、將節點的配置文件保存到硬盤里面 CLUSTER SAVECONFIG 7、將一個或多個槽(slot)指派(assign)給當前節點 CLUSTER ADDSLOTS <slot> [slot ...] 8、移除一個或多個槽對當前節點的指派 CLUSTER DELSLOTS <slot> [slot ...] 9、 移除指派給當前節點的所有槽,讓當前節點變成一個沒有指派任何槽的節點 CLUSTER FLUSHSLOTS 10、將槽 slot 指派給 node_id 指定的節點,如果槽已經指派給另一個節點,那么先讓另一個節點刪除該槽>,然后再進行指派 CLUSTER SETSLOT <slot> NODE <node_id> 11、將本節點的槽 slot 遷移到 node_id 指定的節點中 CLUSTER SETSLOT <slot> MIGRATING <node_id> 12、從 node_id 指定的節點中導入槽 slot 到本節點 CLUSTER SETSLOT <slot> IMPORTING <node_id> 13、取消對槽 slot 的導入(import)或者遷移(migrate) CLUSTER SETSLOT <slot> STABLE 14、計算鍵 key 應該被放置在哪個槽上 CLUSTER KEYSLOT <key> 15、返回槽 slot 目前包含的鍵值對數量 CLUSTER COUNTKEYSINSLOT <slot> 16、返回 count 個 slot 槽中的鍵 CLUSTER GETKEYSINSLOT <slot> <count>