用docker實(shí)現(xiàn)Redis主從配置的示例代碼
初始條件
在三臺不同服務(wù)器上使用 Docker 部署 Redis 主從模式,通常有以下步驟。
假設(shè)你有三臺服務(wù)器,分別為 server1、server2 和 server3,我們將在這些服務(wù)器上設(shè)置 Redis 的主從復(fù)制。
步驟
準(zhǔn)備 Redis 配置文件:每臺服務(wù)器上的 Redis 實(shí)例需要配置主從關(guān)系。
在三臺服務(wù)器上啟動 Docker 容器:在每臺服務(wù)器上分別啟動 Redis 容器,其中兩臺作為從節(jié)點(diǎn),一臺作為主節(jié)點(diǎn)。
配置主從復(fù)制:在從節(jié)點(diǎn)上配置連接到主節(jié)點(diǎn)。
步驟 1:準(zhǔn)備 Docker 環(huán)境
在每臺服務(wù)器上安裝 Docker,并確保它們能夠相互通信。如果你使用 Docker Compose,也可以通過配置 docker-compose.yml 文件來簡化配置。
步驟 2:啟動 Redis 容器
你需要在三臺服務(wù)器上啟動 Redis 容器。以下是如何在每臺服務(wù)器上啟動 Redis 實(shí)例的步驟。
- 啟動主節(jié)點(diǎn)(Server1)
在 server1 上啟動主節(jié)點(diǎn) Redis:
docker run -d \ --name redis-master \ --restart always \ -p 6379:6379 \ redis:latest
此命令會啟動一個 Redis 容器并將其設(shè)置為主節(jié)點(diǎn)。6379 是 Redis 的默認(rèn)端口。
- 啟動從節(jié)點(diǎn)(Server2)
在 server2 上啟動一個從節(jié)點(diǎn) Redis,并連接到 server1 上的主節(jié)點(diǎn):
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é)點(diǎn)的名稱。通過環(huán)境變量來指定從節(jié)點(diǎn)連接到主節(jié)點(diǎn)。
- 啟動從節(jié)點(diǎn)(Server3)
在 server3 上啟動另一個從節(jié)點(diǎn) Redis,并連接到 server1 上的主節(jié)點(diǎn):
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é)點(diǎn)的 IP 地址。
步驟 3:配置主從復(fù)制
Redis 會自動通過容器的環(huán)境變量配置主從關(guān)系,但是你可以通過連接到從節(jié)點(diǎn)并手動配置主從關(guān)系來確保一切正常。
- 進(jìn)入從節(jié)點(diǎn)容器并配置主從關(guān)系
docker exec -it redis-slave1 redis-cli
連接到從節(jié)點(diǎn)后,執(zhí)行以下命令以確保它正確地配置了主從復(fù)制:
SLAVEOF <server1_ip> 6379
同樣,在 redis-slave2 上執(zhí)行相同的操作:
docker exec -it redis-slave2 redis-cli SLAVEOF <server1_ip> 6379
步驟 4:驗(yàn)證主從復(fù)制是否成功
你可以使用以下命令來檢查主從關(guān)系是否正常工作:
連接到主節(jié)點(diǎn)(server1):
docker exec -it redis-master redis-cli
在主節(jié)點(diǎn)上執(zhí)行命令查看從節(jié)點(diǎn):
INFO replication
你應(yīng)該能看到類似以下的輸出,顯示從節(jié)點(diǎn)已連接:
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é)點(diǎn)(server2 或 server3):
docker exec -it redis-slave1 redis-cli
在從節(jié)點(diǎn)上執(zhí)行命令查看主節(jié)點(diǎn)信息:
INFO replication
輸出應(yīng)顯示從節(jié)點(diǎn)已正確連接到主節(jié)點(diǎn),如下所示:
# 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 配置持久化機(jī)制??梢酝ㄟ^修改 Redis 配置文件或使用 Docker 掛載數(shù)據(jù)卷來實(shí)現(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é)點(diǎn):在 server1 上啟動一個 Redis 實(shí)例。
從節(jié)點(diǎn):在 server2 和 server3 上啟動兩個 Redis 從節(jié)點(diǎn),并將它們配置為從屬于 server1。
驗(yàn)證復(fù)制:通過 INFO replication 命令驗(yàn)證主從關(guān)系是否正確。
通過這種方式,你可以在三臺服務(wù)器上使用 Docker 部署一個高可用的 Redis 主從模式。
到此這篇關(guān)于用docker實(shí)現(xiàn)Redis主從配置的示例代碼的文章就介紹到這了,更多相關(guān)docker Redis主從配置內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Linux下docker安裝mysql8并配置遠(yuǎn)程連接
本文主要介紹了Linux下docker安裝mysql8并配置遠(yuǎn)程連接,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07docker安裝nginx并部署前端項(xiàng)目的全過程
作為一個前端,代碼寫完,最后部署到服務(wù)器,這是一個必須要了解的過程,這篇文章主要給大家介紹了關(guān)于docker安裝nginx并部署前端項(xiàng)目的相關(guān)資料,需要的朋友可以參考下2022-05-05Docker自定義JDK鏡像并拉取至阿里云鏡像倉庫超詳細(xì)攻略
Docker倉庫是集中存放鏡像的地方,分為公共倉庫和私有倉庫,這篇文章主要給大家介紹了關(guān)于Docker自定義JDK鏡像并拉取至阿里云鏡像倉庫的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-08-08Docker 設(shè)置代理的三種方法(2025年06月03日親測可用)
在Docker中設(shè)置代理是非常常見的需求,本文將介紹三種配置Docker使用代理的常見方法,包括通過配置鏡像加速器、通過配置HTTP/HTTPS代理及通過配置代理,感興趣的可以了解一下2025-09-09Docker Desktop如何設(shè)置鏡像環(huán)境變量
Docker Desktop配置鏡像環(huán)境變量需設(shè)置容器名稱、端口映射、卷和環(huán)境變量,如PostgreSQL需指定POSTGRES_PASSWORD,建議按需配置,以確保數(shù)據(jù)持久化和參數(shù)傳遞2025-07-07Next.js?Docker鏡像私有部署從零實(shí)現(xiàn)
這篇文章主要為大家介紹了Next.js?Docker鏡像私有部署從零實(shí)現(xiàn),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-12-12