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

Docker + Redis 部署集群的實(shí)現(xiàn)步驟

 更新時(shí)間:2025年11月13日 11:00:45   作者:路過(guò)的好心人  
本文詳細(xì)介紹了在三臺(tái)服務(wù)器上部署高可用Redis集群的完整流程,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

一、環(huán)境準(zhǔn)備

1. 服務(wù)器規(guī)劃(3 臺(tái)服務(wù)器)

服務(wù)器IP 地址角色運(yùn)行 Redis 節(jié)點(diǎn)開(kāi)放端口(防火墻)
server1192.168.1.100主節(jié)點(diǎn) 1 + 從節(jié)點(diǎn) 1redis-6379(主)、redis-6380(從)6379-6380(Redis 端口)、16379-16380(集群總線端口)
server2192.168.1.101主節(jié)點(diǎn) 2 + 從節(jié)點(diǎn) 2redis-6379(主)、redis-6380(從)同上
server3192.168.1.102主節(jié)點(diǎn) 3 + 從節(jié)點(diǎn) 3redis-6379(主)、redis-6380(從)同上
  • 端口說(shuō)明:Redis 集群需開(kāi)放 服務(wù)端口(如 6379)和 集群總線端口(服務(wù)端口 + 10000,如 16379),總線端口用于節(jié)點(diǎn)間通信。

2. 防火墻配置(三臺(tái)服務(wù)器均執(zhí)行)

# 開(kāi)放 Redis 服務(wù)端口和集群總線端口
sudo firewall-cmd --permanent --add-port=6379-6380/tcp
sudo firewall-cmd --permanent --add-port=16379-16380/tcp
sudo firewall-cmd --reload

3. 安裝 Docker 并配置跨主機(jī)通信

三臺(tái)服務(wù)器均需安裝 Docker,并確保彼此網(wǎng)絡(luò)互通(可 ping 通對(duì)方 IP)。無(wú)需額外創(chuàng)建 Docker 網(wǎng)絡(luò),直接通過(guò) 主機(jī) IP + 端口 實(shí)現(xiàn)跨服務(wù)器節(jié)點(diǎn)通信。

二、部署 Redis 節(jié)點(diǎn)(每臺(tái)服務(wù)器部署 2 個(gè)節(jié)點(diǎn))

1. 在 server1(192.168.1.100)部署節(jié)點(diǎn)

# 創(chuàng)建數(shù)據(jù)目錄(持久化用)
mkdir -p /data/redis/{6379,6380} && chmod 777 -R /data/redis

# 啟動(dòng)主節(jié)點(diǎn)(6379)
docker run -d \
  --name redis-6379 \
  --net host \  # 使用主機(jī)網(wǎng)絡(luò),避免端口映射問(wèn)題(推薦集群模式)
  -v /data/redis/6379:/data \
  redis:7-alpine \
  redis-server \
  --port 6379 \
  --cluster-enabled yes \  # 開(kāi)啟集群模式
  --cluster-config-file nodes-6379.conf \  # 集群配置文件
  --cluster-node-timeout 5000 \  # 節(jié)點(diǎn)超時(shí)時(shí)間(毫秒)
  --appendonly yes \  # 開(kāi)啟 AOF 持久化
  --requirepass "D83544E45CA39C7653BF21612FAD0FD1" \  # 密碼(所有節(jié)點(diǎn)必須一致)
  --masterauth "D83544E45CA39C7653BF21612FAD0FD1"  # 主從同步密碼(與 requirepass 一致)

# 啟動(dòng)從節(jié)點(diǎn)(6380,后續(xù)會(huì)被分配到其他主節(jié)點(diǎn))
docker run -d \
  --name redis-6380 \
  --net host \
  -v /data/redis/6380:/data \
  redis:7-alpine \
  redis-server \
  --port 6380 \
  --cluster-enabled yes \
  --cluster-config-file nodes-6380.conf \
  --cluster-node-timeout 5000 \
  --appendonly yes \
  --requirepass "D83544E45CA39C7653BF21612FAD0FD1" \
  --masterauth "D83544E45CA39C7653BF21612FAD0FD1"

2. 在 server2(192.168.1.101)部署節(jié)點(diǎn)

# 創(chuàng)建數(shù)據(jù)目錄
mkdir -p /data/redis/{6379,6380} && chmod 777 -R /data/redis

# 啟動(dòng)主節(jié)點(diǎn)(6379)
docker run -d \
  --name redis-6379 \
  --net host \
  -v /data/redis/6379:/data \
  redis:7-alpine \
  redis-server \
  --port 6379 \
  --cluster-enabled yes \
  --cluster-config-file nodes-6379.conf \
  --cluster-node-timeout 5000 \
  --appendonly yes \
  --requirepass "D83544E45CA39C7653BF21612FAD0FD1" \
  --masterauth "D83544E45CA39C7653BF21612FAD0FD1"

# 啟動(dòng)從節(jié)點(diǎn)(6380)
docker run -d \
  --name redis-6380 \
  --net host \
  -v /data/redis/6380:/data \
  redis:7-alpine \
  redis-server \
  --port 6380 \
  --cluster-enabled yes \
  --cluster-config-file nodes-6380.conf \
  --cluster-node-timeout 5000 \
  --appendonly yes \
  --requirepass "D83544E45CA39C7653BF21612FAD0FD1" \
  --masterauth "D83544E45CA39C7653BF21612FAD0FD1"

3. 在 server3(192.168.1.102)部署節(jié)點(diǎn)

# 創(chuàng)建數(shù)據(jù)目錄
mkdir -p /data/redis/{6379,6380} && chmod 777 -R /data/redis

# 啟動(dòng)主節(jié)點(diǎn)(6379)
docker run -d \
  --name redis-6379 \
  --net host \
  -v /data/redis/6379:/data \
  redis:7-alpine \
  redis-server \
  --port 6379 \
  --cluster-enabled yes \
  --cluster-config-file nodes-6379.conf \
  --cluster-node-timeout 5000 \
  --appendonly yes \
  --requirepass "D83544E45CA39C7653BF21612FAD0FD1" \
  --masterauth "D83544E45CA39C7653BF21612FAD0FD1"

# 啟動(dòng)從節(jié)點(diǎn)(6380)
docker run -d \
  --name redis-6380 \
  --net host \
  -v /data/redis/6380:/data \
  redis:7-alpine \
  redis-server \
  --port 6380 \
  --cluster-enabled yes \
  --cluster-config-file nodes-6380.conf \
  --cluster-node-timeout 5000 \
  --appendonly yes \
  --requirepass "D83544E45CA39C7653BF21612FAD0FD1" \
  --masterauth "D83544E45CA39C7653BF21612FAD0FD1"

三、創(chuàng)建 Redis 集群(關(guān)鍵步驟)

在任意一臺(tái)服務(wù)器(如 server1)執(zhí)行集群創(chuàng)建命令,將 6 個(gè)節(jié)點(diǎn)(3 主 3 從)加入集群:

1. 進(jìn)入 server1 的任意 Redis 容器(如 redis-6379)

bash

docker exec -it redis-6379 sh 

2. 執(zhí)行集群創(chuàng)建命令

# 格式:redis-cli --cluster create 節(jié)點(diǎn)1:端口 節(jié)點(diǎn)2:端口 ... --cluster-replicas 1 --password 密碼
redis-cli -a D83544E45CA39C7653BF21612FAD0FD1 \
--cluster create \
192.168.1.100:6379 \
192.168.1.101:6379 \
192.168.1.102:6379 \
192.168.1.100:6380 \
192.168.1.101:6380 \
192.168.1.102:6380 \
--cluster-replicas 1
# 每個(gè)主節(jié)點(diǎn)對(duì)應(yīng) 1 個(gè)從節(jié)點(diǎn)

  • 參數(shù)說(shuō)明--cluster-replicas 1 表示 “1 個(gè)主節(jié)點(diǎn)對(duì)應(yīng) 1 個(gè)從節(jié)點(diǎn)”,6 個(gè)節(jié)點(diǎn)將自動(dòng)分配為 3 主 3 從。前 3 個(gè)節(jié)點(diǎn)默認(rèn)作為主節(jié)點(diǎn),后 3 個(gè)作為從節(jié)點(diǎn)(自動(dòng)關(guān)聯(lián)到主節(jié)點(diǎn))。

3. 確認(rèn)集群配置

執(zhí)行命令后,會(huì)顯示節(jié)點(diǎn)分配方案,輸入 yes 確認(rèn):

>>> Performing hash slots allocation on 6 nodes...
Master[0] -> Slots 0-5460
Master[1] -> Slots 5461-10922
Master[2] -> Slots 10923-16383
Adding replica 192.168.1.101:6380 to 192.168.1.100:6379
Adding replica 192.168.1.102:6380 to 192.168.1.101:6379
Adding replica 192.168.1.100:6380 to 192.168.1.102:6379
>>> Trying to optimize slaves allocation for anti-affinity
...
Do you want to proceed with the proposed configuration? (type 'yes' to accept): yes

四、驗(yàn)證集群狀態(tài)

1. 查看集群信息

在任意節(jié)點(diǎn)容器內(nèi)執(zhí)行(需帶密碼):

# 連接集群(-c 表示集群模式)
redis-cli -c -h 192.168.1.100 -p 6379 -a D83544E45CA39C7653BF21612FAD0FD1

# 查看集群狀態(tài)
cluster info

# 查看節(jié)點(diǎn)列表(角色、ID、 slots 等)
cluster nodes
  • 正常輸出中,cluster_state:ok 表示集群健康;
  • 節(jié)點(diǎn)列表中,master 標(biāo)識(shí)主節(jié)點(diǎn),slave 標(biāo)識(shí)從節(jié)點(diǎn),并顯示對(duì)應(yīng)主節(jié)點(diǎn)的 ID。

2. 測(cè)試數(shù)據(jù)讀寫(xiě)與分片

# 在集群模式下設(shè)置 key(會(huì)自動(dòng)路由到對(duì)應(yīng)主節(jié)點(diǎn))
set test-key "hello redis cluster"

# 獲取 key(自動(dòng)路由)
get test-key

# 查看 key 所在的槽位和節(jié)點(diǎn)
cluster keyslot test-key

五、高可用測(cè)試(主節(jié)點(diǎn)故障轉(zhuǎn)移)

模擬主節(jié)點(diǎn)故障:在 server1 停止主節(jié)點(diǎn)容器(6379):

docker stop redis-6379 

觀察從節(jié)點(diǎn)是否自動(dòng)升級(jí)為主節(jié)點(diǎn):在任意節(jié)點(diǎn)容器內(nèi)執(zhí)行 cluster nodes,查看原 server1:6380(從節(jié)點(diǎn))是否變?yōu)?nbsp;master。

恢復(fù)故障節(jié)點(diǎn):重啟 server1 的 6379 容器,它會(huì)自動(dòng)作為從節(jié)點(diǎn)加入集群:

docker start redis-6379 

六、關(guān)鍵配置說(shuō)明

  • --net host 的作用:使用主機(jī)網(wǎng)絡(luò)模式,避免 Docker 端口映射的復(fù)雜配置,使 Redis 節(jié)點(diǎn)直接通過(guò)服務(wù)器 IP + 端口通信(集群必須)。
  • 密碼一致性:所有節(jié)點(diǎn)的 requirepass(訪問(wèn)密碼)和 masterauth(主從同步密碼)必須相同,否則從節(jié)點(diǎn)無(wú)法同步主節(jié)點(diǎn)數(shù)據(jù)。
  • 持久化:通過(guò) -v /data/redis/6379:/data 掛載數(shù)據(jù)目錄,確保 Redis 數(shù)據(jù)持久化(重啟容器不丟失數(shù)據(jù))。
  • 集群總線端口:必須開(kāi)放 端口 + 10000(如 6379 對(duì)應(yīng) 16379),用于節(jié)點(diǎn)間的心跳檢測(cè)和數(shù)據(jù)同步。

七、常見(jiàn)問(wèn)題解決

  • 集群創(chuàng)建失敗:檢查所有節(jié)點(diǎn)是否啟動(dòng)、端口是否開(kāi)放、服務(wù)器間是否互通,以及密碼是否一致。
  • 從節(jié)點(diǎn)無(wú)法同步主節(jié)點(diǎn):確認(rèn) masterauth 與主節(jié)點(diǎn) requirepass 一致,且主節(jié)點(diǎn)防火墻未攔截從節(jié)點(diǎn)的同步請(qǐng)求。
  • 節(jié)點(diǎn)重啟后脫離集群:確保數(shù)據(jù)目錄掛載正確(/data/redis/端口),集群配置文件(nodes-端口.conf)會(huì)保存在掛載目錄,重啟后自動(dòng)加載。

通過(guò)以上步驟,可在三臺(tái)服務(wù)器上部署一個(gè)高可用的 Redis 集群,實(shí)現(xiàn)數(shù)據(jù)分片存儲(chǔ)和自動(dòng)故障轉(zhuǎn)移,適合生產(chǎn)環(huán)境使用。

到此這篇關(guān)于Docker + Redis 部署集群的實(shí)現(xiàn)步驟的文章就介紹到這了,更多相關(guān)Docker Redis 部署集群內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 通過(guò)Redisson監(jiān)聽(tīng)Redis集群的Key過(guò)期事件的實(shí)現(xiàn)指南

    通過(guò)Redisson監(jiān)聽(tīng)Redis集群的Key過(guò)期事件的實(shí)現(xiàn)指南

    在分布式系統(tǒng)中,監(jiān)聽(tīng) Redis 鍵過(guò)期事件是實(shí)現(xiàn)緩存失效、訂單超時(shí)取消等功能的常用方案,本文將詳細(xì)介紹如何通過(guò) Redisson 高效監(jiān)聽(tīng) Redis 集群的 Key 過(guò)期事件,需要的朋友可以參考下
    2025-11-11
  • Redis過(guò)期監(jiān)聽(tīng)機(jī)制,訂單超時(shí)自動(dòng)取消方式

    Redis過(guò)期監(jiān)聽(tīng)機(jī)制,訂單超時(shí)自動(dòng)取消方式

    這篇文章主要介紹了Redis過(guò)期監(jiān)聽(tīng)機(jī)制,訂單超時(shí)自動(dòng)取消方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • Caffeine結(jié)合Redis空值緩存實(shí)現(xiàn)多級(jí)緩存

    Caffeine結(jié)合Redis空值緩存實(shí)現(xiàn)多級(jí)緩存

    本文介紹了SpringBoot整合Caffeine本地緩存+Redis分布式緩存+空值緩存的三級(jí)緩存方案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2026-01-01
  • Redis超詳細(xì)講解高可用主從復(fù)制基礎(chǔ)與哨兵模式方案

    Redis超詳細(xì)講解高可用主從復(fù)制基礎(chǔ)與哨兵模式方案

    Redis因?yàn)槠涓咝阅芎鸵子眯栽谖覀兒蠖说姆?wù)中發(fā)揮了巨大的作用,并且很多重要功能的實(shí)現(xiàn)都會(huì)依賴redis,本篇我們來(lái)了解Redis高可用主從復(fù)制與哨兵模式
    2022-04-04
  • redis復(fù)制有可能碰到的問(wèn)題匯總

    redis復(fù)制有可能碰到的問(wèn)題匯總

    這篇文章主要介紹了redis復(fù)制有可能碰到的問(wèn)題匯總,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-04-04
  • Redis遍歷海量數(shù)據(jù)集的幾種實(shí)現(xiàn)方法

    Redis遍歷海量數(shù)據(jù)集的幾種實(shí)現(xiàn)方法

    Redis作為一個(gè)高性能的鍵值存儲(chǔ)數(shù)據(jù)庫(kù),廣泛應(yīng)用于各種場(chǎng)景,包括緩存、消息隊(duì)列、排行榜,本文主要介紹了Redis遍歷海量數(shù)據(jù)集的幾種實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-02-02
  • linux下安裝redis圖文詳細(xì)步驟

    linux下安裝redis圖文詳細(xì)步驟

    大家好,本篇文章主要講的是linux下安裝redis圖文詳細(xì)步驟,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • Redis數(shù)據(jù)庫(kù)安全詳解

    Redis數(shù)據(jù)庫(kù)安全詳解

    這篇文章主要為大家介紹了Redis數(shù)據(jù)庫(kù)安全詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • 基于Redis的ZSET實(shí)現(xiàn)用戶邀請(qǐng)排行榜

    基于Redis的ZSET實(shí)現(xiàn)用戶邀請(qǐng)排行榜

    本文主要介紹了在項(xiàng)目中實(shí)現(xiàn)用戶邀請(qǐng)功能并基于積分進(jìn)行排名的解決方案,使用了Redis的ZSET數(shù)據(jù)結(jié)構(gòu)和Redisson的RLock進(jìn)行加鎖以避免并發(fā)問(wèn)題,感興趣的可以了解一下
    2025-11-11
  • Redis 鍵值設(shè)計(jì)使用總結(jié)

    Redis 鍵值設(shè)計(jì)使用總結(jié)

    這篇文章主要介紹了Redis鍵值設(shè)計(jì)的使用總結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04

最新評(píng)論

三江| 贺兰县| 肥西县| 晋江市| 嘉义市| 扶沟县| 连平县| 遵义市| 屯留县| 会东县| 密山市| 青海省| 密山市| 平乐县| 汪清县| 大渡口区| 京山县| 左权县| 独山县| 枣强县| 信阳市| 龙里县| 遵义县| 镇平县| 兴安县| 杨浦区| 麻城市| 修武县| 进贤县| 郑州市| 陆丰市| 临颍县| 呼伦贝尔市| 十堰市| 永泰县| 本溪市| 陇西县| 天镇县| 竹北市| 宁安市| 内黄县|