Docker搭建Redis Cluster集群環(huán)境
使用 Docker 搭建 Redis Cluster,最重要的環(huán)節(jié)就是容器通信的問題,這一塊我們?cè)谥暗奈恼轮幸呀?jīng)給大家解決了《Docker 網(wǎng)絡(luò)模式詳解及容器間網(wǎng)絡(luò)通信》,本篇文章主要練習(xí)使用多個(gè)容器完成 Redis Cluster 集群環(huán)境的搭建,順便為學(xué)習(xí) Docker Compose 鋪鋪路。俗話說沒有對(duì)比就沒有傷害,通過對(duì)比才能感受到 Docker Compose 的好處 ??。關(guān)于 Redis Cluster 集群更多的內(nèi)容請(qǐng)閱讀《最通俗易懂的 Redis 架構(gòu)模式詳解》。 按照 Redis 官網(wǎng):https://redis.io/topics/cluster-tutorial 的提示,為了使 Docker 與 Redis Cluster 兼容,您需要使用 Docker 的 host 網(wǎng)絡(luò)模式。 host 網(wǎng)絡(luò)模式需要在創(chuàng)建容器時(shí)通過參數(shù) --net host 或者 --network host 指定,host 網(wǎng)絡(luò)模式可以讓容器共享宿主機(jī)網(wǎng)絡(luò)棧,容器將不會(huì)虛擬出自己的網(wǎng)卡,配置自己的 IP 等,而是使用宿主機(jī)的 IP 和端口。

環(huán)境 為了讓環(huán)境更加真實(shí),本文使用多機(jī)環(huán)境:
192.168.10.10
192.168.10.11
每臺(tái)機(jī)器所使用的基礎(chǔ)設(shè)施環(huán)境如下: CentOS 7.8.2003
Docker version 19.03.12

搭建 整體搭建步驟主要分為以下幾步:
下載 Redis 鏡像(其實(shí)這步可以省略,因?yàn)閯?chuàng)建容器時(shí),如果本地鏡像不存在,就會(huì)去遠(yuǎn)程拉?。?;
編寫 Redis 配置文件;
創(chuàng)建 Redis 容器;
創(chuàng)建 Redis Cluster 集群。
編寫 Redis 配置文件 創(chuàng)建目錄及文件 分別在 192.168.10.10 和 192.168.10.11 兩臺(tái)機(jī)器上執(zhí)行以下操作。

編寫配置文件 192.168.10.10 機(jī)器的 redis-cluster.tmpl 文件內(nèi)容如下:

192.168.10.11 機(jī)器的 redis-cluster.tmpl 文件內(nèi)容如下:
port:節(jié)點(diǎn)端口;
requirepass:添加訪問認(rèn)證;
masterauth:如果主節(jié)點(diǎn)開啟了訪問認(rèn)證,從節(jié)點(diǎn)訪問主節(jié)點(diǎn)需要認(rèn)證;
protected-mode:保護(hù)模式,默認(rèn)值 yes,即開啟。開啟保護(hù)模式以后,需配置 bind ip 或者設(shè)置訪問密碼;關(guān)閉保護(hù)模式,外部網(wǎng)絡(luò)可以直接訪問;
daemonize:是否以守護(hù)線程的方式啟動(dòng)(后臺(tái)啟動(dòng)),默認(rèn) no;
appendonly:是否開啟 AOF 持久化模式,默認(rèn) no;
cluster-enabled:是否開啟集群模式,默認(rèn) no;
cluster-config-file:集群節(jié)點(diǎn)信息文件;
cluster-node-timeout:集群節(jié)點(diǎn)連接超時(shí)時(shí)間;
cluster-announce-ip:集群節(jié)點(diǎn) IP,填寫宿主機(jī)的 IP;
cluster-announce-port:集群節(jié)點(diǎn)映射端口;
cluster-announce-bus-port:集群節(jié)點(diǎn)總線端口。
每個(gè) Redis 集群節(jié)點(diǎn)都需要打開兩個(gè) TCP 連接。一個(gè)用于為客戶端提供服務(wù)的正常 Redis TCP 端口,例如 6379。還有一個(gè)基于 6379 端口加 10000 的端口,比如 16379。 第二個(gè)端口用于集群總線,這是一個(gè)使用二進(jìn)制協(xié)議的節(jié)點(diǎn)到節(jié)點(diǎn)通信通道。節(jié)點(diǎn)使用集群總線進(jìn)行故障檢測(cè)、配置更新、故障轉(zhuǎn)移授權(quán)等等??蛻舳擞肋h(yuǎn)不要嘗試與集群總線端口通信,與正常的 Redis 命令端口通信即可,但是請(qǐng)確保防火墻中的這兩個(gè)端口都已經(jīng)打開,否則 Redis 集群節(jié)點(diǎn)將無法通信。 在 192.168.10.10 機(jī)器的 redis-cluster 目錄下執(zhí)行以下命令:

在 192.168.10.11 機(jī)器的 redis-cluster 目錄下執(zhí)行以下命令:
上面兩段 shell for 語句,意思就是循環(huán)創(chuàng)建 6371 ~ 6376 相關(guān)的目錄及文件。 在 192.168.10.10 機(jī)器執(zhí)行查看命令結(jié)果如下,如果沒有 tree 命令先安裝 yum install -y tree。

在 192.168.10.11 機(jī)器執(zhí)行查看命令結(jié)果如下。

以下內(nèi)容為每個(gè)節(jié)點(diǎn)的配置文件詳細(xì)信息。



創(chuàng)建 Redis 容器 創(chuàng)建容器 將宿主機(jī)的 6371 ~ 6376 之間的端口與 6 個(gè) Redis 容器映射,并將宿主機(jī)的目錄與容器內(nèi)的目錄進(jìn)行映射(目錄掛載)。記得指定網(wǎng)絡(luò)模式,使用 host 網(wǎng)絡(luò)模式。 在 192.168.10.10 機(jī)器執(zhí)行以下命令:
在 192.168.10.11 機(jī)器執(zhí)行以下命令:

在 192.168.10.10 機(jī)器執(zhí)行 docker ps -n 3 查看容器是否創(chuàng)建成功。

在 192.168.10.11 機(jī)器執(zhí)行 docker ps -n 3 查看容器是否創(chuàng)建成功。
創(chuàng)建 Redis Cluster 集群 隨便進(jìn)入一個(gè)容器節(jié)點(diǎn),并進(jìn)入 /usr/local/bin/ 目錄:

接下來我們就可以通過以下命令實(shí)現(xiàn) Redis Cluster 集群的創(chuàng)建。

出現(xiàn)選擇提示信息,輸入 yes,結(jié)果如下所示:

集群創(chuàng)建成功如下:

本文轉(zhuǎn)載自CSDN:https://blog.csdn.net/weixin_43995372/article/details/108411337