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


步驟二:修改 /home/redis-cluster/端口號/conf/redis.conf 文件

步驟三:進入三臺服務器對應目錄:/home/redis-cluster 執(zhí)行命令
docker-compose up -d 或 docker compose up -d
部署四:執(zhí)行命令
在 任意一臺機器執(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
驗證部署是否成功命令
docker exec -it redis-7001 redis-cli -c -p 7001 cluster nodes cluster info
具體操作步驟
我現(xiàn)在有三臺服務器:
- 172.16.10.80
- 172.16.10.98
- 172.16.10.97
一、整體架構(先讓你腦子里有圖)
每臺機器跑 2個實例(1主1從),交叉主從:
172.16.10.80 → M1 + S2
172.16.10.98 → M2 + S3
172.16.10.97 → M3 + S1
最終結構:
M1 → S2
M2 → S3
M3 → S1
?? 好處:
- 任意一臺機器掛掉,不會同時丟主+從
- 滿足高可用
二、每臺機器準備目錄
在 三臺機器都執(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)容??(關鍵?。。?/p>
# 7002那個改成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 # ??關鍵(跨機器必須) # 每臺機器改成自己的IP cluster-announce-ip 172.16.10.80 # 對應端口 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(每臺機器一份)
?? 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
五、啟動所有節(jié)點
三臺機器分別執(zhí)行:
docker-compose up -d
六、創(chuàng)建集群(只需要執(zhí)行一次??)
在 任意一臺機器執(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
七、驗證集群
redis-cli -c -h 172.16.10.80 -p 7001 cluster nodes cluster info
八、必須檢查的坑(重點)
1?? 防火墻
開放:
7001-7002 17001-17002
2?? 端口說明
| 端口 | 用途 |
|---|---|
| 7001/7002 | 客戶端 |
| 17001/17002 | 集群通信 |
3?? 一定要配置 cluster-announce-ip
否則:
? 集群會用 Docker 內(nèi)網(wǎng) IP
?? 直接導致節(jié)點互相連不上
九、一鍵初始化腳本(幫你省事??)
你可以保存為:
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
擴展
安裝Another-Redis-Desktop-Manager-win-1.7.1-x64 客戶端驗證redis連接

yml配置
redis:
cluster:
#只配置6個節(jié)點只配置三個主節(jié)點 不配置從節(jié)點防止客戶端直連和同步未完成時被訪問
nodes:
- 172.16.10.80:7001
- 172.16.10.98:7001
- 172.16.10.97:7001
max-redirects: 3
# Redis服務器連接密碼(默認為空)
password:
# 連接超時時間(毫秒)
timeout: 2000
lettuce:
# 連接池最大連接數(shù)(使用負值表示沒有限制)
pool:
max-active: 5000
# 連接池最大阻塞等待時間(使用負值表示沒有限制)
max-wait: 30000
# 連接池中的最大空閑連接
max-idle: 10
# 連接池中的最小空閑連接
min-idle: 5到此這篇關于docker實現(xiàn)redis-cluster模式集群部署的示例代碼的文章就介紹到這了,更多相關docker redis-cluster集群部署內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
兩種方式創(chuàng)建docker鏡像的啟動容器時區(qū)別介紹(總結篇)
這篇文章主要介紹了基于兩種創(chuàng)建docker鏡像的啟動容器時區(qū)別總結,第一種凡是用docker commit生成的鏡像啟動的時候可以加載一個啟動自己應用的腳本,第二種用Docfile文件生成的鏡像時,來啟動容器就不用再加這個腳本了,具體詳情一起通過本文學習吧2016-10-10
詳解使用export/import導出和導入docker容器
本篇文章主要介紹了詳解使用export/import導出和導入docker容器,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-07-07
Docker 環(huán)境運行 Mysql 和開啟 Binlog 配置主從同步的設置方法
今天給大家分享Docker 環(huán)境運行 Mysql 和開啟 Binlog 配置主從同步的設置方法,利用docker模擬mysql設置的主從同步,通過兩種方式給大家介紹的非常詳細,需要的朋友參考下吧2021-06-06

