1. 程式人生 > >Linux_基於Docker搭建Redis叢集

Linux_基於Docker搭建Redis叢集

常用命令:

docker images 命令來檢視我們已經安裝映象

docker search <name>:查詢映象名稱
docker pull <name>:拉取映象
docker ps  預設顯示執行的容器,顯示所有容器:  docker ps -a
docker image ls:列出所有的映象
docker stop <name>:暫停容器
docker start <name>:啟動容器
docker rm <containerID>:刪除容器(必須先docker stop或者docker kill後我們才能刪除)
docker rmi <imageID>: 刪除映象
啟動映象
docker run -d -i -t <imageID> /bin/bash  
啟動指定到本地對映埠的映象
docker run --name redis-master -p 6379:6379 -d redis:3.2

步驟一:Redis映象安裝

1、下載Redis映象

映象中心

推薦使用網易蜂巢的映象中心

地址:https://c.163.com/hub#/m/home/ 

Redis映象

  1. docker pull hub.c.163.com/library/redis:latest 

安裝完成後,使用docker images命令,檢視是否安裝成功

步驟二:Redis叢集搭建

1、執行Redis映象

分別使用以下命令啟動3個Redis

  1. docker run --name redis-6379 -p 6379:6379 -d hub.c.163.com/library/redis
  2. docker run --name redis-6380 -p 6380:6379 -d hub.c.163.com/library/redis
  3. docker run --name redis-6381 -p 6381:6379 -d hub.c.163.com/library/redis 

使用docker ps命令,檢視是否啟動成功

2、配置Redis叢集

分別使用 docker inspect 容器ID 命令,檢視3個Redis的Docker內網IP地址

在Networks欄,可以看見該容器的Docker內網IP地址。三個Redis的內網IP地址如下

redis-6379:172.17.0.3:6379

redis-6380:172.17.0.4:6379

redis-6381:172.17.0.5:6379 

進入Docker容器內部

使用redis-6379為主機,其餘兩臺為從機

使用 docker exec -ti 容器ID /bin/bash 分別進入三個Redis容器

進入容器後,使用 redis-cli 命令,連線redis服務端

連線服務後,使用 info replication 檢視當前機器的角色

未配置前,三臺redis均為 master主機

使用上面的方法,分別進入 redis-6379、redis-6380、redis-6381容器內部,並連線redis服務端

分別在redis-6380和redis-6381使用 SLAVEOF 172.17.0.3 6379 命令

在redis-6379 使用 info replication 命令,驗證主從關係是否配置成功

這樣,redis的叢集環境就搭建好了,本機測試無問題,這裡就不演示了。為了保證redis叢集的高可用,下面開始配置redis哨兵模式。

步驟三:Redis哨兵模式

1、配置Redis哨兵

Redis哨兵配置,有兩種方案

方案一:基於現有的3臺Redis容器服務,互相啟動一個Redis哨兵

方案二:重新再啟動3臺Redis容器服務,分別啟動一個Redis哨兵 

方案二會額外的新增3個Redis容器服務,所以這裡演示方案一

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

使用 docker exec -ti 容器ID /bin/bash 分別進入三個Redis容器

然後,編寫Redis哨兵配置檔案

使用 cd / 命令,進入根目錄

使用 touch sentinel.conf命令,建立哨兵配置檔案

使用 vim 命令編輯 sentinel.conf 檔案,

新增以下內容 sentinel monitor host6379 172.17.0.3 6379 1 

在進行編輯時,需要先安裝vim,命令為 apt-get update、apt-get install vim –y最後,啟動Redis哨兵

使用 redis-sentinel /sentinel.conf 啟動Redis哨兵監控

使用 ps –ef |grep redis 命令,可以看到redis-server和redis-sentinel正在執行 

至此,哨兵模式配置完畢,按理說,不應在容器內部進行操作,但應個人能力有限,未找到其它的解決方案。有其它方式能夠配置redis哨兵模式,歡迎指教!

步驟四:進行驗證

1、驗證

使用 docker ps 命令,檢視正在執行的映象

通過檢視Redis哨兵日誌,可以看到,redis哨兵正在監控

當我們把redis主機關掉時,可以看到,redis重新選舉了新的主機