天天看點

Docker搭建redis主從複制結構 (一主二從)以及哨兵結構

注意:在早先的redis.conf中控制主從結構的是slaveof,在如今該指令改名為replicaof

搭建主從複制結構需要用到redis.conf。本地拉取的docker鏡像預設沒有該conf檔案,需要自行去下載下傳對應版本的redis.conf。或者沒有必要下載下傳,因為針對redis.conf檔案的改動很小。

檢視docker hub官網,發現有兩種使用本地redis.conf啟動服務的方法:

Docker搭建redis主從複制結構 (一主二從)以及哨兵結構

這裡就用第二種。

在Docker下首先建立網絡環境,指令如下:

docker network create redis-network
           

首先建立好目錄結構,每個目錄中都隻用放置.conf檔案:

Docker搭建redis主從複制結構 (一主二從)以及哨兵結構

其中master下的redis1.conf檔案内容如下:

Docker搭建redis主從複制結構 (一主二從)以及哨兵結構

啟動master節點指令如下:

docker run -v /Users/yuhao/redis_test/master/redis1.conf:/usr/local/etc/redis/redis.conf --network redis-network -p 6379:6379 --name master redis:alpine redis-server /usr/local/etc/redis/redis.conf
           

在啟動了master節點後,就可以去檢視master節點對應的網絡ip了。

docker network inspect redis-network
           
Docker搭建redis主從複制結構 (一主二從)以及哨兵結構

slaver1下的redis1.conf檔案内容如下:

Docker搭建redis主從複制結構 (一主二從)以及哨兵結構

啟動slave1節點的指令如下:

docker run -v /Users/yuhao/redis_test/slave1/redis1.conf:/usr/local/etc/redis/redis.conf --network redis-network -p 6380:6380 --name slave1 redis:alpine redis-server /usr/local/etc/redis/redis.conf
           

啟動成功後master節點日志輸出:

Docker搭建redis主從複制結構 (一主二從)以及哨兵結構

同理,slave2配置檔案内容如下:

Docker搭建redis主從複制結構 (一主二從)以及哨兵結構

啟動指令:

docker run -v /Users/yuhao/redis_test/slave2/redis.conf:/usr/local/etc/redis/redis.conf --network redis-network -p 6381:6381--name slave2 redis:alpine redis-server /usr/local/etc/redis/redis.conf
           

測試主從結構是否工作:

Docker搭建redis主從複制結構 (一主二從)以及哨兵結構

可見主從結構已經開始工作

搭建哨兵模式:

建立哨兵配置檔案”sentinel.conf ",在其中添加:

sentinel monitor 名字 ip port 哨兵數量

# 例如
sentinel monitor  mysentinel 172.18.0.2 6379 1
           

之後執行下述指令運作哨兵服務:

docker run -v /Users/yuhao/redis_test/master/sentinel.conf:/usr/local/etc/redis/sentinel.conf  --network redis-network -p 26379:26379 --name sentinel redis:alpine redis-sentinel /usr/local/etc/redis/sentinel.conf
           

哨兵啟動後可以看到:

Docker搭建redis主從複制結構 (一主二從)以及哨兵結構

為了驗證哨兵工作是否正常,斷開主節點master之後,哨兵服務日志如下:

Docker搭建redis主從複制結構 (一主二從)以及哨兵結構

從上圖中的紅框中可以看到,此時主節點master已經由172.18.0.2:6379更換為了172.18.0.4:6381,并且6380和6379都作為了6381的從節點

繼續閱讀