注意:在早先的redis.conf中控制主從結構的是slaveof,在如今該指令改名為replicaof
搭建主從複制結構需要用到redis.conf。本地拉取的docker鏡像預設沒有該conf檔案,需要自行去下載下傳對應版本的redis.conf。或者沒有必要下載下傳,因為針對redis.conf檔案的改動很小。
檢視docker hub官網,發現有兩種使用本地redis.conf啟動服務的方法:
這裡就用第二種。
在Docker下首先建立網絡環境,指令如下:
docker network create redis-network
首先建立好目錄結構,每個目錄中都隻用放置.conf檔案:
其中master下的redis1.conf檔案内容如下:
啟動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
slaver1下的redis1.conf檔案内容如下:
啟動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節點日志輸出:
同理,slave2配置檔案内容如下:
啟動指令:
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
測試主從結構是否工作:
可見主從結構已經開始工作
搭建哨兵模式:
建立哨兵配置檔案”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
哨兵啟動後可以看到:
為了驗證哨兵工作是否正常,斷開主節點master之後,哨兵服務日志如下:
從上圖中的紅框中可以看到,此時主節點master已經由172.18.0.2:6379更換為了172.18.0.4:6381,并且6380和6379都作為了6381的從節點