docker安裝Redis高可用實(shí)現(xiàn)一主二從三哨兵
本次教程使用docker swarm安裝
準(zhǔn)備三臺(tái)機(jī)器
host | IP | 用途 |
---|---|---|
node1 | 192.168.31.130 | redis-master01,redis哨兵節(jié)點(diǎn)01 |
node2 | 192.168.31.131 | redis-slave01, redis哨兵節(jié)點(diǎn)02 |
node3 | 192.168.31.132 | redis-slave02 redis哨兵節(jié)點(diǎn)02 |
注意事項(xiàng):
1:需要保證三臺(tái)機(jī)器在一個(gè)網(wǎng)絡(luò)或一個(gè)服務(wù)器安全組內(nèi)(相互能ping通)
2: 為了演示需要將哨兵節(jié)點(diǎn)與redis節(jié)點(diǎn)安裝在同一個(gè)機(jī)器,實(shí)際線上需要哨兵與redis分開(kāi)部署以達(dá)到高可用性。
1:創(chuàng)建redis數(shù)據(jù)掛載卷
#node1機(jī)器上執(zhí)行 docker volume create --name redis_cluster_data1 #node2機(jī)器上執(zhí)行 docker volume create --name redis_cluster_data2 #node3機(jī)器上執(zhí)行 docker volume create --name redis_cluster_data3
2: 創(chuàng)建redis專用的網(wǎng)絡(luò)
#--driver overlay --attachable 表示創(chuàng)建swarm集群網(wǎng)絡(luò)且不是service的容器也能加入此網(wǎng)絡(luò) docker network create --driver overlay \ --attachable --subnet=192.169.0.0/24 redis_cluster_network
3:下載/配置redis配置文件
本文使用redis6.2.6版本,所以下載redis6.2.6版本中的配置文件
解壓下載的文件,找到redis.conf文件
修改默認(rèn)配置文件
- bind 127.0.0.1 #注釋掉這部分,這是限制redis只能本地訪問(wèn)
- protected-mode no #默認(rèn)yes,開(kāi)啟保護(hù)模式,限制為本地訪問(wèn)
- daemonize no#默認(rèn)no,改為yes意為以守護(hù)進(jìn)程方式啟動(dòng),可后臺(tái)運(yùn)行,除非kill進(jìn)程(可選),改為yes會(huì)使配置文件方式啟動(dòng)redis失敗
- dir ./ #輸入本地redis數(shù)據(jù)庫(kù)存放文件夾(可選)
- appendonly yes #redis持久化(可選)
然后將此配置文件復(fù)制到docker數(shù)據(jù)卷所在位置(如果你不使用swarm就正常掛載文件就行)
4:創(chuàng)建redis集群service
新增node標(biāo)簽
docker node update --label-add redis=cluster node1 docker node update --label-add redis=cluster node2 docker node update --label-add redis=cluster node3
創(chuàng)建service
docker service create --name redis_cluster \ --network redis_cluster_network \ --mount type=volume,src=redis_cluster_data,dst=/data \ --replicas 3 --constraint 'node.labels.redis == cluster' \ redis:6.2.6 --appendonly yes
5:配置主從關(guān)系
選擇要成為主節(jié)點(diǎn)的IP比如:192.168.31.130
進(jìn)入從節(jié)點(diǎn)01,從節(jié)點(diǎn)02
docker exec -it redis_cluster1 redis-cli docker exec -it redis_cluster2 redis-cli
輸入以下命令加入主節(jié)點(diǎn)
#固定語(yǔ)法 slaveof 主節(jié)點(diǎn)IP 主節(jié)點(diǎn)端口 slaveof 192.168.1.10 6379
進(jìn)入主節(jié)點(diǎn)查看節(jié)點(diǎn)數(shù)量是否成功加入
docker exec -it redis_cluster_master redis-cli info
6:創(chuàng)建redis哨兵數(shù)據(jù)掛載卷
#node1機(jī)器上執(zhí)行 docker volume create --name redis_sentinel_data1 #node2機(jī)器上執(zhí)行 docker volume create --name redis_sentinel_data2 #node3機(jī)器上執(zhí)行 docker volume create --name redis_sentinel_data3
下載/配置redis哨兵配置文件由于上面已經(jīng)下載了redis6.2.6所以我們接著使用文件夾的中的sentinel.conf文件
修改第84行的sentlnel參數(shù),改為redis主節(jié)點(diǎn)的ip,端口
然后將此配置文件復(fù)制到docker數(shù)據(jù)卷所在位置(如果你不使用swarm就正常掛載文件就行)
7:創(chuàng)建redis哨兵集群service
docker service create --name redis_sentinel_cluster \ --network redis_cluster_network \ #掛載數(shù)據(jù)卷redis_sentinel_data到容器的/etc/redis目錄下 \ --mount type=volume,src=redis_sentinel_data,dst=/etc/redis \ # 開(kāi)放tcp端口且網(wǎng)絡(luò)不走集群路由網(wǎng)絡(luò)(如果不加mode=host,則默認(rèn)每個(gè)docker節(jié)點(diǎn)的7369端口都會(huì)強(qiáng)制跳轉(zhuǎn)到這些service中無(wú)論節(jié)點(diǎn)是否在此ndoe中) \ --publish published=7369,target=26379,protocol=tcp,mode=host \ # 制作3個(gè)副本 并指定符合條件的node節(jié)點(diǎn)中生成。\ --replicas 3 --constraint 'node.labels.redis == cluster' \ # 指定redis鏡像版本,指定哨兵模式按指定配置文件啟動(dòng) redis:6.2.6 redis-sentinel /etc/redis/sentinel.conf
查看哨兵節(jié)點(diǎn)信息
#進(jìn)入哨兵節(jié)點(diǎn) docker exec -it sentinel /bin/bash #輸入命令 redis-cli -h 127.0.0.1 -p 26379 #查看sentinel集群信息 info sentinel
到此這篇關(guān)于docker安裝Redis高可用實(shí)現(xiàn)一主二從三哨兵的文章就介紹到這了,更多相關(guān)docker Redis一主二從三哨兵內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Docker可視化面板Portainer的實(shí)現(xiàn)
Portainer是一個(gè)免費(fèi)的容器管理工具,支持Docker環(huán)境的可視化管理,通過(guò)Portainer,用戶可以輕松地在Windows或Linux容器中部署服務(wù),大大簡(jiǎn)化了Docker容器的管理工作,感興趣的可以了解一下2024-11-11使用docker的python基礎(chǔ)鏡像時(shí)要指定patch版本原理
這篇文章主要為大家介紹了使用docker的python基礎(chǔ)鏡像時(shí)要指定patch版本原理,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-10-10詳解如何使用Docker部署Django+MySQL8開(kāi)發(fā)環(huán)境
這篇文章主要介紹了詳解如何使用Docker部署Django+MySQL8開(kāi)發(fā)環(huán)境,文中通過(guò)示例代碼以及圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07Docker Registry搭建私有鏡像倉(cāng)庫(kù)的實(shí)現(xiàn)方法
這篇文章主要介紹了Docker Registry搭建私有鏡像倉(cāng)庫(kù)的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10常用的8個(gè)應(yīng)用和中間件的Docker運(yùn)行示例詳解
Portainer是一個(gè)輕量級(jí)的管理 UI ,可讓你輕松管理不同的 Docker 環(huán)境(Docker 主機(jī)或 Swarm 群集),這篇文章主要介紹了常用的8個(gè)應(yīng)用和中間件的Docker運(yùn)行示例,需要的朋友可以參考下2024-03-03