Docker搭建Redis主从集群,哨兵监控


王珂 49186456@qq.com 2019/07/09


简介

本文介绍如何使用Docker搭建Redis主从集群,并且通过哨兵监控集群状态,当主发生故障时,自动从备中选举出新的主。

我们将搭建一个1主2从的Redis集群,通过3个哨兵进行监控。

准备

环境准备

  1. 一台linux服务器,IP:192.168.1.117,安装CentOS7
  2. CentOS7上安装好Docker

创建redis容器

创建redis容器目录

我们将使用Docker创建3个Redis容器:redis-01,redis-02,redis-03。redis-01容器的目录结构如下,redis-02,redis-03与之相同。
假设我们在 /opt/redis/redis-5.0.4目录下创建了redis-01目录
redis-01/
/conf
/data
conf 目录存放redis配置文件redis.conf
data 目前存放redis数据(dump或appendonly.aof)

最后,我们创建的目录如下:
在这里插入图片描述

准备redis配置文件

我们将每个redis容器的配置文件都放在了其容器目录的conf目录下。

redis-01容器的配置文件
redis-01/conf/redis.conf进行如下修改:

  1. 注释掉IP绑定 #bind 127.0.0.1
  2. 端口设置为 port 6379
  3. pidfile 为 pidfile /var/run/redis_6379.pid

redis-02容器的配置文件
redis-02/conf/redis.conf进行如下修改:

  1. 注释掉IP绑定 #bind 127.0.0.1
  2. 端口设置为 port 6380
  3. pidfile 为 pidfile /var/run/redis_6380.pid
  4. 设置主服务器 replicaof 192.168.1.117 6379

redis-03容器的配置文件
redis-03/conf/redis.conf进行如下修改:

  1. 注释掉IP绑定 #bind 127.0.0.1
  2. 端口设置为 port 6381
  3. pidfile 为 pidfile /var/run/redis_6381.pid
  4. 设置主服务器 replicaof 192.168.1.117 6379

生成redis容器

redis-01容器
docker run -p 6379:6379 -v /opt/redis/redis-5.0.4/redis-01/conf/redis.conf:/usr/local/etc/redis/redis.conf -v /opt/redis/redis-5.0.4/redis-01/data:/data -d --name redis-01 --restart=always --network=host --privileged=true redis:5.0.4 redis-server /usr/local/etc/redis/redis.conf --appendonly yes

redis-02容器
docker run -p 6380:6380 -v /opt/redis/redis-5.0.4/redis-02/conf/redis.conf:/usr/local/etc/redis/redis.conf -v /opt/redis/redis-5.0.4/redis-02/data:/data -d --name redis-02 --restart=always --network=host --privileged=true redis:5.0.4 redis-server /usr/local/etc/redis/redis.conf --appendonly yes

redis-03容器
docker run -p 6381:6381 -v /opt/redis/redis-5.0.4/redis-03/conf/redis.conf:/usr/local/etc/redis/redis.conf -v /opt/redis/redis-5.0.4/redis-03/data:/data -d --name redis-03 --restart=always --network=host --privileged=true redis:5.0.4 redis-server /usr/local/etc/redis/redis.conf --appendonly yes

创建哨兵容器

创建哨兵容器目录

还将再创建3个哨兵容器sentinel-01,sentinel-02,sentine-03。sentinel-01哨兵容器的目录结构如下,sentinel-02, sentinel-03与之相同。
假设我们在 /opt/redis/redis-5.0.4目录下创建了sentinel-01目录
sentinel-01/
/conf
conf 目录存放sentinel的配置文件

修改哨兵配置文件

sentinel-01/conf/sentinel.conf进行如下修改:

  1. 注释掉IP绑定 #bind 127.0.0.1
  2. 注释掉保护模式 #protected-mode no
  3. 端口修改为 26379

sentinel-02/conf/sentinel.conf进行如下修改:

  1. 注释掉IP绑定 #bind 127.0.0.1
  2. 注释掉保护模式 #protected-mode no
  3. 端口修改为 26380

sentinel-03/conf/sentinel.conf进行如下修改:

  1. 注释掉IP绑定 #bind 127.0.0.1
  2. 注释掉保护模式 #protected-mode no
  3. 端口修改为 26381

生成哨兵容器

sentinel-01容器
docker run -it --name sentinel-01 -p 26379:26379 -v /opt/redis/redis-5.0.4/sentinel-01/conf/sentinel.conf:/usr/local/etc/redis/sentinel.conf -d --restart=always --network=host --privileged redis:5.0.4 redis-sentinel /usr/local/etc/redis/sentinel.conf

sentinel-02容器
docker run -it --name sentinel-02 -p 26380:26380 -v /opt/redis/redis-5.0.4/sentinel-02/conf/sentinel.conf:/usr/local/etc/redis/sentinel.conf -d --restart=always --network=host --privileged redis:5.0.4 redis-sentinel /usr/local/etc/redis/sentinel.conf

sentinel-03容器
docker run -it --name sentinel-03 -p 26381:26381 -v /opt/redis/redis-5.0.4/sentinel-03/conf/sentinel.conf:/usr/local/etc/redis/sentinel.conf -d --restart=always --network=host --privileged redis:5.0.4 redis-sentinel /usr/local/etc/redis/sentinel.conf

结果

Docker 容器

最终的docker容器如下
在这里插入图片描述

Docker容器状态

redis-01
在这里插入图片描述
redis-02
在这里插入图片描述

redis-03
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值