docker redis哨兵模式(sentinel)

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: docker redis哨兵模式(sentinel)

redis集群-哨兵模式(sentinel)

哨兵模式:基于redis主从复制,增加sentinel服务用于监听服务状态,并在发生异常时重新选取主服务器 使用版本,redis6.25

配置文件

下面只列出主要配置,需查看详细配置请查看关联项目 redis登陆密码如配置则需要统一

master配置

requirepass 登陆密码
# 发生故障时会重新指定主服务器,所以需要指定密码
masterauth 主服务器登陆密码

slave配置

在docker环境执行,避免重复修改配置文件所以使用redis01(机器名),此处别名对应docker启动时指定的别名

requirepass 登陆密码
masterauth 主服务器登陆密码
# 指定主服务器
replicaof redis01 6379

sentinel配置

mymaster 为sentinel监控的别名,

sentinel monitor mymaster redis01 6379 2
sentinel auth-pass mymaster sbsb1234
# 6.2之后才支持使用机器名默认是关闭,此处打开
SENTINEL resolve-hostnames yes

docker 启动

结构为3个redis节点,1主2从,3个sentinel服务

准备环境

# 下载redis最新镜像
docker pull redis
#新建一个网络使其它节点连接此网络,避免通信问题
docker network create testnet

启动redis服务

命令说明 *. -p 6380:6379 指定外内端口 *. --name redis01 指定容器名称 *. -v /home/docker/redis/master.conf:/etc/redis/redis.conf 映射配置文件 *. --privileged=true 提升docker容器权限避免容器中操作权限不够 *. --network testnet 指定容器使用网络 *. --network-alias redis01 指定网络中机器名 *. -d redis 后台执行容器 *. redis-server /etc/redis/redis.conf 执行的cmd命令,指定配置文件否则不会使用映射配置文件

docker run -p 6380:6379 --name redis01 -v /home/docker/redis/master.conf:/etc/redis/redis.conf  --privileged=true --network testnet --network-alias redis01  -d  redis redis-server /etc/redis/redis.conf 
docker run -p 6381:6379 --name redis02 -v /home/docker/redis/slave.conf:/etc/redis/redis.conf  --privileged=true --network testnet --network-alias redis02  -d  redis redis-server /etc/redis/redis.conf 
docker run -p 6382:6379 --name redis03 -v /home/docker/redis/slave.conf:/etc/redis/redis.conf  --privileged=true --network testnet --network-alias redis03  -d  redis redis-server /etc/redis/redis.conf

启动完成后可使用redis客户端连接或使用命令行验证主从是否正常

# 查看主从配置信息
info replication

启动sentinel服务

命令说明 *. redis-server /etc/redis/sentinel.conf --sentinel 表示启动sentinel服务

docker run -p 26379:26379 --name sentinel01 -v /home/docker/redis/sentinel.conf:/etc/redis/sentinel.conf  --privileged=true --network testnet --network-alias sentinel01  -d  redis redis-server /etc/redis/sentinel.conf --sentinel
docker run -p 26380:26379 --name sentinel02 -v /home/docker/redis/sentinel.conf:/etc/redis/sentinel.conf  --privileged=true --network testnet --network-alias sentinel02  -d  redis redis-server /etc/redis/sentinel.conf --sentinel
docker run -p 26381:26379 --name sentinel03 -v /home/docker/redis/sentinel.conf:/etc/redis/sentinel.conf  --privileged=true --network testnet --network-alias sentinel03  -d  redis redis-server /etc/redis/sentinel.conf --sentinel

启动成功后可在主服务器控制台输入如下命令验证

# 执行休眠120s的任务
DEBUG SLEEP 120s
# 再次查看主从信息查看是否已一切换为从服务器
info replication

相关项目

https://gitee.com/MeiJM/spring-cram/tree/master/redis/redisConfig

参考资料

https://www.cnblogs.com/shenh/p/9714547.html

https://cloud.tencent.com/developer/article/1343834

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
8天前
|
安全 Docker 容器
docker的默认网络模式有哪些
Docker 默认网络模式包括:1) bridge:默认模式,各容器分配独立IP,可通过名称或IP通信;2) host:容器与宿主机共享网络命名空间,性能最优但有安全风险;3) none:容器隔离无网络配置,适用于仅需本地通信的场景。
18 6
|
2月前
|
负载均衡 应用服务中间件 数据安全/隐私保护
docker swarm 创建 Swarm 模式下的网络
【10月更文挑战第14天】
44 6
|
28天前
|
消息中间件 NoSQL Redis
【赵渝强老师】Redis消息的生产者消费者模式
消息队列在Redis中可通过List数据结构实现,支持发布者订阅者和生产者消费者两种模式。生产者通过`lpush`向List添加消息,消费者通过`rpop`或`brpop`消费消息,后者支持阻塞等待。示例代码展示了如何使用Redis的生产者消费者模式。
|
28天前
|
Docker 容器
【赵渝强老师】Docker的None网络模式
Docker容器在网络方面实现了逻辑隔离,提供了四种网络模式:bridge、container、host和none。其中,none模式下容器具有独立的网络命名空间,但不包含任何网络配置,仅能通过Local Loopback网卡(localhost或127.0.0.1)进行通信。适用于不希望容器接收任何网络流量或运行无需网络连接的特殊服务。
|
28天前
|
Docker 容器
【赵渝强老师】Docker的Host网络模式
Docker容器在网络环境中是隔离的,可通过配置不同网络模式(如bridge、container、host和none)实现容器间或与宿主机的网络通信。其中,host模式使容器与宿主机共享同一网络命名空间,提高性能但牺牲了网络隔离性。
|
28天前
|
Kubernetes Docker 容器
【赵渝强老师】Docker的Container网络模式
Docker容器在网络环境中彼此隔离,但可通过配置不同网络模式实现容器间通信。其中,container模式使容器共享同一网络命名空间,通过localhost或127.0.0.1互相访问,提高传输效率。本文介绍了container模式的特点及具体示例。
|
28天前
|
Linux Docker 容器
【赵渝强老师】Docker的Bridge网络模式
本文介绍了Docker容器的网络隔离机制及其四种网络模式:bridge、container、host和none。重点讲解了默认的bridge模式,通过示例演示了如何创建自定义bridge网络并配置容器的网络信息。文中还附有相关图片和视频讲解,帮助读者更好地理解Docker网络的配置和使用方法。
|
2月前
|
监控 NoSQL 算法
Redis Sentinel(哨兵)详解
Redis Sentinel(哨兵)详解
129 4
|
2月前
|
Docker 容器
docker中桥接模式(bridge)
【10月更文挑战第4天】
119 5
|
2月前
|
Docker 容器
docker中检查容器的网络模式
【10月更文挑战第5天】
197 1