redis集群搭建及啟動、停止、重啟操作【轉】


redis版本:redis-5.0.3.tar.gz
操作系統:完全新安裝的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> 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM