zoukankan      html  css  js  c++  java
  • redis哨兵环境搭建

    Redis Sentinel(哨兵)

    Redis Sentinel保证了Redis的高可用性。实际上,这意味着使用Sentinel可以创建一个Redis部署,可以在没有人为干预的情况下抵抵抗某些类型的故障。
    1、监控:Sentinel会不断检查主实例和从属实例是否按预期工作。
    2、通知:如果redis服务发生故障,Sentinel可以通过api通知系统管理员
    3、自动故障转移:如果主服务器未按预期工作,Sentinel可以启动故障转移过程,其中从服务器升级为主服务器,其他其他服务器重新配置为使用新主服务器,并且使用Redis服务器的应用程序通知有关新服务器的地址。

    配置Sentinel

    1、首先准备三个redis实列一主二从
    ①实例一(主服务器)创建配置文件6379.conf,在里面写入以下内容:

    port 6379
    daemonize yes
    pidfile /data/6379/redis.pid
    loglevel notice
    logfile "/data/6379/redis.log"
    dbfilename dump.rdb
    dir /data/6379
    protected-mode no
    

    ②实例二(从服务器)创建配置文件6380.conf,在里面写入以下内容:

    port 6380
    daemonize yes
    pidfile /data/6380/redis.pid
    loglevel notice
    logfile "/data/6380/redis.log"
    dbfilename dump.rdb
    dir /data/6380
    protected-mode no
    slaveof 127.0.0.1 6379
    

    ②实例三(从服务器)创建配置文件6381.conf,在里面写入以下内容:

    port 6381
    daemonize yes
    pidfile /data/6381/redis.pid
    loglevel notice
    logfile "/data/6381/redis.log"
    dbfilename dump.rdb
    dir /data/6381
    protected-mode no
    slaveof 127.0.0.1 6379
    

    2、启动三个实列

    [root@love2 ~]# redis-server 6379.conf
    [root@love2 ~]# redis-server 6380.conf
    [root@love2 ~]# redis-server 6381.conf
    

    3、查看主从信息

    主
    [root@love2 data]# redis-cli -p 6379 info replication
    # Replication
    role:master
    connected_slaves:2
    slave0:ip=127.0.0.1,port=6380,state=online,offset=84,lag=1
    slave1:ip=127.0.0.1,port=6381,state=online,offset=84,lag=1
    master_replid:c68311b9fd7865c2429487dc756a36b2b533a737
    master_replid2:0000000000000000000000000000000000000000
    master_repl_offset:84
    second_repl_offset:-1
    repl_backlog_active:1
    repl_backlog_size:1048576
    repl_backlog_first_byte_offset:1
    repl_backlog_histlen:84
    
    从1
    [root@love2 data]# redis-cli -p 6380 info replication
    # Replication
    role:slave
    master_host:127.0.0.1
    master_port:6379
    master_link_status:up
    master_last_io_seconds_ago:7
    master_sync_in_progress:0
    slave_repl_offset:126
    slave_priority:100
    slave_read_only:1
    connected_slaves:0
    master_replid:c68311b9fd7865c2429487dc756a36b2b533a737
    master_replid2:0000000000000000000000000000000000000000
    master_repl_offset:126
    second_repl_offset:-1
    repl_backlog_active:1
    repl_backlog_size:1048576
    repl_backlog_first_byte_offset:1
    repl_backlog_histlen:126
    
    从2
    [root@love2 data]# redis-cli -p 6381 info replication
    # Replication
    role:slave
    master_host:127.0.0.1
    master_port:6379
    master_link_status:up
    master_last_io_seconds_ago:5
    master_sync_in_progress:0
    slave_repl_offset:168
    slave_priority:100
    slave_read_only:1
    connected_slaves:0
    master_replid:c68311b9fd7865c2429487dc756a36b2b533a737
    master_replid2:0000000000000000000000000000000000000000
    master_repl_offset:168
    second_repl_offset:-1
    repl_backlog_active:1
    repl_backlog_size:1048576
    repl_backlog_first_byte_offset:1
    repl_backlog_histlen:168
    
    

    4、主从已经配置好了,现在来配置哨兵的配置文件,最少需要三个哨兵,以下为配置文件,修改另外两个哨兵配置文件,如果为了方便,仅仅只需要更改端口就行,所以配置文件分别为 5000.conf,5001.conf,5002.conf

    port 5000     #该哨兵运行端口
    daemonize yes #使哨兵可以在后台运行
    dir /data/5000/     #该哨兵存放数据的目录
    logfile "5000.log"    #日志文件路劲为'/data/5000/5000.log’
    
    sentinel monitor master 127.0.0.1 6379 2
    #当前Sentinel节点监控 192.168.119.10:6379 这个主节点,master是主节点的别名,2代表判断主节点失败以及切换主节点至少需要2个Sentinel节点节点同意
    
    sentinel down-after-milliseconds master 5000
    #sentinel会定期向redis主节点ping信号,如果5s内没有回复,则判断master故障
    
    sentinel failover-timeout master 60000
    #故障转移时间为6s
    
    sentinel parallel-syncs master 1
    #当sentinel达成协议一直时,将会向新的主节点转移数据,原来的从节点会向新的主节点发起复制操作,限制每次向新的主节点发起复制操作的从节点个数为1
    

    5、启动哨兵

    可以使用 redis-sentinel,该文件位于redis的安装目录下,是一个可执行文件,直接使用以下命令:

    redis-sentinel  /data/5000.conf
    

    也可以用redis-server命令:

    redis-server /data/5000.conf --sentinel
    

    6、启动后效果如下

    [root@love2 data]# ps -ef |grep redis
    root       8723      1  0 01:02 ?        00:00:05 redis-server *:6379
    root       8734      1  0 01:07 ?        00:00:05 redis-server *:6380
    root       8740      1  0 01:07 ?        00:00:04 redis-server *:6381
    root       8863      1  0 01:41 ?        00:00:00 redis-server *:5000 [sentinel]
    root       8884      1  0 01:44 ?        00:00:00 redis-server *:5001 [sentinel]
    root       8889      1  0 01:44 ?        00:00:00 redis-server *:5002 [sentinel]
    root       8894   8488  0 01:44 pts/0    00:00:00 grep --color=auto redis
    
    

    7、通过命令查看状态信息

    
    [root@love2 data]# redis-cli -p 5000 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=master,status=ok,address=127.0.0.1:6379,slaves=2,sentinels=3
    
    

    8、测试故障转移,我们直接杀死,master节点

    kill -9 8921
    

    9、查看效果,大概5s后,自动进行了主从切换

    [root@love2 data]# redis-cli -p 5000 info sentinel
    sentinel_masters:1
    sentinel_tilt:0
    sentinel_running_scripts:0
    sentinel_scripts_queue_length:0
    sentinel_simulate_failure_flags:0
    master0:name=master,status=ok,address=127.0.0.1:6380,slaves=2,sentinels=3
    
    
  • 相关阅读:
    HDU3145 Max Sum of Max-K-sub-sequence (单调队列模板)
    AcWing1088 旅行问题(单调队列)
    POJ1821 Fence(单调队列)
    POJ1742 Coins(多重背包+二进制优化)
    AcWing217 绿豆蛙的归宿(期望)
    BZOJ.2134.[国家集训队]单选错位(概率 递推)
    洛谷.3805.[模板]manacher算法
    Codeforces.280C.Game on Tree(期望)
    BZOJ.2521.[SHOI2010]最小生成树(最小割ISAP/Dinic)
    洛谷.4172.[WC2006]水管局长(LCT Kruskal)
  • 原文地址:https://www.cnblogs.com/hjnzs/p/12849202.html
Copyright © 2011-2022 走看看