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

三、部署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 查看启动情况

sentenel会根据master的数据自动把其他salve和sentenel找出来写到自己的配置文件

查看配置文件cat sentinel-26379.conf



发现配置文件多了东西

四、测试连接

新建一个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代码的单元测试。结果继续有效

docker部署redis主从和哨兵的更多相关文章

  1. docker安装redis主从以及哨兵

    docker安装redis主从以及哨兵 本文使用docker在四台机器上部署一主二从三哨兵的Redis主从结构. 服务器配置 192.168.102.128 主节点 centos7.5 192.168 ...

  2. (六) Docker 部署 Redis 高可用集群 (sentinel 哨兵模式)

    参考并感谢 官方文档 https://hub.docker.com/_/redis GitHub https://github.com/antirez/redis happyJared https:/ ...

  3. 关于redis主从|哨兵|集群模式

    关于redis主从.哨兵.集群的介绍网上很多,这里就不赘述了. 一.主从 通过持久化功能,Redis保证了即使在服务器重启的情况下也不会损失(或少量损失)数据,因为持久化会把内存中数据保存到硬盘上,重 ...

  4. redis主从|哨兵|集群模式

    关于redis主从.哨兵.集群的介绍网上很多,这里就不赘述了. 一.主从 通过持久化功能,Redis保证了即使在服务器重启的情况下也不会损失(或少量损失)数据,因为持久化会把内存中数据保存到硬盘上,重 ...

  5. 通过 Docker 部署 Redis 6.x 集群

    要点步骤总结: # 这里演示使用同一台主机上 # 创建各节点存储路径 mkdir -p /opt/redis/{7000,7001,7002,7003,7004,7005} # 创建各节点配置文件 c ...

  6. 自动配置redis主从和哨兵

    redis shell  每次创建redis主从和哨兵服务,文件夹要复制好几个,配置文件改一大堆.繁琐还容易出错,就想通过shell脚本自动帮我配置好端口以及文件,下面就是脚本内容: redis-to ...

  7. SaltStack部署redis主从

    需求: 一,部署redis主从,一台主一台从 二,redis监听自己的IP地址,而不是0.0.0.0 主:安装,配置,启动 从:安装,配置,启动,主从

  8. SaltStack入门篇(六)之部署Redis主从实现和Job管理

    一.部署Redis主从 需求: 192.168.56.11是主,192.168.56.12是从 redis监听自己的ip地址,而不是0.0.0.0 分析: linux-node1 安装 配置 启动 l ...

  9. docker(部署常见应用):docker部署redis

    上节回顾:docker(部署常见应用):docker部署mysql docker部署redis:4.0 # 下载镜像 docker pull redis:4.0 # 查看下载镜像 docker ima ...

随机推荐

  1. Intel HEX格式

    来来 !! come baby  !  只强调一点这篇文章有checksum的算法,是我最喜欢地!! 参考:https://blog.csdn.net/extlife/article/details/ ...

  2. Ubuntu18.04修改apt-get源

    1)备份源文件: sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak 2)查看版本信息 如是Linux Mint等Ubuntu衍生版,执行: ...

  3. 《穷查理年鉴》诚实 & 希望 & 勇气 & 失败 & 改变(关于美好)

    诚实 013.自欺是最常见的欺骗. 038.毫无顾忌进行欺骗的人是无所畏惧的. 043.问心无愧者永无所惧. 068.诚实的人从欺诈人手中得到的买卖,我们从争论中得到真理. 134.没有欺骗就没有信任 ...

  4. 零基础小白Python入门必看:面向对象之典型魔术方法

  5. vscode编写python,引用本地py文件出现红色波浪线

    前言 引用本地py文件出现红色波浪线,如下图: 原因 经过查询得知,vscode中的python插件默认使用的是pylint来做代码检查,因此需要对pylint做一些配置 解决方案 在setting. ...

  6. 多测师讲解selenium _enter弹框_高级讲师肖sir

    enter # from selenium import webdriver# from time import sleep# drvier=webdriver.Chrome()# url='file ...

  7. 【编程学习笔记】如何组织构建多文件 C 语言程序!编程也有~

    优秀 Unix 程序哲学 首先,你要知道这个 C 程序是一个 Unix 命令行工具.这意味着它运行在(或者可被移植到)那些提供 Unix C 运行环境的操作系统中.当贝尔实验室发明 Unix 后,它从 ...

  8. PostgreSQL查询表名称及表结构

    1. 查询表名称 在psql状态下查询表名称 \dt SQL方式查看表名称 SELECT viewname FROM pg_views WHERE schemaname ='public' Postg ...

  9. swoole热启动

    通过扫描指定的要扫描的目录,把所有文件找出来,分别md5 连接字符串,最后再md5返回 启动定时器,扫描,当前的加密值和以前一样不管,否则就重启服务,把当前赋值给旧值 . httpServer.php ...

  10. centos8安装php7.4

    一,下载php7.4 1,官方网站: https://www.php.net/ 2,下载 [root@yjweb source]# wget https://www.php.net/distribut ...