zoukankan      html  css  js  c++  java
  • redis哨兵模式的使用

    实验规划

    master节点:    10.0.0.81
    slave1节点:    10.0.0.82
    slave2节点:    10.0.0.83
    
    requirepass:   123456
    masterpass:    123456
    

    搭建主从复制

    安装redis

    [root@centos81 ~]#dnf -y install redis
    

    修改主节点配置

    [root@centos81 ~]#vim /etc/redis.conf
    
    bind 0.0.0.0
    masterauth "123456"
    requirepass "123456"
    

    修改两个从节点配置

    [root@centos82 ~]#vim /etc/redis.conf
    
    bind 0.0.0.0
    masterauth "123456"
    requirepass "123456"
    replicaof 10.0.0.81 6379
    

    启动redis服务,查看各节点状态

    [root@centos81 ~]#systemctl enable --now redis
    
    # master节点
    [root@centos81 ~]#redis-cli -a 123456 info replication
    # Replication
    role:master
    connected_slaves:2
    slave0:ip=10.0.0.82,port=6379,state=online,offset=70,lag=0
    slave1:ip=10.0.0.83,port=6379,state=online,offset=70,lag=1
    master_replid:f923c2c31d83fde2b96794fbfe112e1a240d4103
    master_replid2:0000000000000000000000000000000000000000
    master_repl_offset:70
    second_repl_offset:-1
    repl_backlog_active:1
    repl_backlog_size:1048576
    repl_backlog_first_byte_offset:1
    repl_backlog_histlen:70
    
    # slave1节点
    [root@centos82 ~]#redis-cli -a 123456 info replication
    # Replication
    role:slave
    master_host:10.0.0.81
    master_port:6379
    master_link_status:up
    master_last_io_seconds_ago:1
    master_sync_in_progress:0
    slave_repl_offset:42
    slave_priority:100
    slave_read_only:1
    connected_slaves:0
    master_replid:f923c2c31d83fde2b96794fbfe112e1a240d4103
    master_replid2:0000000000000000000000000000000000000000
    master_repl_offset:42
    second_repl_offset:-1
    repl_backlog_active:1
    repl_backlog_size:1048576
    repl_backlog_first_byte_offset:15
    repl_backlog_histlen:28
    
    # slave2节点
    [root@centos83 ~]#redis-cli -a 123456 info replication
    # Replication
    role:slave
    master_host:10.0.0.81
    master_port:6379
    master_link_status:up
    master_last_io_seconds_ago:3
    master_sync_in_progress:0
    slave_repl_offset:2338
    slave_priority:100
    slave_read_only:1
    connected_slaves:0
    master_replid:f923c2c31d83fde2b96794fbfe112e1a240d4103
    master_replid2:0000000000000000000000000000000000000000
    master_repl_offset:2338
    second_repl_offset:-1
    repl_backlog_active:1
    repl_backlog_size:1048576
    repl_backlog_first_byte_offset:2325
    repl_backlog_histlen:14
    

    搭建哨兵

    修改各节点哨兵配置文件

    [root@centos8 ~]#vim /etc/redis-sentinel.conf
    
    # 修改以下两处即可
    
    # mymaster是集群的名称,数字2的意思是当有2个哨兵认为master挂了,就要进行故障转移。一般设置为集群哨兵数量一半以上。 
    sentinel monitor mymaster 10.0.0.81 6379 2
    
    # 集群名称和密码  
    sentinel auth-pass mymaster 123456
    

    启动哨兵

    [root@centos81 ~]#systemctl enable --now redis-sentinel.service
    [root@centos82 ~]#systemctl enable --now redis-sentinel.service
    [root@centos83 ~]#systemctl enable --now redis-sentinel.service
    
    # 启动哨兵后,会自动在配置文件中生成myid
    [root@centos82 ~]#grep myid /etc/redis-sentinel.conf
    sentinel myid d35c5133b9cccc244cdc8da0f73f5126e98c1a17
    
    # 查看下端口
    [root@centos82 ~]#ss -nlt
    State      Recv-Q     Send-Q         Local Address:Port          Peer Address:Port
    LISTEN     0          128                  0.0.0.0:26379              0.0.0.0:*
    LISTEN     0          128                  0.0.0.0:6379               0.0.0.0:*
    LISTEN     0          128                  0.0.0.0:22                 0.0.0.0:*
    LISTEN     0          128                     [::]:26379                 [::]:*
    LISTEN     0          128                     [::]:22                    [::]:*
    
    # 查看下日志
    [root@centos82 ~]#tail -f /var/log/redis/sentinel.log
    3546:X 26 Oct 2020 20:10:55.986 # Configuration loaded
    3546:X 26 Oct 2020 20:10:55.986 * supervised by systemd, will signal readiness
    3546:X 26 Oct 2020 20:10:55.986 * Running mode=sentinel, port=26379.
    3546:X 26 Oct 2020 20:10:55.987 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
    3546:X 26 Oct 2020 20:10:55.987 # Sentinel ID is d35c5133b9cccc244cdc8da0f73f5126e98c1a17
    3546:X 26 Oct 2020 20:10:55.987 # +monitor master mymaster 10.0.0.81 6379 quorum 2
    3546:X 26 Oct 2020 20:10:55.988 * +slave slave 10.0.0.82:6379 10.0.0.82 6379 @ mymaster 10.0.0.81 6379
    3546:X 26 Oct 2020 20:10:55.988 * +slave slave 10.0.0.83:6379 10.0.0.83 6379 @ mymaster 10.0.0.81 6379
    3546:X 26 Oct 2020 20:11:14.006 * +sentinel sentinel 79b37bb5b002862c3e22834c31798e317ddf4661 10.0.0.81 26379 @ mymaster 10.0.0.81 6379
    3546:X 26 Oct 2020 20:11:15.887 * +sentinel sentinel b4e7faf60185093b418bd02a0a4c0b644253e2eb 10.0.0.82 26379 @ mymaster 10.0.0.81 6379
    
    # 查看sentinel状态
    [root@centos82 ~]#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=10.0.0.81:6379,slaves=2,sentinels=3
    

    测试故障转移

    # 杀死master
    [root@centos81 ~]#killall redis-server
    
    # 查看log
    [root@centos81 ~]#tail /var/log/redis/sentinel.log
    1960:X 26 Oct 2020 20:18:41.351 # +sdown master mymaster 10.0.0.81 6379
    1960:X 26 Oct 2020 20:18:41.432 # +new-epoch 1
    1960:X 26 Oct 2020 20:18:41.433 # +vote-for-leader d35c5133b9cccc244cdc8da0f73f5126e98c1a17 1
    1960:X 26 Oct 2020 20:18:42.440 # +odown master mymaster 10.0.0.81 6379 #quorum 3/2
    1960:X 26 Oct 2020 20:18:42.440 # Next failover delay: I will not start a failover before Mon Oct 26 20:24:41 2020
    1960:X 26 Oct 2020 20:18:42.561 # +config-update-from sentinel d35c5133b9cccc244cdc8da0f73f5126e98c1a17 10.0.0.81 26379 @ mymaster 10.0.0.81 6379
    1960:X 26 Oct 2020 20:18:42.561 # +switch-master mymaster 10.0.0.81 6379 10.0.0.83 6379
    1960:X 26 Oct 2020 20:18:42.561 * +slave slave 10.0.0.82:6379 10.0.0.82 6379 @ mymaster 10.0.0.83 6379
    1960:X 26 Oct 2020 20:18:42.561 * +slave slave 10.0.0.81:6379 10.0.0.81 6379 @ mymaster 10.0.0.83 6379
    1960:X 26 Oct 2020 20:18:45.582 # +sdown slave 10.0.0.81:6379 10.0.0.81 6379 @ mymaster 10.0.0.84 6379
    
    # 故障转移成功后配置文件自动修改
    [root@centos81 ~]#grep replicaof /etc/redis.conf
    # Master-Replica replication. Use replicaof to make a Redis instance a copy of
    # replicaof <masterip> <masterport>
    replicaof 10.0.0.83 6379
    
    [root@centos82 ~]#grep mymaster /etc/redis-sentinel.conf
    # sentinel auth-pass mymaster MySUPER--secret-0123passw0rd
    sentinel monitor mymaster 10.0.0.83 6379 2
    
    # 重新启动原来的master节点10.0.0.81
    # 自动变为新master节点10.0.0.83的从节点
    [root@centos81 ~]#systemctl start redis
    [root@centos81 ~]#redis-cli -a 123456 info replication
    Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
    # Replication
    role:slave
    master_host:10.0.0.83
    master_port:6379
    master_link_status:up
    master_last_io_seconds_ago:0
    master_sync_in_progress:0
    slave_repl_offset:1220288
    slave_priority:100
    slave_read_only:1
    connected_slaves:0
    master_replid:243f5d53ed324410a7b089cc3339ddc2ff794b27
    master_replid2:0000000000000000000000000000000000000000
    master_repl_offset:1220288
    second_repl_offset:-1
    repl_backlog_active:1
    repl_backlog_size:1048576
    repl_backlog_first_byte_offset:171713
    repl_backlog_histlen:1048576
    

    以上

  • 相关阅读:
    进程的实践与练习2
    士兵队列训练问题
    大数相加
    Ignatius and the Princess II
    Parentheses Balance (括号平衡)---栈
    简单计算器
    C++全排列函数next_permutation()和prev_permutation()
    黑白图像
    9*9乘法表
    输入5 个数按从小到大的顺序输出
  • 原文地址:https://www.cnblogs.com/wuvikr/p/13881654.html
Copyright © 2011-2022 走看看