docker-compose搭建redis集群之哨兵模式
时间:2022-07-23
本文章向大家介绍docker-compose搭建redis集群之哨兵模式,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
一、环境准备
本文基于上一篇主从模式文章docker-compose搭建redis集群之主从复制
- 已有docker、docker-compose环境
- 虚拟机
服务器 |
端口 |
角色 |
---|---|---|
192.168.2.2 |
6379 |
master |
192.168.2.2 |
26379 |
sentinel-master |
192.168.2.4 |
6379 |
slave1 |
192.168.2.4 |
26379 |
sentinel-slave1 |
192.168.2.5 |
6379 |
slave2 |
192.168.2.5 |
26379 |
sentinel-slave2 |
二、哨兵模式搭建
- sentinel.conf
# 哨兵sentinel实例运行的端口 默认26379
port 26379
# 哨兵sentinel的工作目录
dir /tmp
# 自定义集群名,其中 192.168.2.2 为 redis-master 的 ip,6379 为 redis-master 的端口,2 为最小投票数(因为有 3 台 Sentinel 所以可以设置成 2)
sentinel monitor mymaster 192.168.2.2 6379 2
# 指定多少毫秒之后 主节点没有应答哨兵sentinel 此时 哨兵主观上认为主节点下线 默认30秒
sentinel down-after-milliseconds mymaster 30000
sentinel parallel-syncs mymaster 1
sentinel auth-pass mymaster 123456
sentinel failover-timeout mymaster 180000
sentinel deny-scripts-reconfig yes
- 192.168.2.2 sentinel-master主节点
version: '3.7'
services:
sentinel1:
image: redis
container_name: redis-sentinel-1
command: redis-sentinel /usr/local/etc/redis/sentinel.conf
restart: always
ports:
- 26379:26379
volumes:
- /home/redis-sentinel/sentinel.conf:/usr/local/etc/redis/sentinel.conf
- 192.168.2.4 sentinel-slave1从节点
version: '3.7'
services:
sentinel2:
image: redis
container_name: redis-sentinel-2
command: redis-sentinel /usr/local/etc/redis/sentinel.conf
restart: always
ports:
- 26379:26379
volumes:
- /home/redis-sentinel/sentinel.conf:/usr/local/etc/redis/sentinel.conf
- 192.168.2.5 sentinel-slave2从节点
version: '3.7'
services:
sentinel3:
image: redis
container_name: redis-sentinel-2
command: redis-sentinel /usr/local/etc/redis/sentinel.conf
restart: always
ports:
- 26379:26379
volumes:
- /home/redis-sentinel/sentinel.conf:/usr/local/etc/redis/sentinel.conf
在各自主从服务器中docker-compose up -d 执行
三、测试验证
- 进入redis-sentinel容器中,查看redis连接状态
# 查看redis-sentinel是否启动成功
docker ps
# 进入redis-sentinel容器中,查看redis连接状态
docker exec -it 容器id bash
redis-cli -p 26379
# 执行如下命令,查看redis主信息
sentinel master mymaster
显示带红框的信息则表明成功
# 执行如下命令,查看从redis信息是否正常
sentinel slaves mymaster
我的博客即将同步至腾讯云+社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=7lt8p6jfyl5c
- 老司机教你部署Cowrie蜜罐
- 时间序列预测如何变成有监督学习问题?
- 追踪溯源 | 希拉里邮箱泄露事件
- DNS Tunneling及相关实现
- 创建代码生成器可以很简单:如何通过T4模板生成代码?[下篇]
- 创建代码生成器可以很简单:如何通过T4模板生成代码?[上篇]
- 从Trace和Debug来看条件编译(Conditional Compilation)
- 解码针对工业工程领域的网络攻击 Operation Ghoul「食尸鬼行动」
- EndpointAddress——不只是一个Uri[上篇]
- EndpointAddress——不只是一个Uri[下篇]
- ASP.NET Core中如影随形的”依赖注入”[上]: 从两个不同的ServiceProvider说起
- ASP.NET Core中如影随形的”依赖注入”[下]: 历数依赖注入的N种玩法
- ASP.NET Core中的缓存[1]:如何在一个ASP.NET Core应用中使用缓存
- ASP.NET Core的路由[5]:内联路由约束的检验
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- SAP WebClient UI component模型元数据解析工具
- 设计模式之抽象工厂模式
- 测试面试题集锦(四)| Linux 与 Python 编程篇(附答案)
- 设计模式之代理模式
- SQL Server 中的 ROW_NUMBER 函数
- NHibernate 批量数据插入测试
- MvvmCross 框架中 ViewModel 之间的导航以及生命周期
- 在 mono 下尝试 ASP.NET vNext
- 设计模式之享元模式
- 设计模式之外观模式
- 设计模式之装饰器模式
- 设计模式之桥模式
- 笔试编程 | 二分查找、数组、排序
- Spark SQL解析查询parquet格式Hive表获取分区字段和查询条件
- Apache Hive