使用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 Compose 實(shí)現(xiàn)nginx負(fù)載均衡的方法步驟
這篇文章主要介紹了使用Docker Compose 實(shí)現(xiàn)nginx負(fù)載均衡的方法步驟,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-05-05
一篇文章學(xué)會(huì)Docker命令小結(jié)
這篇文章主要介紹了一篇文章學(xué)會(huì)Docker命令小結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07
Windows?Server?2016中文版安裝docker的詳細(xì)步驟
因業(yè)務(wù)需要所以需要安裝Docker,但是在途中遇到了一些問(wèn)題,所以下面這篇文章主要給大家介紹了關(guān)于Windows?Server?2016中文版安裝docker的詳細(xì)步驟,需要的朋友可以參考下2022-07-07
docker實(shí)現(xiàn)搭建emqx服務(wù)
這篇文章主要介紹了docker實(shí)現(xiàn)搭建emqx服務(wù)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-06-06
docker?搭建部署?YAPI?框架的詳細(xì)過(guò)程
Yapi是一個(gè)高效、易用、功能強(qiáng)大的接口文檔管理工具,旨在為開(kāi)發(fā)、產(chǎn)品、測(cè)試人員提供更優(yōu)雅的接口管理服務(wù),可以幫助開(kāi)發(fā)者輕松創(chuàng)建、發(fā)布、維護(hù)?AP,這篇文章主要介紹了docker?搭建部署?YAPI?框架,需要的朋友可以參考下2022-08-08
docker安裝RabbitMQ及安裝延遲插件的詳細(xì)過(guò)程
MQ(message queue)字面意思上來(lái)說(shuō)消息隊(duì)列,是一種跨進(jìn)程的通信機(jī)制,用于上下游傳遞消息,本文給大家詳細(xì)介紹docker安裝RabbitMQ及安裝延遲插件的過(guò)程,感興趣的朋友一起看看吧2022-06-06

