用docker實現(xiàn)Redis主從配置的示例代碼
初始條件
在三臺不同服務(wù)器上使用 Docker 部署 Redis 主從模式,通常有以下步驟。
假設(shè)你有三臺服務(wù)器,分別為 server1、server2 和 server3,我們將在這些服務(wù)器上設(shè)置 Redis 的主從復(fù)制。
步驟
準(zhǔn)備 Redis 配置文件:每臺服務(wù)器上的 Redis 實例需要配置主從關(guān)系。
在三臺服務(wù)器上啟動 Docker 容器:在每臺服務(wù)器上分別啟動 Redis 容器,其中兩臺作為從節(jié)點,一臺作為主節(jié)點。
配置主從復(fù)制:在從節(jié)點上配置連接到主節(jié)點。
步驟 1:準(zhǔn)備 Docker 環(huán)境
在每臺服務(wù)器上安裝 Docker,并確保它們能夠相互通信。如果你使用 Docker Compose,也可以通過配置 docker-compose.yml 文件來簡化配置。
步驟 2:啟動 Redis 容器
你需要在三臺服務(wù)器上啟動 Redis 容器。以下是如何在每臺服務(wù)器上啟動 Redis 實例的步驟。
- 啟動主節(jié)點(Server1)
在 server1 上啟動主節(jié)點 Redis:
docker run -d \ --name redis-master \ --restart always \ -p 6379:6379 \ redis:latest
此命令會啟動一個 Redis 容器并將其設(shè)置為主節(jié)點。6379 是 Redis 的默認(rèn)端口。
- 啟動從節(jié)點(Server2)
在 server2 上啟動一個從節(jié)點 Redis,并連接到 server1 上的主節(jié)點:
docker run -d \ --name redis-slave1 \ --restart always \ -e REDIS_REPLICATION_MODE=slave \ -e REDIS_MASTER_HOST=<server1_ip> \ -e REDIS_MASTER_PORT=6379 \ -p 6380:6379 \ redis:latest
這里,<server1_ip> 是 server1 的 IP 地址,redis-slave1 是從節(jié)點的名稱。通過環(huán)境變量來指定從節(jié)點連接到主節(jié)點。
- 啟動從節(jié)點(Server3)
在 server3 上啟動另一個從節(jié)點 Redis,并連接到 server1 上的主節(jié)點:
docker run -d \ --name redis-slave2 \ --restart always \ -e REDIS_REPLICATION_MODE=slave \ -e REDIS_MASTER_HOST=<server1_ip> \ -e REDIS_MASTER_PORT=6379 \ -p 6381:6379 \ redis:latest
同樣,替換 <server1_ip> 為主節(jié)點的 IP 地址。
步驟 3:配置主從復(fù)制
Redis 會自動通過容器的環(huán)境變量配置主從關(guān)系,但是你可以通過連接到從節(jié)點并手動配置主從關(guān)系來確保一切正常。
- 進(jìn)入從節(jié)點容器并配置主從關(guān)系
docker exec -it redis-slave1 redis-cli
連接到從節(jié)點后,執(zhí)行以下命令以確保它正確地配置了主從復(fù)制:
SLAVEOF <server1_ip> 6379
同樣,在 redis-slave2 上執(zhí)行相同的操作:
docker exec -it redis-slave2 redis-cli SLAVEOF <server1_ip> 6379
步驟 4:驗證主從復(fù)制是否成功
你可以使用以下命令來檢查主從關(guān)系是否正常工作:
連接到主節(jié)點(server1):
docker exec -it redis-master redis-cli
在主節(jié)點上執(zhí)行命令查看從節(jié)點:
INFO replication
你應(yīng)該能看到類似以下的輸出,顯示從節(jié)點已連接:
localhost:6379[1]> INFO replication
# Replication role:master connected_slaves:2 slave0:ip=172.16.100.121,port=6379,state=online,offset=7873245,lag=0 slave1:ip=172.16.100.122,port=6379,state=online,offset=7793351,lag=1 master_failover_state:no-failover master_replid:0ab711eb4e43cf51c349e232042f3ef01b009c72 master_replid2:0000000000000000000000000000000000000000 master_repl_offset:7874805 second_repl_offset:-1 repl_backlog_active:1 repl_backlog_size:1048576 repl_backlog_first_byte_offset:6826230 repl_backlog_histlen:1048576
連接到從節(jié)點(server2 或 server3):
docker exec -it redis-slave1 redis-cli
在從節(jié)點上執(zhí)行命令查看主節(jié)點信息:
INFO replication
輸出應(yīng)顯示從節(jié)點已正確連接到主節(jié)點,如下所示:
# Replication role:slave master_host:172.16.100.102 master_port:6379 master_link_status:up master_last_io_seconds_ago:0 master_sync_in_progress:0 slave_read_repl_offset:48479646 slave_repl_offset:48479646 slave_priority:100 slave_read_only:1 replica_announced:1 connected_slaves:0 master_failover_state:no-failover master_replid:0ab711eb4e43cf51c349e232042f3ef01b009c72 master_replid2:0000000000000000000000000000000000000000 master_repl_offset:48479646 second_repl_offset:-1 repl_backlog_active:1 repl_backlog_size:1048576 repl_backlog_first_byte_offset:47431071 repl_backlog_histlen:1048576
步驟 5:持久化配置(可選)
為了確保 Redis 數(shù)據(jù)在重啟后依然有效,你可以為 Redis 配置持久化機制??梢酝ㄟ^修改 Redis 配置文件或使用 Docker 掛載數(shù)據(jù)卷來實現(xiàn)。
docker run -d \ --name redis-master \ --restart always \ -v /path/to/data:/data \ -p 6379:6379 \ redis:latest
這樣,Redis 數(shù)據(jù)將保存在本地磁盤,而不是容器的默認(rèn)文件系統(tǒng)中。
總結(jié)
主節(jié)點:在 server1 上啟動一個 Redis 實例。
從節(jié)點:在 server2 和 server3 上啟動兩個 Redis 從節(jié)點,并將它們配置為從屬于 server1。
驗證復(fù)制:通過 INFO replication 命令驗證主從關(guān)系是否正確。
通過這種方式,你可以在三臺服務(wù)器上使用 Docker 部署一個高可用的 Redis 主從模式。
到此這篇關(guān)于用docker實現(xiàn)Redis主從配置的示例代碼的文章就介紹到這了,更多相關(guān)docker Redis主從配置內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 使用Docker快速搭建Redis主從復(fù)制的完整步驟
- 基于docker的redis主從及哨兵配置方式
- Docker搭建Redis主從復(fù)制的實現(xiàn)步驟
- Docker Compose搭建Redis主從復(fù)制環(huán)境的實現(xiàn)步驟
- docker搭建redis主從哨兵集群的實現(xiàn)步驟
- 基于Docker搭建Redis主從集群的實現(xiàn)
- 詳解使用Docker進(jìn)行Redis主從復(fù)制實踐
- 使用docker搭建redis主從的方法步驟
- 使用Docker搭建Redis主從復(fù)制的集群
- Docker下redis的主從配置教程詳解
- docker-compose啟動redis主從的實現(xiàn)
相關(guān)文章
Mac下Docker Desktop starting的問題及解決過程
作者遇到DockerDesktop啟動卡住的問題,原因是VirtualDiskLimit默認(rèn)64GB限制導(dǎo)致Docker.raw過大,通過復(fù)制Docker.raw、修改文件名、重啟DockerDesktop,然后增加VirtualDiskLimit值并重命名,解決了問題2026-04-04
使用Conda環(huán)境創(chuàng)建Docker鏡像的完整步驟指南
Docker是實現(xiàn)容器化的主流工具之一,而Conda作為科學(xué)計算和Python的包管理器,與Docker的結(jié)合能為開發(fā)者提供高度靈活、易于管理的開發(fā)環(huán)境,這篇文章主要介紹了使用Conda環(huán)境創(chuàng)建Docker鏡像的完整步驟,需要的朋友可以參考下2025-03-03
遷移docker部署的gitlab過程(經(jīng)實戰(zhàn))
本文詳細(xì)描述了如何將Docker部署的GitLab數(shù)據(jù)遷移到另一塊硬盤的過程,包括包括停止容器、遷移數(shù)據(jù)卷、修改掛載路徑、修正權(quán)限和重啟容器等等每一步驟都有詳細(xì)的說明確保遷移過程的安全性和有效性2026-05-05
docker 數(shù)據(jù)目錄遷移的兩種實現(xiàn)方法
本文主要介紹了docker 數(shù)據(jù)目錄遷移的兩種實現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2025-03-03

