Redis基础系列-Docker部署哨兵模式

文章目录

  • Redis基础系列-Docker部署哨兵模式
    • 1. 背景
    • 2. 部署架构说明
    • 3. Redis配置
    • 4. Sentinel配置
    • 5. Redis容器和Sentinel容器构建命令

Redis基础系列-Docker部署哨兵模式

1. 背景

此前已详细阐述基于物理机环境的Redis哨兵模式部署方案,近期尝试将Redis哨兵集群迁移至Docker容器化部署时,把过程中遇到的问题进行整理

Docker基础系列-哨兵模式
Redis高级系列-缓存双写一致性
Redis基础系列-主从复制
Redis基础系列-持久化
Redis基础系列-安装Redis
Redis运维常用命令
SpringBoot整合Redis
Docker安装Redis7.0.8

Docker部署Redis哨兵模式软件和配置文件下载

2. 部署架构说明

  • 部署规划
192.168.10.111  Redis-Master + Sentinel
192.168.10.112  Redis-Slave + Sentinel
192.168.10.113  Redis-Slave + Sentinel
  • 前提:Docker已经部署
  • 前提:Redis镜像已经导入或者pull下来,Sentinel不需要额外下载,本身就属于redis的一个组件
  • 目录准备,三台服务器都执行
mkdir -p /docker/redis/data
mkdir -p /docker/redis/logs
mkdir -p /docker/redis/conf

## 权限赋予
chmod -R 777 /docker/redis/data
chmod -R 777 /docker/redis/logs
chmod -R 777 /docker/redis/conf    
   

3. Redis配置

  • 主节点 redis.conf(所属目录/docker/redis/conf)
# 1. 开启后台模式(容器-d启动,这里一定要设置no)
daemonize no
# 2.注释掉回环地址限制
#bind 127.0.0.1@
# 3.关闭保护模式
protected-mode no
# 4.指定端口
port 6379
# 5.指定当前工作目录(配置文件和快照文件路径)
dir /data
# 6.pid进程文件名字
pidfile /var/run/redis_6379.pid
# 7.log文件名字
logfile "/var/log/redis/redis.log"
# 8.redis密码
requirepass 123456
# 9.快照文件路径
dbfilename dump6379.rdb

# 10. 故障转移的时候就需要
masterauth "123456"
  • 从节点 redis.conf,两个从节点配置一致(所属目录/docker/redis/conf)
# 1. 开启后台模式(容器-d启动,这里一定要设置no)
daemonize no
# 2.注释掉回环地址限制
#bind 127.0.0.1@
# 3.关闭保护模式
protected-mode no
# 4.指定端口
port 6379
# 5.指定当前工作目录(配置文件和快照文件路径)
dir /data
# 6.pid进程文件名字
pidfile /var/run/redis_6379.pid
# 7.log文件名字
logfile "/var/log/redis/redis.log"
# 8.redis密码
requirepass 123456
# 9.快照文件路径
dbfilename dump6379.rdb

 # 10.设置主 Redis 实例的信息
 replicaof 192.168.10.110 6379
 # 11.设置主 Redis 认证信息
 masterauth "123456"

4. Sentinel配置

三个sentinel.conf配置一样,

#服务监听地址,用于客户端连接,默认本机地址
bind 0.0.0.0
#docker以-d启动,这里必须设置为no
daemonize no
#安全保护模式
protected-mode no
#哨兵端口
port 26370
#日志文件路径
logfile "/var/log/redis/sentinel.log"
#pid文件路径
pidfile /var/run/sentinel.pid
#工作目录
dir /data
#设置要监控的master服务器,quorum表示最少有几个哨兵认可客观下线,同意故障迁移的法定票数
sentinel monitor mymaster 192.168.10.111 6379 2
#master设置了密码,连接master服务的密码
sentinel auth-pass mymaster 123456

5. Redis容器和Sentinel容器构建命令

  • redis 容器实例构建命令(三台服务器都执行)
docker run -d --name myredis \
--restart=always \
--privileged=true \
--network=host \
-v /docker/redis/conf:/etc/redis \
-v /docker/redis/data:/data \
-v /docker/redis/logs:/var/log/redis \
redis redis-server /etc/redis/redis.conf
  • sentinel 容器实例构建命令(三台服务器都执行)
docker run -d --name mysentinel \
--restart=always \
--privileged=true \
--network=host \
-v /docker/redis/conf:/etc/redis \
-v /docker/redis/data:/data \
-v /docker/redis/logs:/var/log/redis \
redis redis-sentinel /etc/redis/sentinel.conf

构建命令遇到问题的几处进行说明:

- 配置文件挂载目录(`-v /docker/redis/conf:/etc/redis`),挂载具体配置文件会涉及权限问题,故障迁移过程中会修改redis.conf和sentinel.conf

- 日志文件挂载目录(`-v /docker/redis/logs:/var/log/redis`),挂载具体日志文件会涉及权限问题

- 网络配置选host(`--network=host`),生产环境中我遇到过docker网络会代理一层,性能会有损耗,redis哨兵模式对性能有一定的要求,这个仅仅是个人观点

你可能感兴趣的:(Redis,Docker,redis,docker,数据库,redis哨兵)