Docker網(wǎng)絡(luò)之部署redis集群方式
部署redis集群
1.創(chuàng)建網(wǎng)卡
[root@ls-bPtysZTW ~]# docker network create redis --subnet 172.38.0.0/16 75919ea55f07a816244610bd3c1aac298716dbf4d0be80b0b686b600c8165e77
通過腳本構(gòu)建6個redis配置
for port in $(seq 1 6); \ do \ mkdir -p /mydata/redis/node-${port}/conf touch /mydata/redis/node-${port}/conf/redis.conf cat << EOF >/mydata/redis/node-${port}/conf/redis.conf port 6379 bind 0.0.0.0 cluster-enabled yes cluster-config-file nodes.conf cluster-node-timeout 5000 cluster-announce-ip 172.38.0.1${port} cluster-announce-port 6379 cluster-announce-bus-port 16379 appendonly yes EOF done
2.依次啟動6個redis容器
docker run -p 6371:6379 -p 16371:16379 --name redis-1 \ -v /mydata/redis/node-1/data:/data \ -v /mydata/redis/node-1/conf/redis.conf:/etc/redis/redis.conf \ -d --net redis --ip 172.38.0.11 redis:5.0.9-alpine3.11 redis-server /etc/redis/redis.conf docker run -p 6372:6379 -p 16372:16379 --name redis-2 \ -v /mydata/redis/node-2/data:/data \ -v /mydata/redis/node-2/conf/redis.conf:/etc/redis/redis.conf \ -d --net redis --ip 172.38.0.12 redis:5.0.9-alpine3.11 redis-server /etc/redis/redis.conf docker run -p 6373:6379 -p 16373:16379 --name redis-3 \ -v /mydata/redis/node-3/data:/data \ -v /mydata/redis/node-3/conf/redis.conf:/etc/redis/redis.conf \ -d --net redis --ip 172.38.0.13 redis:5.0.9-alpine3.11 redis-server /etc/redis/redis.conf docker run -p 6374:6379 -p 16374:16379 --name redis-4 \ -v /mydata/redis/node-4/data:/data \ -v /mydata/redis/node-4/conf/redis.conf:/etc/redis/redis.conf \ -d --net redis --ip 172.38.0.14 redis:5.0.9-alpine3.11 redis-server /etc/redis/redis.conf docker run -p 6375:6379 -p 16375:16379 --name redis-5 \ -v /mydata/redis/node-5/data:/data \ -v /mydata/redis/node-5/conf/redis.conf:/etc/redis/redis.conf \ -d --net redis --ip 172.38.0.15 redis:5.0.9-alpine3.11 redis-server /etc/redis/redis.conf docker run -p 6376:6379 -p 16376:16379 --name redis-6 \ -v /mydata/redis/node-6/data:/data \ -v /mydata/redis/node-6/conf/redis.conf:/etc/redis/redis.conf \ -d --net redis --ip 172.38.0.16 redis:5.0.9-alpine3.11 redis-server /etc/redis/redis.conf
3.進入到任意一個容器里
#進入一個redis docker exec -it redis-1 /bin/sh #redis是shell命令,沒有bash命令 #創(chuàng)建集群(創(chuàng)建時提示是否設(shè)置上面的配置,直接輸入yes即可) redis-cli --cluster create 172.38.0.11:6379 172.38.0.12:6379 172.38.0.13:6379 172.38.0.14 :6379 172.38.0.15:6379 172.38.0.16:6379 --cluster-replicas 1
4. 查看集群信息
redis-cli -c #連接集群 cluster info #查看集群信息 cluster nodes #查看集群節(jié)點
集群測試
測試
#向集群里寫入數(shù)據(jù) 127.0.0.1:6379> set abc test # 數(shù)據(jù)寫進了節(jié)點2 -> Redirected to slot [7638] located at 172.38.0.12:6379 OK 172.38.0.12:6379> get abc "test"
模擬節(jié)點故障
此時我們模擬故障,停掉一個節(jié)點(剛剛寫入數(shù)據(jù)的節(jié)點)
[root@ls-bPtysZTW ~]# docker stop redis-2 redis-2
#我們再次訪問數(shù)據(jù) 172.38.0.12:6379> get abc ^[^H^C /data # redis-cli -c 127.0.0.1:6379> get abc -> Redirected to slot [7638] located at 172.38.0.16:6379 "test" #查看節(jié)點信息 172.38.0.16:6379> cluster nodes d34a69ce4bce097b36c1620f31fbeaa90fe65a76 172.38.0.14:6379@16379 slave 2a76fc512720e761ccdbf36cbd44be0d7af3c928 0 1647851135371 4 connected 727214221642d8b2f226cd9cd1ea52b6e7a1a31f 172.38.0.11:6379@16379 master - 0 1647851135069 1 connected 0-5460 c058281886151ea80c7f9b27d71165f930878117 172.38.0.16:6379@16379 myself,master - 0 1647851135000 7 connected 5461-10922 #從節(jié)點成master節(jié)點 0defb3ab247cc004143f6cf191742577febe8ab6 172.38.0.12:6379@16379 master,fail - 1647850593353 1647850591849 2 connected #節(jié)點2已經(jīng)故障 2a76fc512720e761ccdbf36cbd44be0d7af3c928 172.38.0.13:6379@16379 master - 0 1647851135000 3 connected 10923-16383 5c9b5b2213935195af3b4fa482aa54ea4e4d2323 172.38.0.15:6379@16379 slave 727214221642d8b2f226cd9cd1ea52b6e7a1a31f 0 1647851136374 5 connected
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Windows環(huán)境GeoServer打包Docker的方法實現(xiàn)
本文介紹了在Windows環(huán)境下將GeoServer打包為Docker鏡像,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-12-12Docker Gitlab+Jenkins+Harbor構(gòu)建持久化平臺操作
這篇文章主要介紹了Docker Gitlab+Jenkins+Harbor構(gòu)建持久化平臺操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-11-11在docker中的mysql容器內(nèi)執(zhí)行命令與執(zhí)行SQL文件方式
文章介紹了如何通過Docker進入MySQL容器執(zhí)行SQL文件,并總結(jié)了MySQL清空表數(shù)據(jù)的三種方法:TRUNCATE、DROP和DELETE,每種方法都有其適用場景和特點2025-01-01docker實現(xiàn)重新打tag并刪除原tag的鏡像
這篇文章主要介紹了docker實現(xiàn)重新打tag并刪除原tag的鏡像,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-11-11docker.service啟動失?。篣nit not found的原因及解決辦法
這篇文章主要介紹了docker.service啟動失敗:Unit not found的原因分析及解決辦法,需要的朋友可以參考下2017-04-04idea?+?Docker?+?阿里鏡像服務(wù)打包部署的過程
本文介紹了如何在IDEA中使用Docker打包鏡像,并將鏡像推送到阿里云鏡像服務(wù),同時,還詳細(xì)說明了如何在ECS服務(wù)器上安裝和配置Docker,并提供了常用的Docker命令和操作技巧,感興趣的朋友一起看看吧2025-02-02win10子系統(tǒng)ubuntu(WSL) 安裝Docker的教程(圖文詳解)
現(xiàn)在 Docker 有專門的 Win10 專業(yè)版系統(tǒng)的安裝包,需要開啟Hyper-V,具體開啟方法文中給大家介紹的很詳細(xì),這篇文章主要介紹了win10子系統(tǒng)ubuntu(WSL) 安裝Docker,需要的朋友可以參考下2019-10-10docker部署Vaultwarden密碼共享管理系統(tǒng)的實現(xiàn)(圖文)
Vaultwarden是一個開源的密碼管理器,它提供了類似于Bitwarden的功能,允許用戶安全地存儲和管理密碼、敏感數(shù)據(jù)和身份信息,本文主要介紹了docker部署Vaultwarden密碼共享管理系統(tǒng)的實現(xiàn),感興趣的可以了解一下2023-10-10