使用Docker配置redis sentinel哨兵的方法步驟
本文演示一主二從。
先說(shuō)一下遇到的問(wèn)題。我看網(wǎng)上說(shuō)想配置哨兵,必須讓啟動(dòng)redis的docker網(wǎng)絡(luò)模式為host,否則無(wú)法訪問(wèn)到從還是什么的。我指定--network host
后無(wú)法外網(wǎng)訪問(wèn),redis desktop manager連不上redis了,后來(lái)發(fā)現(xiàn)我這個(gè)新克隆的機(jī)器沒(méi)關(guān)防火墻,關(guān)上就好了。
1.配置主從
docker pull一下redis
master
mkdir -p /mydata/redis/6379/conf mkdir -p /mydata/redis/6379/data touch /mydata/redis/6379/conf/redis.conf echo "appendonly yes" >> /mydata/redis/6379/conf/redis.conf docker run --network host --name redis6379 -v /mydata/redis/6379/data:/data -v /mydata/redis/6379/conf/redis.conf:/etc/redis/redis.conf -d redis redis-server /etc/redis/redis.conf --port 6379
slave
#slave1 mkdir -p /mydata/redis/6380/conf mkdir -p /mydata/redis/6380/data touch /mydata/redis/6380/conf/redis.conf echo "appendonly yes" >> /mydata/redis/6380/conf/redis.conf docker run --network host --name redis6380 -v /mydata/redis/6380/data:/data -v /mydata/redis/6380/conf/redis.conf:/etc/redis/redis.conf -d redis redis-server /etc/redis/redis.conf --port 6380 --slaveof 192.168.243.4 6379 #slave2 mkdir -p /mydata/redis/6381/conf mkdir -p /mydata/redis/6381/data touch /mydata/redis/6381/conf/redis.conf echo "appendonly yes" >> /mydata/redis/6381/conf/redis.conf docker run --network host --name redis6381 -v /mydata/redis/6381/data:/data -v /mydata/redis/6381/conf/redis.conf:/etc/redis/redis.conf -d redis redis-server /etc/redis/redis.conf --port 6381 --slaveof 192.168.243.4 6379
查看配置:
#主 docker exec -it redis6379 redis-cli >info replication #從 docker exec -it redis6380 redis-cli -p 6380 >info replication
2. 配置哨兵
master
mkdir /mydata/redis/6379/sentinel mkdir /mydata/redis/6379/sentinel/log vi /mydata/redis/6379/sentinel/sentinel.conf #輸入 port 26379 dir "/var/log/sentinel" logfile "/var/log/sentinel/26379.log" sentinel monitor mymaster 192.168.243.4 6379 1 #這里暫時(shí)設(shè)置成1  #方便看一下主掛掉是什么效果 sentinel down-after-milliseconds mymaster 5000 sentinel parallel-syncs mymaster 1 sentinel failover-timeout mymaster 180000 #end docker run -d --name sentinel26379 -v /mydata/redis/6379/sentinel/sentinel.conf:/conf/sentinel.conf -v /mydata/redis/6379/sentinel/log:/var/log/sentinel --network host redis redis-sentinel /conf/sentinel.conf
先進(jìn)行測(cè)試:
docker exec -it redis6379 redis-cli > SHUTDOWN > exit cat /mydata/redis/6379/sentinel/log/26379.log
此時(shí)redis6381已成為新的master
再啟動(dòng)docker start redis6379
6379是slave了
測(cè)試成功,修改上面配置文件的sentinel monitor mymaster 192.168.243.4 6379 2
數(shù)字配置為2,代表至少有2個(gè)Sentinel節(jié)點(diǎn)認(rèn)為主節(jié)點(diǎn)不可達(dá),那么這個(gè)不可達(dá)的判定才是客觀的。為了防止票數(shù)相同,sentinel啟動(dòng)奇數(shù)個(gè)。
slave
#slave1 mkdir /mydata/redis/6380/sentinel mkdir /mydata/redis/6380/sentinel/log vi /mydata/redis/6380/sentinel/sentinel.conf #輸入 port 26380 dir "/var/log/sentinel" logfile "/var/log/sentinel/26380.log" sentinel monitor mymaster 192.168.243.4 6380 2 sentinel down-after-milliseconds mymaster 5000 sentinel parallel-syncs mymaster 1 sentinel failover-timeout mymaster 180000 #end docker run -d --name sentinel26380 -v /mydata/redis/6380/sentinel/sentinel.conf:/conf/sentinel.conf -v /mydata/redis/6380/sentinel/log:/var/log/sentinel --network host redis redis-sentinel /conf/sentinel.conf #slave2 mkdir /mydata/redis/6381/sentinel mkdir /mydata/redis/6381/sentinel/log vi /mydata/redis/6381/sentinel/sentinel.conf #輸入 port 26381 dir "/var/log/sentinel" logfile "/var/log/sentinel/26381.log" sentinel monitor mymaster 192.168.243.4 6381 2 sentinel down-after-milliseconds mymaster 5000 sentinel parallel-syncs mymaster 1 sentinel failover-timeout mymaster 180000 #end docker run -d --name sentinel26381 -v /mydata/redis/6381/sentinel/sentinel.conf:/conf/sentinel.conf -v /mydata/redis/6381/sentinel/log:/var/log/sentinel --network host redis redis-sentinel /conf/sentinel.conf
3.SpringBoot連接
application.yml
spring: redis: timeout: 5000 sentinel: master: mymaster nodes: 192.168.243.4:26379,192.168.243.4:26380,192.168.243.4:26381
controller
@Autowired private StringRedisTemplate redisTemplate; @RequestMapping("/redis") public String redis() { redisTemplate.opsForValue().set("test", "121323123"); String test = redisTemplate.opsForValue().get("test"); return "RESULT: " + test; }
訪問(wèn)localhost:8080/redis
到此這篇關(guān)于使用Docker配置redis sentinel哨兵的方法步驟的文章就介紹到這了,更多相關(guān)Docker配置redis sentinel哨兵內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 基于Docker搭建Redis一主兩從三哨兵的實(shí)現(xiàn)
- Docker配置redis哨兵模式的方法(多服務(wù)器上)
- 5分鐘教你實(shí)現(xiàn)用docker搭建Redis集群模式和哨兵模式
- 基于Docker實(shí)現(xiàn)Redis主從+哨兵搭建的示例實(shí)踐
- docker搭建redis主從哨兵集群的實(shí)現(xiàn)步驟
- docker搭建redis哨兵集群并且整合springboot的實(shí)現(xiàn)
- Docker下Redis集群(主從+哨兵)安裝配置的實(shí)現(xiàn)步驟
- 教你一分鐘搞定docker+redis哨兵模式
- 基于docker的redis主從及哨兵配置方式
- docker安裝Redis高可用實(shí)現(xiàn)一主二從三哨兵
相關(guān)文章
Docker安裝node-red、導(dǎo)入節(jié)點(diǎn)、部署查看的步驟詳解
Node-RED設(shè)計(jì)使用的場(chǎng)景是IoT,但是作為一個(gè)流編排引擎,顯然它能做的事情更多,比如使用容器化的方式進(jìn)行構(gòu)建、打包、部署等操作也是可行的,這篇文章繼續(xù)介紹Docker安裝node-red、導(dǎo)入節(jié)點(diǎn)、部署查看的相關(guān)知識(shí),感興趣的朋友一起看看吧2022-01-01docker compose 一鍵部署分布式配置中心Apollo的過(guò)程詳解
這篇文章主要介紹了docker compose 一鍵部署分布式配置中心Apollo,今天我們使用Docker來(lái)進(jìn)行搭建,畢竟Docker對(duì)于開(kāi)發(fā)者來(lái)說(shuō)更友好一些,需要的朋友可以參考下2021-09-09CentOS 7.x docker使用overlay2存儲(chǔ)方式
這篇文章主要介紹了CentOS 7.x docker使用overlay2存儲(chǔ)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-11-11maven構(gòu)建docker鏡像push到鏡像倉(cāng)庫(kù)方式
這篇文章主要介紹了maven構(gòu)建docker鏡像push到鏡像倉(cāng)庫(kù)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-11-11使用docker compose搭建consul集群環(huán)境的例子
consul是HashCorp公司推出使用go語(yǔ)言編寫(xiě)的開(kāi)源工具,用于實(shí)現(xiàn)分布式系統(tǒng)的服務(wù)發(fā)現(xiàn)與配置,今天給大家普及使用docker compose搭建consul集群環(huán)境的方法及consul基本知識(shí)講解,感興趣的朋友一起看看吧2021-06-06