宝塔docker搭建redis哨兵

一、搭建哨兵之前先要去搭建主从,如果你以完成主从搭建,那么开始搭建哨兵。

二、搭建哨兵:

          //627a2368c865随即切换主、从id

     进入容器:docker exec -it 627a2368c865 /bin/bash  

  在每个容器中安装vim,psutils

        #需要进入容器中执行,完成三步安装(过程有可能比较慢,需要慢慢等待)

              apt-get update

              apt-get install vim

              apt-get install procps

 在每个容器中创建哨兵文件

              //创建哨兵文件sentinel.conf

               touch sentinel.conf

             //创建完编辑哨兵文件

                vim sentinel.conf

           //在sentinel.conf添加如下代码

               port 26379

              daemonize yes

              logfile "sentinel.log"

              sentinel monitor mymaster 172.17.0.2 6379 2

          其中,sentinel monitor mymaster 172.17.0.2 6379 2配置的含义是:该哨兵节点监控172.17.0.2:6379这个主节点,该主节点的名称是mymaster,最后的2的含义与主节点的故障判定有关:至少需要2个哨兵节点同意,才能判定主节点故障并进行故障转移。

启动哨兵(每个节点都需要启动)

哨兵节点的启动有两种方式,二者作用是完全相同的(二选其一):

       redis-sentinel sentinel.conf

       redis-server sentinel --sentinel

下面可以看到redis-sentinel已经启动

      root@7d4124eb4f7b:/data# ps -ef

     127.0.0.1:26379> info sentinel

      # Sentinel

      sentinel_masters:1

      sentinel_tilt:0 

     sentinel_running_scripts:0

     sentinel_scripts_queue_length:0

     sentinel_simulate_failure_flags:0

    master0:name=mymaster,status=ok,address=172.17.0.2:6379,slaves=2,sentinels=3

   127.0.0.1:26379>

到这里(exit)退出,可以去把从的也配置一下,操作和上面的一样,上面配置完毕继续往下操作。

 演示故障转移

   [root@aliyun ~]# docker stop redis-master

   redis-master

  随便进入一个slave节点内部

  [root@aliyun ~]# docker exec -it redis-slave-2 /bin/bash

 root@7d4124eb4f7b:/data# redis-cli

 127.0.0.1:6379> info replication

 # Replication

 role:slave

 master_host:172.17.0.2

 master_port:6379

master_link_status:down(这里可以看到master状态为down)

master_last_io_seconds_ago:-1

master_sync_in_progress:0

slave_repl_offset:149730

master_link_down_since_seconds:14

slave_priority:100

slave_read_only:1

connected_slaves:0

master_replid:afd4ad72b47ce253b15470232f20ae5e4f768b29

master_replid2:0000000000000000000000000000000000000000

master_repl_offset:149730

second_repl_offset:-1

repl_backlog_active:1

repl_backlog_size:1048576

repl_backlog_first_byte_offset:43

repl_backlog_histlen:149688

redis主节点挂掉,两个slave会进行选举,时间为30秒

再将之前的master节点start,会发现之前的master已经成为slave节点

[root@aliyun ~]# docker start redis-master

[root@aliyun ~]# docker exec -it redis-master /bin/bash

root@fb8299058ead:/data# redis-cli

127.0.0.1:6379> info replication

# Replication

role:slave

master_host:172.17.0.3

master_port:6379

master_link_status:up

master_last_io_seconds_ago:1

master_sync_in_progress:0

进去当前的master节点看下当前信息

[root@aliyun ~]# docker exec -it redis-slave-1 /bin/bash

root@38493fef3e03:/data# redis-cli

127.0.0.1:6379> info replication

# Replication

role:master

connected_slaves:2

slave0:ip=172.17.0.4,port=6379,state=online,offset=268053,lag=1 slave1:ip=172.17.0.2,port=6379,state=online,offset=268053,lag=1 master_replid:c9bea460cf62fdc27109798770e115609594e541 master_replid2:afd4ad72b47ce253b15470232f20ae5e4f768b29

master_repl_offset:268323 second_repl_offset:149731

repl_backlog_active:1

repl_backlog_size:1048576

repl_backlog_first_byte_offset:1

repl_backlog_histlen:268323 127.0.0.1:6379> info sentinel

127.0.0.1:6379> exit

root@38493fef3e03:/data# redis-cli -p 26379

127.0.0.1:26379> info sentinel

# Sentinel

sentinel_masters:1

sentinel_tilt:0

sentinel_running_scripts:0

sentinel_scripts_queue_length:0

sentinel_simulate_failure_flags:0 master0:name=mymaster,status=ok,address=172.17.0.3:6379,slaves=2,sentinels=3 127.0.0.1:26379>

到此就结束了!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值