最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Docker-compose部署redis-cluster集群的完整步驟

 更新時間:2026年01月10日 09:55:40   作者:creator_Li  
這篇文章給大家介紹Docker-compose部署redis-cluster集群的完整步驟,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧

一、核心配置解析(先理解關鍵參數)

1. Redis 配置文件(redis1.conf/redis2.conf...)核心參數

參數作用
port 7001Redis 節(jié)點的服務端口(6 個節(jié)點對應 7001-7006)
protected-mode no關閉保護模式(允許跨機器訪問,集群部署必須關閉)
cluster-enabled yes開啟集群模式(Redis Cluster 核心開關)
cluster-config-file nodes.conf集群節(jié)點信息文件(自動生成,無需手動修改)
cluster-node-timeout 5000集群節(jié)點超時時間(5 秒,超時則判定節(jié)點不可用)
cluster-announce-ip 172.13.3.160集群對外公告的 IP(必須是宿主機可訪問的 IP,容器內 IP 不行)
cluster-announce-port 7001集群對外公告的服務端口(和 port 一致)
cluster-announce-bus-port 17001集群節(jié)點間通信的總線端口(服務端口 + 10000)
appendonly yes開啟 AOF 持久化(防止集群重啟數據丟失)

2. docker-compose.yml 核心配置

  • &redis-image:YAML 錨點語法,復用 redis:5.0.7 鏡像,避免重復寫;
  • volumes:掛載本地配置文件到容器內(./redis1.conf:/home/redis/cluster/redis.conf)、掛載數據目錄(./7001/data:/data),保證配置生效和數據持久化;
  • ports:映射端口(服務端口 + 總線端口),必須全部開放,否則集群節(jié)點無法通信。

二、完整部署步驟(適配通用 Linux 環(huán)境,如 CentOS/Ubuntu)

步驟 1:環(huán)境準備

檢查 Docker 和 Docker Compose 是否安裝:

# 檢查Docker
docker -v
# 檢查Docker Compose
docker-compose -v
# 若未安裝,先安裝(以CentOS為例)
yum install -y docker docker-compose
systemctl start docker && systemctl enable docker

替換配置中的宿主機 IP:將所有 redis*.conf 和集群創(chuàng)建命令中的 172.13.3.160 替換為你的宿主機實際 IP(可通過 ifconfig/ip addr 查看)。

關閉防火墻 / 開放端口(二選一,推薦開放端口更安全):

# 方式1:臨時關閉防火墻(CentOS)
systemctl stop firewalld && systemctl disable firewalld
# 方式2:開放所需端口(推薦,CentOS)
firewall-cmd --add-port=7001-7006/tcp --permanent
firewall-cmd --add-port=17001-17006/tcp --permanent
firewall-cmd --reload
# Ubuntu 防火墻開放端口
ufw allow 7001-7006/tcp
ufw allow 17001-17006/tcp
ufw reload

步驟 2:創(chuàng)建目錄和配置文件

創(chuàng)建項目目錄(統(tǒng)一管理文件):

mkdir -p redis-cluster/{7001,7002,7003,7004,7005,7006}/data
cd redis-cluster

生成 6 個 Redis 配置文件(以 redis1.conf 為例,其他僅改端口):

# 創(chuàng)建redis1.conf
cat > redis1.conf << EOF
port 7001
protected-mode no
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
cluster-announce-ip 你的宿主機IP
cluster-announce-port 7001
cluster-announce-bus-port 17001
appendonly yes
pidfile /var/run/redis_7001.pid
EOF
# 快速生成redis2-redis6.conf(替換端口)
for port in {2..6}; do
  cp redis1.conf redis${port}.conf
  sed -i "s/7001/700${port}/g" redis${port}.conf
  sed -i "s/17001/1700${port}/g" redis${port}.conf
  sed -i "s/redis_7001/redis_700${port}/g" redis${port}.conf
done

創(chuàng)建 docker-compose.yml 文件:

# 注意:新版本Docker Compose可刪除version字段(避免過時警告)
x-image:
  &redis-image
    redis:5.0.7
services:
  redis1:
    image: *redis-image
    container_name: redis1
    command: ["redis-server", "/home/redis/cluster/redis.conf"]
    volumes:
      - ./redis1.conf:/home/redis/cluster/redis.conf
      - ./7001/data:/data
    ports:
      - 7001:7001
      - 17001:17001
    # 可選:添加網絡模式,避免IP問題
    network_mode: "host"
  redis2:
    image: *redis-image
    container_name: redis2
    command: ["redis-server", "/home/redis/cluster/redis.conf"]
    volumes:
      - ./redis2.conf:/home/redis/cluster/redis.conf
      - ./7002/data:/data
    ports:
      - 7002:7002
      - 17002:17002
    network_mode: "host"
  redis3:
    image: *redis-image
    container_name: redis3
    command: ["redis-server", "/home/redis/cluster/redis.conf"]
    volumes:
      - ./redis3.conf:/home/redis/cluster/redis.conf
      - ./7003/data:/data
    ports:
      - 7003:7003
      - 17003:17003
    network_mode: "host"
  redis4:
    image: *redis-image
    container_name: redis4
    command: ["redis-server", "/home/redis/cluster/redis.conf"]
    volumes:
      - ./redis4.conf:/home/redis/cluster/redis.conf
      - ./7004/data:/data
    ports:
      - 7004:7004
      - 17004:17004
    network_mode: "host"
  redis5:
    image: *redis-image
    container_name: redis5
    command: ["redis-server", "/home/redis/cluster/redis.conf"]
    volumes:
      - ./redis5.conf:/home/redis/cluster/redis.conf
      - ./7005/data:/data
    ports:
      - 7005:7005
      - 17005:17005
    network_mode: "host"
  redis6:
    image: *redis-image
    container_name: redis6
    command: ["redis-server", "/home/redis/cluster/redis.conf"]
    volumes:
      - ./redis6.conf:/home/redis/cluster/redis.conf
      - ./7006/data:/data
    ports:
      - 7006:7006
      - 17006:17006
    network_mode: "host"

? 關鍵優(yōu)化:添加 network_mode: "host",讓容器使用宿主機網絡,避免容器內 IP 和宿主機 IP 不一致導致集群通信失敗。

步驟 3:啟動容器

# 啟動并后臺運行容器
docker-compose up -d
# 檢查容器狀態(tài)(6個容器都應是Up狀態(tài))
docker-compose ps
# 或
docker ps | grep redis

步驟 4:初始化 Redis Cluster 集群

進入任意一個 Redis 容器(比如 redis1):

docker exec -it redis1 /bin/bash

執(zhí)行集群創(chuàng)建命令(替換為你的宿主機 IP):

redis-cli --cluster create 你的宿主機IP:7001 你的宿主機IP:7002 你的宿主機IP:7003 你的宿主機IP:7004 你的宿主機IP:7005 你的宿主機IP:7006 --cluster-replicas 1

--cluster-replicas 1:表示每個主節(jié)點對應 1 個從節(jié)點,最終形成 3 主 3 從的集群;

執(zhí)行后會提示集群規(guī)劃,輸入 yes 確認即可。

步驟 5:驗證集群是否正常

連接集群(-c 表示開啟集群模式,自動重定向):

redis-cli -c -p 7001

查看集群節(jié)點信息:

redis

127.0.0.1:7001> cluster nodes
# 輸出會顯示6個節(jié)點,標注主(master)/從(slave)、槽位分配等信息

測試數據讀寫(驗證集群分片):

127.0.0.1:7001> set name test
OK
127.0.0.1:7001> get name
"test"
# 切換節(jié)點測試(比如7002)
127.0.0.1:7001> exit
redis-cli -c -p 7002
127.0.0.1:7002> get name
# 會自動重定向到存儲該key的節(jié)點并返回結果

三、常用運維命令

# 停止集群容器
docker-compose stop
# 啟動集群容器
docker-compose start
# 徹底刪除集群(含數據,謹慎使用)
docker-compose down
rm -rf 700*/data/*  # 刪除持久化數據
# 查看集群狀態(tài)
docker exec -it redis1 redis-cli -c -p 7001 cluster info

四、常見問題及解決方法

  • 集群創(chuàng)建失敗:Could not connect to xxx:7001
    • 原因:端口未開放、宿主機 IP 配置錯誤、容器網絡模式問題;
    • 解決:檢查防火墻 / 端口、確認 cluster-announce-ip 是宿主機 IP、添加 network_mode: "host"。
  • 容器啟動后日志報錯:Cluster state changed: fail
    • 原因:節(jié)點間總線端口(17001-17006)未開放;
    • 解決:開放 17001-17006 端口,重啟容器。
  • 數據寫入后重啟容器丟失
    • 原因:數據目錄未掛載或權限問題;
    • 解決:檢查 volumes 掛載路徑是否正確,給本地數據目錄賦權:
  • 運行
chmod 777 -R 700*/data

總結

  1. 部署核心:替換宿主機 IP + 開放所有端口(7001-7006、17001-17006) + 初始化集群命令;
  2. 關鍵配置:cluster-announce-ip 必須是宿主機 IP,protected-mode no 關閉保護模式;
  3. 避坑點:添加 network_mode: host 避免容器網絡隔離導致的通信失敗,開啟 AOF 持久化防止數據丟失。

到此這篇關于Docker-compose部署redis-cluster集群的文章就介紹到這了,更多相關Docker compose redis-cluster集群內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Docker如何制作自己鏡像并上傳dockerhub

    Docker如何制作自己鏡像并上傳dockerhub

    這篇文章主要介紹了Docker如何制作自己鏡像并上傳dockerhub,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-11-11
  • docker安裝nginx并配置通過https訪問的方法

    docker安裝nginx并配置通過https訪問的方法

    這篇文章主要介紹了docker安裝nginx并配置通過https訪問的方法,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-01-01
  • Docker創(chuàng)建nacos容器的方法

    Docker創(chuàng)建nacos容器的方法

    這篇文章主要介紹了Docker創(chuàng)建nacos容器的方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2024-03-03
  • Docker本地部署Overleaf的實現步驟

    Docker本地部署Overleaf的實現步驟

    本文主要介紹了Docker本地部署Overleaf的實現,包括克隆倉庫、初始化配置、修改配置文件、啟動服務和創(chuàng)建管理員賬戶等步驟,具有一定的參考價值,感興趣的可以了解一下
    2025-05-05
  • docker實現將本地文件復制到docker容器內

    docker實現將本地文件復制到docker容器內

    這篇文章主要介紹了docker實現將本地文件復制到docker容器內方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • 如何利用Docker部署一個簡單的springboot項目

    如何利用Docker部署一個簡單的springboot項目

    這篇文章主要介紹了如何利用Docker部署一個簡單的springboot項目,本文通過實例圖文實例代碼相結合給大家介紹的非常詳細,需要的朋友可以參考下
    2024-02-02
  • Docker多平臺安裝與配置指南的實現

    Docker多平臺安裝與配置指南的實現

    這篇文章主要介紹了Docker多平臺安裝與配置指南的實現,深入研究了Docker在Linux、Windows、和macOS等不同平臺上的安裝過程及Docker鏡像管理、容器運維、使用Docker Compose進行多容器管理,以及網絡與數據管理等,感興趣的可以了解一下
    2024-01-01
  • Docker容器鏡像相關命令基本介紹與使用

    Docker容器鏡像相關命令基本介紹與使用

    這篇文章主要為大家介紹了Docker容器鏡像相關命令的基本介紹與使用,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-03-03
  • Dockerfile文本文件使用方法實例解析

    Dockerfile文本文件使用方法實例解析

    這篇文章主要介紹了Dockerfile文本文件使用方法實例解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-09-09
  • 淺談docker學習之docker數據卷(volume)

    淺談docker學習之docker數據卷(volume)

    這篇文章主要介紹了淺談docker學習之docker數據卷(volume),小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-12-12

最新評論

定襄县| 丁青县| 搜索| 黄平县| 惠来县| 个旧市| 西峡县| 兴宁市| 砚山县| 沈阳市| 左云县| 赤壁市| 卓尼县| 伊吾县| 双鸭山市| 都昌县| 云阳县| 麦盖提县| 新巴尔虎左旗| 神农架林区| 宜都市| 星子县| 积石山| 陆丰市| 邢台县| 大新县| 静乐县| 九台市| 兴山县| 从江县| 斗六市| 新疆| 内江市| 正镶白旗| 新龙县| 彰化县| 福贡县| 青州市| 颍上县| 肇州县| 五原县|