Redis集羣需要至少要三個master節點,因爲選舉模式,節點數必須是基數
所以:
- 1個master-1個slave,redis集羣需要6個節點
- 1個master-2個slave,redis集羣需要9個節點,以此類推。
這裏搭建三個master節點,並且給每個master再搭建一個 slave , 共6個redis節點,3主3從
由於節點數較多,這裏採用在一臺機器上創建6個redis實例做演示
所以這裏搭建的是僞集羣模式:
1.環境準備工作
- 準備Redis安裝包環境,詳見 Redis單機版安裝** 2.1~2.6**
2.創建集羣存儲目錄
父目錄如果沒有創建請先創建父目錄:mkdir /usr/local/software
mkdir /usr/local/software/redis-cluster
cd /usr/local/software/redis-cluster
#因爲是僞集羣,創建6個文件夾分別是8001~6,對應6個redis的端口
mkdir 8001 8002 8003 8004 8005 8006
3.複製並配置redis.conf
3.1 複製redis.conf 文件
cp /usr/local/software/redis/conf/redis.conf /usr/local/software/redis-cluster/8001
3.2 複製完畢後修改如下內容
配置 | 含義 |
---|---|
daemonize yes | 後臺啓動 |
port 8001 | 分別對應每個機器的端口號 |
bind 192.168.0.101 | 必須綁定當前機器IP,方便redis集羣定位機器,未綁定可能會出現循環查找集羣節點的問題 |
dir /usr/local/software/redis-cluster/8001 | 指定數據文件存儲位置,必須指定不同的位置,防止丟失或覆蓋 |
cluster-enabled yes | 啓動集羣模式 |
cluster-config-file nodes-8001.conf | 建議與端口對應,方便區分 |
cluster-node-timeout 5000 | 節點超時時間,5秒 |
appendonly yes | 打開 aof持久化 |
如果要設置密碼需要如下配置:
requirepass xxx | 設置redis訪問密碼 |
---|---|
masterauth xxx | 設置集羣節點間訪問密碼,requirepass一致 |
3.3 複製配置好的redis.conf 到不同的文件夾下,並修改對應的端口
示例:複製 8001 配置文件到 8002 下
注意 :複製完需要改端口
cp /usr/local/software/redis-cluster/8001/redis.conf ../8002/
注 : linux批量替換命令
:%s/源字符串/目標字符串/g
4.分別啓動6個Redis實例
# 示例 8001 的啓動,替換端口一次啓動1~6
/usr/local/software/redis/bin/redis-server /usr/local/software/redis-cluster/8001/redis.conf
4.安裝Ruby
注:Redis集羣從5.0.0開始不在需要安裝ruby**
Redis5之前集羣需要用到Ruby腳本 ,安裝詳見 安裝ruby :傳送門 (2.1~2.6)
**
5.安裝Redis
注意:如果安裝出現錯誤,請參考: 傳送門 (3~4)
gem install redis --version 4.0.0
6.啓動集羣
啓動redis集羣需要使用 redis-trib.rb 命令
#切換目錄
cd /usr/local/software/redis/bin/
# 啓動集羣
./redis-trib.rb create --replicas 1 172.17.0.2:8001 172.17.0.2:8002 172.17.0.2:8003 172.17.0.2:8004 172.17.0.2:8005 172.17.0.2:8006
分段解釋啓動命令含義
./redis-trib.rb | 啓動集羣的命令 |
---|---|
–replicas 1 | 數字1 代表主從比例 ,由於要配置的是3主3從 則 比例=master節點數/slave節點數,如果是3主6從那麼比例就是0.5 |
IP:端口 集 | 會按照設置的比例計算主節點與子節點 一共6臺。比例爲1 則前3臺爲主節點,後3臺爲子節點,按照順序依次對應 8001(主) - 8004(子) 8002(主) - 8005(子) 8003(主) - 8006(子) |
到這裏,redis已經搭建完畢了。
7.驗證集羣
集羣模式下連接任意一個客戶端即可, 命令 ./redis-cli -c -h xxxIP -p 800*
7.1 連接客戶端
/usr/local/software/redis/bin/redis-cli -c -h 172.17.0.2 -p 8001
連接8001設置一個 name 值爲zhangsan ,如圖所示,自動分片與自動重定向
7.1 查看集羣信息
注:必須要在7.1連接任意一個客戶端下使用查看集羣信息命令
#查看集羣節點列表
cluster nodes
cluster info
7.3 驗證主掛子升
#查看進程
ps -ef|grep redis
#手動殺死 8001 進程 kill-9 pid
kill -9 10009
再次查看集羣節點,發現集羣已經將 8001標記爲 fail,並且8004已經升級爲master
將8001再次啓動後最新節點列表
原先失敗的節點再次啓動後,回變更爲新master 的slave
8.關閉集羣
9.撤銷集羣
#切換到8001目錄下
cd /usr/local/software/redis-cluster/8001
如果要撤銷或清除集羣則需要將
nodes-8001.conf 文件刪除