docker部署redis主從和哨兵


docker部署redis主從和哨兵

原文地址:https://www.jianshu.com/p/72ee9568c8ea
1主2從3哨兵
一、前期准備工作
1、電腦裝有docker
2、假設本地ip為192.168.2.139
3、各Redis的ip和端口如下:
主:ip:6379
從:ip:6380,ip:6381
sentinel:ip:26379,ip:26380,ip:26381

二、部署主從redis

docker run --name redis6379 --net=host -v $PWD/data6379:/data -d redis:3.2 redis-server --port 6379
docker run --name redis6380 --net=host -v $PWD/data6380:/data -d redis:3.2 redis-server --slaveof 192.168.2.139 6379 --port 6380
docker run --name redis6381 --net=host -v $PWD/data6381:/data -d redis:3.2 redis-server --slaveof 192.168.2.139 6379 --port 6381

執行命名查看redis 同步情況

docker logs redis6379
docker logs redis6380
docker logs redis6381

redis日志

三、部署sentinel
新建文件 sentinel-26379.conf、sentinel-26380.conf、sentinel-26381.conf

protected-mode no
bind 0.0.0.0
port 26379
daemonize yes
sentinel monitor mymaster 192.168.2.139 6379 2
sentinel down-after-milliseconds master 5000
sentinel failover-timeout mymaster 180000
sentinel parallel-syncs mymaster 1
logfile ""
protected-mode no
bind 0.0.0.0
port 26380
daemonize yes
sentinel monitor mymaster 192.168.2.139 6379 2
sentinel down-after-milliseconds master 5000
sentinel failover-timeout mymaster 180000
sentinel parallel-syncs mymaster 1
logfile ""
protected-mode no
bind 0.0.0.0
port 26381
daemonize yes
sentinel monitor mymaster 192.168.2.139 6379 2
sentinel down-after-milliseconds master 5000
sentinel failover-timeout mymaster 180000
sentinel parallel-syncs mymaster 1
logfile ""

執行命令啟動3台sentinel

docker run -it --name sentinel-26379 \
--net=host \
-v $PWD/sentinel-26379.conf:/usr/local/etc/redis/sentinel.conf \
-d redis:3.2 redis-sentinel /usr/local/etc/redis/sentinel.conf 
docker run -it --name sentinel-26380 \
--net=host \
-v $PWD/sentinel-26380.conf:/usr/local/etc/redis/sentinel.conf \
-d redis:3.2 redis-sentinel /usr/local/etc/redis/sentinel.conf
docker run -it --name sentinel-26381 \
--net=host \
-v $PWD/sentinel-26381.conf:/usr/local/etc/redis/sentinel.conf \
-d redis:3.2 redis-sentinel /usr/local/etc/redis/sentinel.conf

執行docker logs sentinel-26379 查看啟動情況
sentinel

sentenel會根據master的數據自動把其他salve和sentenel找出來寫到自己的配置文件

查看配置文件cat sentinel-26379.conf
sentenel
發現配置文件多了東西

四、測試連接
新建一個boot工程,配置redis的pom和配置
application.properties

spring.redis.sentinel.master=mymaster
spring.redis.sentinel.nodes=192.168.2.139:26379,192.168.2.139:26380,192.168.2.139:26381

github地址:https://github.com/hd-eujian/redis.git
碼雲地址:https://gitee.com/guoeryyj/redis.git
執行單元測試用例

@SpringBootTest
class RedisApplicationTests {
    @Autowired
    private StringRedisTemplate stringRedisTemplate;
    @Test
    void contextLoads() {
        stringRedisTemplate.opsForValue().set("a","123");
        String o = stringRedisTemplate.opsForValue().get("a");
        System.out.println(o);
    }
}

把其中的master停掉(我的master是6380的redis)
執行docker stop redis6380
查看日志docker logs sentinel-26379
日志
可以看到redis的mater轉為6381
再次運行redis代碼的單元測試。結果繼續有效


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM