• Docker下redis的主从配置


    1、拉取redis镜像
    docker pull redis
    2、启动3个redis容器服务,分别使用到6379、6380、6381端口
    docker run --name redis-6379 -p 6379:6379 -d redis
    docker run --name redis-6380 -p 6380:6379 -d redis
    docker run --name redis-6381 -p 6381:6379 -dredis
    3、查看容器
    [tcy@tcy1 ~]$ docker ps -a
    CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
    a9fa77adc598 daocloud.io/library/redis "docker-entrypoint.s 2 hours ago Up 2 hours 0.0.0.0:6381->6379/tcp redis-6381
    6ee2f2f007e6 daocloud.io/library/redis "docker-entrypoint.s 2 hours ago Up 2 hours 0.0.0.0:6380->6379/tcp redis-6380
    ab54741166e1 daocloud.io/library/redis "docker-entrypoint.s 3 hours ago Up 3 hours 0.0.0.0:6379->6379/tcp redis-6379
    4、测试容器,成功
    docker exec -it ab54741166e1 redis-cli:进入容器

    [root@tcy1 tcy]# docker exec -it ab54741166e1 redis-cli
    127.0.0.1:6379> set b tcy
    OK
    127.0.0.1:6379> get b
    "tcy"
    127.0.0.1:6379> quit[root@tcy1 tcy]#
    5、开始redis集群配置
    5.1、看容器内网的ip地址

    [root@tcy1 tcy]# docker inspect a9fa77adc598
    在这里插入图片描述
    3个redis的内网ip地址为:

    redis-6379:172.17.0.1:6379
    redis-6380:172.17.0.2:6379
    redis-6381:172.17.0.3:6379
    5.2、进入docker容器内部,查看当前redis角色(主还是从)

    [root@tcy1 tcy]# docker exec -it ab54741166e1 /bin/bash
    root@ab54741166e1:/data# redis-cli
    127.0.0.1:6379> info replication
    # Replication
    role:master
    connected_slaves:0
    master_replid:d43d1ae8cde6cb084220e18b926aba79e0bb2504
    master_replid2:0000000000000000000000000000000000000000
    master_repl_offset:0
    second_repl_offset:-1
    repl_backlog_active:0
    repl_backlog_size:1048576
    repl_backlog_first_byte_offset:0
    repl_backlog_histlen:0
    127.0.0.1:6379> quit
    root@ab54741166e1:/data# exit
    exit
    目前三个都是master状态
    5.3、使用redis-cli命令修改redis-6380、redis-6381的主机为172.17.0.1:6379

    [root@tcy1 tcy]# docker exec -it a9fa77adc598 /bin/bash //redis-6380
    root@a9fa77adc598:/data# redis-cli
    127.0.0.1:6379> SLAVEOF 172.17.0.1 6379
    OK
    127.0.0.1:6379> quit
    root@a9fa77adc598:/data# exit
    exit
    [root@tcy1 tcy]# docker exec -it 6ee2f2f007e6 /bin/bash //redis-6381
    root@6ee2f2f007e6:/data# redis-cli
    127.0.0.1:6379> SLAVEOF 172.17.0.1 6379
    OK
    127.0.0.1:6379> quit
    5.4、查看redis-6379是否已经拥有2个从机,connected_slaves:2,是的

    [root@tcy1 tcy]# docker exec -it ab54741166e1 /bin/bash
    root@ab54741166e1:/data# redis-cli
    127.0.0.1:6379> info replication
    # Replication
    role:master
    connected_slaves:2
    slave0:ip=172.17.0.3,port=6379,state=online,offset=378,lag=1
    slave1:ip=172.17.0.2,port=6379,state=online,offset=378,lag=0
    master_replid:ce193b15cfd57f7dc3ccfbf2a4aef6156b131e6d
    master_replid2:0000000000000000000000000000000000000000
    master_repl_offset:378
    second_repl_offset:-1
    repl_backlog_active:1
    repl_backlog_size:1048576
    repl_backlog_first_byte_offset:1
    repl_backlog_histlen:378
    127.0.0.1:6379> quit
    root@ab54741166e1:/data# exit
    exit
    5.5、配置Sentinel哨兵
    进入3台redis容器内部进行配置,在容器根目录里面创建sentinel.conf文件

    文件内容为: sentinel monitor mymaster 172.17.0.1 6379 1
    [root@tcy1 tcy]# docker exec -it a9fa77adc598 /bin/bash
    root@a9fa77adc598:/data# cd / && touch sentinel.conf
    root@a9fa77adc598:/# vim /sentinel.conf
    如果出现:bash: vim: command not found

    解决:1、apt-get update 2、apt-get install vim

    最后,启动Redis哨兵:

    root@a9fa77adc598:/# redis-sentinel /sentinel.conf
    342:X 24 Jun 11:37:58.934 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
    342:X 24 Jun 11:37:58.957 # Redis version=4.0.10, bits=64, commit=00000000, modified=0, pid=342, just started
    342:X 24 Jun 11:37:58.958 # Configuration loaded
    342:X 24 Jun 11:37:58.959 # You requested maxclients of 10000 requiring at least 10032 max file descriptors.
    342:X 24 Jun 11:37:58.959 # Server can't set maximum open files to 10032 because of OS error: Operation not permitted.
    342:X 24 Jun 11:37:58.960 # Current maximum open files is 4096. maxclients has been reduced to 4064 to compensate for low ulimit. If you need higher maxclients increase 'ulimit -n'.
    _._
    _.-``__ ''-._
    _.-`` `. `_. ''-._ Redis 4.0.10 (00000000/0) 64 bit
    .-`` .-```. ```/ _.,_ ''-._
    ( ' , .-` | `, ) Running in sentinel mode
    |`-._`-...-` __...-.``-._|'` _.-'| Port: 26379
    | `-._ `._ / _.-' | PID: 342
    `-._ `-._ `-./ _.-' _.-'
    |`-._`-._ `-.__.-' _.-'_.-'|
    | `-._`-._ _.-'_.-' | http://redis.io
    `-._ `-._`-.__.-'_.-' _.-'
    |`-._`-._ `-.__.-' _.-'_.-'|
    | `-._`-._ _.-'_.-' |
    `-._ `-._`-.__.-'_.-' _.-'
    `-._ `-.__.-' _.-'
    `-._ _.-'
    `-.__.-'

    342:X 24 Jun 11:37:59.068 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
    342:X 24 Jun 11:37:59.089 # Sentinel ID is dfd5a5bfe1036b1df3395c4ba858329034fc5b7e
    342:X 24 Jun 11:37:59.091 # +monitor master mymaster 172.17.0.1 6379 quorum 1
    342:X 24 Jun 11:37:59.110 * +slave slave 172.17.0.3:6379 172.17.0.3 6379 @ mymaster 172.17.0.1 6379
    342:X 24 Jun 11:37:59.115 * +slave slave 172.17.0.2:6379 172.17.0.2 6379 @ mymaster 172.17.0.1 6379

    342:X 24 Jun 11:39:27.601 * +sentinel sentinel ba9b0d0539d8273edfcbd922fe138f50daa78bbb 172.17.0.2 26379 @ mymaster 172.17.0.1 6379
    342:X 24 Jun 11:41:59.144 * +sentinel sentinel f0510f8582b72c056531f219397ed8826683e665 172.17.0.1 26379 @ mymaster 172.17.0.1 6379
    便于观察,开多个窗口。

    在这里插入图片描述
    Sentinel哨兵配置完毕
    5.6、测试

    关闭Master

    [tcy@tcy1 ~]$ docker stop ab54741166e1
    ab54741166e1
    这时,剩余的2个从机,会自动选举产生新的主机,这里选举172.17.0.2为主机。
    在这里插入图片描述
    查看172.17.0.2,变成了主机。

    [root@tcy1 /]# docker exec -it 6ee2f2f007e6 /bin/bash
    root@6ee2f2f007e6:/data# redis-cli
    127.0.0.1:6379> info replication
    # Replication
    role:master
    connected_slaves:1
    slave0:ip=172.17.0.3,port=6379,state=online,offset=66906,lag=1
    master_replid:5a7489c8181ddf0d73d418d30d6a4c8e039198ba
    master_replid2:ce193b15cfd57f7dc3ccfbf2a4aef6156b131e6d
    master_repl_offset:67041
    second_repl_offset:65534
    repl_backlog_active:1
    repl_backlog_size:1048576
    repl_backlog_first_byte_offset:85
    repl_backlog_histlen:66957
    127.0.0.1:6379>
    完毕!!!!!!!!!

  • 相关阅读:
    Atitit 引流矩阵与矩阵引流 推广方法 attilax总结
    Atitit 怎么阅读一本书 消化 分析 检索 attilax总结 1. 读书的本质 是数据的处理,大量的数据,处理能力有限的大脑 2 2. ETL数据清洗转换 摘要,缩小数据规模 2 2.1
    Atitit 为什么要读书,读书的好处是什么 attilax总结
    Atititi. naming spec 联系人命名与remark备注指南规范v5 r99.docx
    Atitit 安全规范 指南 常见五种意外防止规范 attilax总结
    数据安全 密码学原理与概论
    Atitit 理财之道分期与利率的比较列表 attilax总结
    Atitit 完整知识体系表 attilax总结 要读哪些书
    Atitit 为什么互联网机会这么大
    Atitit 建立新组织集团模型的框架基本制度与一些原则
  • 原文地址:https://www.cnblogs.com/hyhy904/p/11072359.html
Copyright © 2020-2023  润新知