Press "Enter" to skip to content

利用docker实现redis 哨兵机制

环境介绍:centos 7 阿里云服务器一台
1. 架构介绍:一主三从+三个哨兵节点
2. 创建docker容器。前提是已经拉取了redis镜像。

docker run -itd --name redis-master1 --network mynetwork --ip 172.10.0.5 -p 6380:6379 redis
docker run -itd --name redis-slave1 --network mynetwork --ip 172.10.0.6 -p 6381:6379 redis
.....

利用以上命令创建出7个docker redis容器
3. 配置redis服务器中redis.conf文件,搭建出一主二从的主从结构。
配置点:

docker exec -it slave1 bash
vi /etc/redis.conf
在从节点配置 slaveof 172.10.0.2 6379

redis-service ./etc/redis.conf & //启动redis
  1. 同样的原理进入哨兵节点的配置文件。
    sentinel monitor mymaster 172.10.0.5 6379 2
    监控主节点的ip 端口以及至少有几台哨兵节点来监视。
docker exec -it sentinel1 bash
vi /etc/redis-sentinel.conf
在配置文件中修改 绑定ip
bind 0.0.0.0
sentinel monitor mymaster 172.10.0.5 6379 2
protected-mode no
  1. 启动哨兵
redis-sentinel ./etc/redis-sentinel.conf &
  1. 查看是否配置成功。可以查看哨兵的日志文件
vi /var/log/redis/sentinel.log

可以看到哨兵已经发现了主节点下的从节点,和其他两个哨兵节点

28:X 12 Dec 09:44:22.729 # Sentinel ID is e4e7a0bf57c9c7b10a3ddb8c03db6cda87c4a043
28:X 12 Dec 09:44:22.729 # +monitor master mymaster 172.10.0.5 6379 quorum 2
28:X 12 Dec 09:44:22.730 * +slave slave 172.10.0.6:6379 172.10.0.6 6379 @ mymaster 172.10.0.5 6379
28:X 12 Dec 09:44:22.732 * +slave slave 172.10.0.7:6379 172.10.0.7 6379 @ mymaster 172.10.0.5 6379
28:X 12 Dec 09:44:22.858 * +sentinel sentinel ef1db99c23d6d9798148084cac885d0fe621c9f9 172.10.0.9 26379 @ mymaster 172.10.0.5 6379
28:X 12 Dec 09:44:23.123 * +sentinel sentinel a2c4fb912708f6a80da24e1f7c64b9203f0e0dc1 172.10.0.8 26379 @ mymaster 172.10.0.5 6379
  1. 测试。我们干掉主节点,看下哨兵是否可以推选出新出得主节点。
docker stop redis-master1

然后去从节点的redis下查看

info replication

可以看到,172.10.0.11已经成为了新的主节点

127.0.0.1:6379> info replication
# Replication
role:slave
master_host:172.10.0.11
master_port:6379
master_link_status:up
master_last_io_seconds_ago:1
master_sync_in_progress:0
slave_repl_offset:3347
slave_priority:100
slave_read_only:1
connected_slaves:0
master_repl_offset:0
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0

我们重新启动原来的主节点(被我们干掉的主节点)打开sentinel的日志,可以看到原来的主节点(172.10.0.5)已经自动加入到了主从结构中并且成为了从节点

31:X 12 Dec 09:54:25.118 # +switch-master mymaster 172.10.0.5 6379 172.10.0.11 6379
31:X 12 Dec 09:54:25.118 * +slave slave 172.10.0.6:6379 172.10.0.6 6379 @ mymaster 172.10.0.11 6379
31:X 12 Dec 09:54:25.118 * +slave slave 172.10.0.7:6379 172.10.0.7 6379 @ mymaster 172.10.0.11 6379
31:X 12 Dec 09:54:25.118 * +slave slave 172.10.0.5:6379 172.10.0.5 6379 @ mymaster 172.10.0.11 6379

Be First to Comment

发表评论

电子邮件地址不会被公开。 必填项已用*标注