使用docker 搭建 redis 的 1主2从3哨兵

redis主从搭建+哨兵(docker):
    """推荐使用国内daocloud镜像,镜像地址:daocloud.io/library/"""
    1. # 拉取镜像
       docker pull daocloud.io/library/redis:latest

    2. # 使用docker启动3个redis容器服务,分别使用到6379、6380、6381端口
       docker run --name redis6379 -p 6379:6379 -d daocloud.io/library/redis --appendonly yes
       docker run --name redis6380 -p 6380:6379 -d daocloud.io/library/redis --appendonly yes
       docker run --name redis6381 -p 6381:6379 -d daocloud.io/library/redis --appendonly yes

    3. # 查看3个容器的IP
       docker inspect --format='{{.NetworkSettings.IPAddress}}' redis6379
       docker inspect --format='{{.NetworkSettings.IPAddress}}' redis6380
       docker inspect --format='{{.NetworkSettings.IPAddress}}' redis6381

       172.17.0.4 redis6379   # master
       172.17.0.5 redis6380   # slave1
       172.17.0.6 redis6381   # slave2

    4. #进入docker容器内部, 使用redis-cli命令修改 redis6380、redis6381 的主机为 172.17.0.4:6379
       docker exec -ti 容器id /bin/bash  # 进入docker容器内部
       redis-cli
       SLAVEOF 172.17.0.4 6379

    5. # 查看redis6379是否已经拥有2个从机:
       127.0.0.1:6379> info replication
       role:maste
       connected_slaves:2
       slave0:ip=172.17.0.6,port=6379,state=online,offset=224,lag=0
       slave1:ip=172.17.0.5,port=6379,state=online,offset=224,lag=1
       master_replid:e65a5e233e9caa53a3e2d1d17e3622be2bc70de9
       master_replid2:0000000000000000000000000000000000000000
       master_repl_offset:224
       second_repl_offset:-1
       repl_backlog_active:1
       repl_backlog_size:1048576
       repl_backlog_first_byte_offset:1
       repl_backlog_histlen:224

    # 哨兵
        1. 接下来直接进入3台redis容器内部进行配置。
           docker exec -ti 容器id /bin/bash  # 进入docker容器内部

        2. 进入根目录创建 sentinel.conf 文件
           cd / && touch sentinel.conf

        3. 修改文件内容为, 每一台配置完全一样:
           sentinel monitor mymaster 172.17.0.4 6379 1

        4. 最后,启动Redis哨兵:
           使用 "redis-sentinel /sentinel.conf &" 启动Redis哨兵监控
           使用 "ps -ef |grep redis" 命令,可以看到redis-server和redis-sentinel正在运行

        5. 验证哨兵机制下的自动主从切换
           我们将主 redis6379 进程kill掉。 # 停止redis6379容器
           稍等几秒钟后,就有另外一台从升级为主机,实验时是 redis6380 升级为了主。   # 切换过程有点慢,大公司不能容忍,必须要cluster集群。
           用info命令查询可以看到 redis6380 服务器的角色变成的master。说明自动主从切换成功。
           然后重新启动之前被kill掉的 主 redis6379 服务器,启动后用info命令查看,可以发现其变成了 redis6380 的从服务器。






 

发布了41 篇原创文章 · 获赞 18 · 访问量 3万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章