Linux基於Docker的Redis主從復制、哨兵模式搭建


本教程基於CentOS7,開始本教程前,請確保您的Linux系統已安裝Docker。

1.使用docker下載redis鏡像

docker pull redis

安裝完成后,使用docker images命令,查看是否安裝成功

 

 

 

 2.redis集群搭建

(1)使用以下命令啟動3個Redis

docker run --name redis-node1 -p 6379:6379 -d docker.io/redis
docker run --name redis-node2 -p 6380:6380 -d docker.io/redis
docker run --name redis-node3 -p 6381:6381 -d docker.io/redis

(2)使用docker ps命令,查看是否啟動成功

 

 

 

 (3)分別使用 docker inspect 容器名字命令,查看3個Redis的Docker內網IP地址

 

  在Networks欄,可以看見該容器的Docker內網IP地址

 

 

 

 

 同理,查看redis-node2和redis-node3的Docker內網IP

(4)進入三個redis容器的內部

進入容器內部命令:docker exec -it 容器id/容器名稱 /bin/bash

進入redis-node1內部:

 

(5)進入redis客戶端

 

redis-cli

 

 

 (6)測試對單個redis進行set值或get值

 

 

 如果能set、get能成功,那么單個redis是沒有問題的

接下來開始搭建主從復制的redis集群

3.主從復制搭建

(1)進入redis客戶端后,使用 info replication 查看當前機器的角色

info replication

 

 

發現現在的redis-node1是master(主人),同理redis-node2和redis-node3也是master

現在我要將redis-node2和redis-node3變為slave(仆從)

(2)進入redis-node2容器,並進入客戶端

1 docker exec -it redis-node2 /bin/bash
2 redis-cli

使用 SLAVEOF 172.17.0.1 6379 命令將redis-node2變為redis-node1的從結點,172.17.0.1是前面獲取的redis-node1的容器內IP,6379是redis-node1的端口號

 

再使用 info replication查看當前機器角色

 

 

 可以發現redis-node2已經變成redis-node1從結點了。

同理,進入redis-node3容器,並進入客戶端,使用 SLAVEOF 172.17.0.1 6379 命令將redis-node3變為redis-node1的從結點。

我們再次進入redis-node1容器查看機器角色:

 

 

 此時的redis-node1當中顯示有兩個從結點了。

(3)測試主從復制

我們在redis-node1 set一個數據,測試redis-node2和redis-node3能否獲取該數據。

redis-node1容器中:

 

 redis-node2容器中:

 

 

 我們發現redis-node1的數據成功同步到了redis-node2中!我們再看redis-node3

redis-node3容器中:

 

 

 同樣成功了。

注意:主結點可以讀寫,從結點只能讀不能寫!

 

 

 如圖所示,從結點寫數據會報錯。

這樣我們redis的主從復制就搭建完畢了。

 主從復制雖然可以一定程度上增加resdis集群的可用性,但是如果主結點宕機我們需要手動為從結點指定新的主結點,這很不方便也不符合生產環境的需要,所以我們引入了哨兵模式。

4.配置redis哨兵

分別進入3台Redis容器內部,執行以下操作
首先,進入Docker容器內部:

進入三台redis容器:docker exec -it 容器id/容器名稱 /bin/bash
更新依賴命令:apt-get update
安裝vim命令:apt-get install -y vim

然后,編寫Redis哨兵配置文件:

使用 cd / 命令,進入根目錄
使用 vim sentinel.conf命令,創建哨兵配置文件
添加以下內容 sentinel monitor host6379 172.17.0.1 6379 1

最后,啟動Redis哨兵:

使用 redis-sentinel /sentinel.conf 啟動Redis哨兵監控
使用 ps –ef |grep redis 命令,可以看到redis-server和redis-sentinel正在運行

注意:三個redis容器都要執行上面的操作

完成后,哨兵會監視主結點狀態,如果主結點宕機,30s后會從從結點當中選擇一個作為主結點,如果后面原主結點重新連接,原主結點會變為新主結點的從結點。

至此,Linux基於Docker的Redis主從復制、哨兵模式搭建完畢。

 


免責聲明!

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



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