Redis4.0高可用集羣模式搭建

Redis集羣需要至少要三個master節點,因爲選舉模式,節點數必須是基數
所以:

  • 1個master-1個slave,redis集羣需要6個節點
  • 1個master-2個slave,redis集羣需要9個節點,以此類推。


這裏搭建三個master節點,並且給每個master再搭建一個 slave , 共6個redis節點,3主3從
由於節點數較多,這裏採用在一臺機器上創建6個redis實例做演示
所以這裏搭建的是僞集羣模式:

image.png

1.環境準備工作

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

image.png

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

image.png

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

image.png

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(子)

image.png

image.png

到這裏,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 ,如圖所示,自動分片與自動重定向
image.png

7.1 查看集羣信息

注:必須要在7.1連接任意一個客戶端下使用查看集羣信息命令

#查看集羣節點列表

 cluster nodes

image.png

cluster info

image.png

7.3 驗證主掛子升

#查看進程
ps -ef|grep redis

#手動殺死 8001 進程 kill-9 pid
kill -9 10009

再次查看集羣節點,發現集羣已經將 8001標記爲 fail,並且8004已經升級爲master
image.png

將8001再次啓動後最新節點列表
原先失敗的節點再次啓動後,回變更爲新master 的slave
image.png


8.關閉集羣

若需要關閉整個集羣,則需要將所有節點全部關閉。


9.撤銷集羣

#切換到8001目錄下

cd /usr/local/software/redis-cluster/8001

image.png

如果要撤銷或清除集羣則需要將
nodes-8001.conf 文件刪除

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章