docker實(shí)現(xiàn)redis-cluster模式集群部署的示例代碼
四步快速部署
步驟一:下載壓縮包解壓
將 redis集群部署\ip\redis-cluster 文件夾上傳到對(duì)應(yīng)服務(wù)器 /home 文件夾下


步驟二:修改 /home/redis-cluster/端口號(hào)/conf/redis.conf 文件

步驟三:進(jìn)入三臺(tái)服務(wù)器對(duì)應(yīng)目錄:/home/redis-cluster 執(zhí)行命令
docker-compose up -d 或 docker compose up -d
部署四:執(zhí)行命令
在 任意一臺(tái)機(jī)器執(zhí)行:
docker exec -it redis-7001 redis-cli --cluster create \ 172.16.10.80:7001 \ 172.16.10.98:7001 \ 172.16.10.97:7001 \ 172.16.10.80:7002 \ 172.16.10.98:7002 \ 172.16.10.97:7002 \ --cluster-replicas 1
然后輸入:
yes
驗(yàn)證部署是否成功命令
docker exec -it redis-7001 redis-cli -c -p 7001 cluster nodes cluster info
具體操作步驟
我現(xiàn)在有三臺(tái)服務(wù)器:
- 172.16.10.80
- 172.16.10.98
- 172.16.10.97
一、整體架構(gòu)(先讓你腦子里有圖)
每臺(tái)機(jī)器跑 2個(gè)實(shí)例(1主1從),交叉主從:
172.16.10.80 → M1 + S2
172.16.10.98 → M2 + S3
172.16.10.97 → M3 + S1
最終結(jié)構(gòu):
M1 → S2
M2 → S3
M3 → S1
?? 好處:
- 任意一臺(tái)機(jī)器掛掉,不會(huì)同時(shí)丟主+從
- 滿足高可用
二、每臺(tái)機(jī)器準(zhǔn)備目錄
在 三臺(tái)機(jī)器都執(zhí)行:
mkdir -p /home/redis-cluster/{7001,7002}/{data,conf}三、redis.conf(通用模板)
路徑:
/home/redis-cluster/7001/conf/redis.conf /home/redis-cluster/7002/conf/redis.conf
內(nèi)容??(關(guān)鍵!?。?/p>
# 7002那個(gè)改成7002 port 7001 bind 0.0.0.0 protected-mode no daemonize no appendonly yes dir /data cluster-enabled yes cluster-config-file nodes.conf cluster-node-timeout 5000 # ??關(guān)鍵(跨機(jī)器必須) # 每臺(tái)機(jī)器改成自己的IP cluster-announce-ip 172.16.10.80 # 對(duì)應(yīng)端口 cluster-announce-port 7001 # = port + 10000 cluster-announce-bus-port 17001
?? 7002 要改成:
port 7002 cluster-announce-port 7002 cluster-announce-bus-port 17002
四、docker-compose.yml(每臺(tái)機(jī)器一份)
?? 172.16.10.80
version: '3.8'
services:
redis-7001:
image: redis:7.0.12
container_name: redis-7001
network_mode: host
volumes:
- /home/redis-cluster/7001/conf/redis.conf:/usr/local/etc/redis/redis.conf
- /home/redis-cluster/7001/data:/data
command: redis-server /usr/local/etc/redis/redis.conf
redis-7002:
image: redis:7.0.12
container_name: redis-7002
network_mode: host
volumes:
- /home/redis-cluster/7002/conf/redis.conf:/usr/local/etc/redis/redis.conf
- /home/redis-cluster/7002/data:/data
command: redis-server /usr/local/etc/redis/redis.conf?? 172.16.10.98 / 172.16.10.97
?? 完全一樣,只改:
cluster-announce-ip
五、啟動(dòng)所有節(jié)點(diǎn)
三臺(tái)機(jī)器分別執(zhí)行:
docker-compose up -d
六、創(chuàng)建集群(只需要執(zhí)行一次??)
在 任意一臺(tái)機(jī)器執(zhí)行:
docker exec -it redis-7001 redis-cli --cluster create \ 172.16.10.80:7001 \ 172.16.10.98:7001 \ 172.16.10.97:7001 \ 172.16.10.80:7002 \ 172.16.10.98:7002 \ 172.16.10.97:7002 \ --cluster-replicas 1
然后輸入:
yes
七、驗(yàn)證集群
redis-cli -c -h 172.16.10.80 -p 7001 cluster nodes cluster info
八、必須檢查的坑(重點(diǎn))
1?? 防火墻
開放:
7001-7002 17001-17002
2?? 端口說(shuō)明
| 端口 | 用途 |
|---|---|
| 7001/7002 | 客戶端 |
| 17001/17002 | 集群通信 |
3?? 一定要配置 cluster-announce-ip
否則:
? 集群會(huì)用 Docker 內(nèi)網(wǎng) IP
?? 直接導(dǎo)致節(jié)點(diǎn)互相連不上
九、一鍵初始化腳本(幫你省事??)
你可以保存為:
init-cluster.sh
#!/bin/bash docker exec -it redis-7001 redis-cli --cluster create \ 172.16.10.80:7001 \ 172.16.10.98:7001 \ 172.16.10.97:7001 \ 172.16.10.80:7002 \ 172.16.10.98:7002 \ 172.16.10.97:7002 \ --cluster-replicas 1 <<EOF yes EOF
擴(kuò)展
安裝Another-Redis-Desktop-Manager-win-1.7.1-x64 客戶端驗(yàn)證redis連接

yml配置
redis:
cluster:
#只配置6個(gè)節(jié)點(diǎn)只配置三個(gè)主節(jié)點(diǎn) 不配置從節(jié)點(diǎn)防止客戶端直連和同步未完成時(shí)被訪問(wèn)
nodes:
- 172.16.10.80:7001
- 172.16.10.98:7001
- 172.16.10.97:7001
max-redirects: 3
# Redis服務(wù)器連接密碼(默認(rèn)為空)
password:
# 連接超時(shí)時(shí)間(毫秒)
timeout: 2000
lettuce:
# 連接池最大連接數(shù)(使用負(fù)值表示沒有限制)
pool:
max-active: 5000
# 連接池最大阻塞等待時(shí)間(使用負(fù)值表示沒有限制)
max-wait: 30000
# 連接池中的最大空閑連接
max-idle: 10
# 連接池中的最小空閑連接
min-idle: 5到此這篇關(guān)于docker實(shí)現(xiàn)redis-cluster模式集群部署的示例代碼的文章就介紹到這了,更多相關(guān)docker redis-cluster集群部署內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
兩種方式創(chuàng)建docker鏡像的啟動(dòng)容器時(shí)區(qū)別介紹(總結(jié)篇)
這篇文章主要介紹了基于兩種創(chuàng)建docker鏡像的啟動(dòng)容器時(shí)區(qū)別總結(jié),第一種凡是用docker commit生成的鏡像啟動(dòng)的時(shí)候可以加載一個(gè)啟動(dòng)自己應(yīng)用的腳本,第二種用Docfile文件生成的鏡像時(shí),來(lái)啟動(dòng)容器就不用再加這個(gè)腳本了,具體詳情一起通過(guò)本文學(xué)習(xí)吧2016-10-10
docker安裝fastdfs鏡像的一些注意事項(xiàng)
在安裝docker fastdfs鏡像時(shí)大家需要注意如果是云服務(wù)器則需要在云服務(wù)器后臺(tái)的安全組入口方向放開22122、23000以及8888端口,并且在云服務(wù)器防火墻配置放開以上三個(gè)端口,具體內(nèi)容詳情大家跟隨小編一起看看吧2021-05-05
Docker安裝OpenWrt的實(shí)現(xiàn)步驟
OpenWrt是一種可以運(yùn)行在路由器上的嵌入式操作系統(tǒng),提供了許多網(wǎng)絡(luò)服務(wù)和功能,本文主要介紹了Docker安裝OpenWrt的實(shí)現(xiàn)步驟,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-08-08
Docker部署Golang服務(wù)的實(shí)現(xiàn)步驟
不管是開發(fā)還是生產(chǎn)環(huán)境,通過(guò)docker方式部署服務(wù)都是一種不錯(cuò)的選擇,本文主要介紹了Docker部署Golang服務(wù)的實(shí)現(xiàn)步驟,具有一定的參考價(jià)值,感興趣的可以了解一下2024-01-01
詳解使用export/import導(dǎo)出和導(dǎo)入docker容器
本篇文章主要介紹了詳解使用export/import導(dǎo)出和導(dǎo)入docker容器,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-07-07
Docker 環(huán)境運(yùn)行 Mysql 和開啟 Binlog 配置主從同步的設(shè)置方法
今天給大家分享Docker 環(huán)境運(yùn)行 Mysql 和開啟 Binlog 配置主從同步的設(shè)置方法,利用docker模擬mysql設(shè)置的主從同步,通過(guò)兩種方式給大家介紹的非常詳細(xì),需要的朋友參考下吧2021-06-06
Docker 鏡像的公有與私有倉(cāng)庫(kù)的具體使用
本文介紹了Docker鏡像的公有與私有倉(cāng)庫(kù)使用方式,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2025-11-11
Docker開啟遠(yuǎn)程安全訪問(wèn)的圖文教程詳解
這篇文章主要介紹了Docker開啟遠(yuǎn)程安全訪問(wèn)的詳細(xì)教程,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-07-07

