zoukankan      html  css  js  c++  java
  • Redis3.0--集群安装部署

    准备环境
    操作系统:CentOS6.5
     Redis3.0.0
    192.168.3.154
    192.168.3.158
    192.168.3.160
    192.168.3.162


    一、安装


    安装文件夹 /usr/local/redis


    创建安装文件夹 
    mkdir -p /usr/local/redis


    解压安装包
    [root@localhost src]# tar -zxvf redis-3.0.0.tar.gz


    进入文件夹
    [root@localhost src]# cd redis-3.0.0


    编译安装到指定文件夹
    make PREFIX=/usr/local/redis install


    成功安装后会在/usr/local/redis/bin文件夹下生成一下文件
    redis-benchmark
    redis-check-aof
    redis-check-dump
    redis-cli
    redis-sentinel -> redis-server
    redis-server




    二、配置主从


    从库配置文件里加上
    slaveof masterip port


    依次启动主库、从库


    假设从库报错
    35478:S 28 May 21:01:18.648 # Error condition on socket for SYNC: No route to host
    是因为防火墙没有关闭
    解决方式:开通6379port,或者关闭防火墙


    三、添加password验证

    主库配置文件添加參数

      requirepass "password"

    添加password验证后再次登录redisclient运行命令须要加上password

    如:

    [root@bj01-share-redis003 ~]# /usr/local/redis/bin/redis-cli -p 6382 -a sldUancjdPyu info

    主库加入password验证后,从库须要配置例如以下參数:

    requirepass "password"

    masterauth "password"

    注意:从库须要配置本身的password验证。还须要配置连接到主库的password验证masterauth


    四、redis 高可用集群

    3.0版本号已经将哨兵集成到redis安装包里。安装好redis之后能够看到该文件 redis-sentinel


    配置sentinel
    [root@localhost redis]# more sentinel.conf 
    # Example sentinel.conf
    port 26379
    daemonize yes


    dir "/data/redis"
    logfile "/data/redis/sentinel.log"


    sentinel monitor mymaster 192.168.3.154 6379 2  #sentinel监控的master的名字叫做mymaster,地址为192.168.3.154:port:6379;当集群中有2个sentinel觉得master死了时。才干真正觉得该master已经不可用了


    sentinel down-after-milliseconds mymaster 5000  #sentinel会向master发送心跳PING来确认master是否存活,当master 5秒内不回应pong或者回复一个错误消息时。该sentinel主管地觉得这个master不可用,标记这个redis的实例为SDOWN 。注意:此时sentinel并不会立即进行failover主备切换


    sentinel failover-timeout mymaster 90000  #故障切换超时时间。单位:毫秒,默认3分钟.



    #启动sentinel

    方法1:/usr/local/redis/bin/redis-sentinel /data/redis/sentinel.conf

    方法2:/usr/local/redis/bin/redis-server /data/redis/sentinel.conf --sentinel



    #查看sentinel日志
    [root@localhost redis]# more sentinel.log 
    26542:X 28 May 21:08:34.757 * Increased maximum number of open files to 10032 (it was originally set to 1024).
                    _._                                                  
               _.-``__ ''-._                                             
          _.-``    `.  `_.  ''-._           Redis 3.0.0 (00000000/0) 64 bit
      .-`` .-```.  ```/    _.,_ ''-._                                   
     (    '      ,       .-`  | `,    )     Running in sentinel mode
     |`-._`-...-` __...-.``-._|'` _.-'|     Port: 26379
     |    `-._   `._    /     _.-'    |     PID: 26542
      `-._    `-._  `-./  _.-'    _.-'                                   
     |`-._`-._    `-.__.-'    _.-'_.-'|                                  
     |    `-._`-._        _.-'_.-'    |           http://redis.io        
      `-._    `-._`-.__.-'_.-'    _.-'                                   
     |`-._`-._    `-.__.-'    _.-'_.-'|                                  
     |    `-._`-._        _.-'_.-'    |                                  
      `-._    `-._`-.__.-'_.-'    _.-'                                   
          `-._    `-.__.-'    _.-'                                       
              `-._        _.-'                                           
                  `-.__.-'                                               


    26542:X 28 May 21:08:34.760 # Sentinel runid is 18176251f94fe87bf0055e2a6b47823911c2d6ea
    26542:X 28 May 21:08:34.760 # +monitor master mymaster 192.168.3.154 6379 quorum 1
    26542:X 28 May 21:08:35.766 * +slave slave 192.168.3.158:6379 192.168.3.158 6379 @ mymaster 192.168.3.154 6379
    26542:X 28 May 21:08:40.809 # +sdown slave 192.168.3.158:6379 192.168.3.158 6379 @ mymaster 192.168.3.154 6379


    说明:主从库已经增加监控




    #阅读sentinel日志

    +reset-master <instance details> :主server已被重置。
    +slave <instance details> :一个新的从server已经被 Sentinel 识别并关联。
    +failover-state-reconf-slaves <instance details> :故障转移状态切换到了 reconf-slaves 状态。
    +failover-detected <instance details> :还有一个 Sentinel 開始了一次故障转移操作,或者一个从server转换成了主server。
    +slave-reconf-sent <instance details> :领头(leader)的 Sentinel 向实例发送了 SLAVEOF 命令,为实例设置新的主server。
    +slave-reconf-inprog <instance details> :实例正在将自己设置为指定主server的从server,但对应的同步过程仍未完毕。
    +slave-reconf-done <instance details> :从server已经成功完毕对新主server的同步。


    -dup-sentinel <instance details> :对给定主server进行监视的一个或多个 Sentinel 已经由于反复出现而被移除 —— 当 Sentinel 实例重新启动的时候,就会出现这样的情况。
    +sentinel <instance details> :一个监视给定主server的新 Sentinel 已经被识别并加入。
    +sdown <instance details> :给定的实比如今处于主观下线状态。


    -sdown <instance details> :给定的实例已经不再处于主观下线状态。
    +odown <instance details> :给定的实比如今处于客观下线状态。
    -odown <instance details> :给定的实例已经不再处于客观下线状态。


    +new-epoch <instance details> :当前的纪元(epoch)已经被更新。
    +try-failover <instance details> :一个新的故障迁移操作正在运行中,等待被大多数 Sentinel 选中(waiting to be elected by the majority)。
    +elected-leader <instance details> :赢得指定纪元的选举,能够进行故障迁移操作了。
    +failover-state-select-slave <instance details> :故障转移操作如今处于 select-slave 状态 —— Sentinel 正在寻找能够升级为主server的从server。
    no-good-slave <instance details> :Sentinel 操作未能找到适合进行升级的从server。Sentinel 会在一段时间之后再次尝试寻找合适的从server来进行升级,又或者直接放弃运行故障转移操作。
    selected-slave <instance details> :Sentinel 顺利找到适合进行升级的从server。
    failover-state-send-slaveof-noone <instance details> :Sentinel 正在将指定的从server升级为主server。等待升级功能完毕。
    failover-end-for-timeout <instance details> :故障转移由于超时而中止,只是终于全部从server都会開始复制新的主server(slaves will eventually be configured to replicate with the new master anyway)。


    failover-end <instance details> :故障转移操作顺利完毕。全部从server都開始复制新的主server了。


    +switch-master <master name> <oldip> <oldport> <newip> <newport> :配置变更,主server的 IP 和地址已经改变。 这是绝大多数外部用户都关心的信息。
    +tilt :进入 tilt 模式。
    -tilt :退出 tilt 模式。


    #故障转移

    一次故障转移操作由下面步骤组成:

    发现主server已经进入客观下线状态。
    对我们的当前纪元进行自增, 并尝试在这个纪元中当选。


    假设当选失败, 那么在设定的故障迁移超时时间的两倍之后, 又一次尝试当选。 假设当选成功。 那么运行下面步骤。


    选出一个从server。并将它升级为主server。
    向被选中的从server发送 SLAVEOF NO ONE 命令,让它转变为主server。
    通过公布与订阅功能, 将更新后的配置传播给全部其它 Sentinel , 其它 Sentinel 对它们自己的配置进行更新。


    向已下线主server的从server发送 SLAVEOF 命令。 让它们去复制新的主server。
    当全部从server都已经開始复制新的主server时, 领头 Sentinel 终止这次故障迁移操作。

  • 相关阅读:
    HDU 5528 Count a * b 欧拉函数
    HDU 5534 Partial Tree 完全背包
    HDU 5536 Chip Factory Trie
    HDU 5510 Bazinga KMP
    HDU 4821 String 字符串哈希
    HDU 4814 Golden Radio Base 模拟
    LA 6538 Dinner Coming Soon DP
    HDU 4781 Assignment For Princess 构造
    LA 7056 Colorful Toy Polya定理
    LA 6540 Fibonacci Tree
  • 原文地址:https://www.cnblogs.com/llguanli/p/6911534.html
Copyright © 2011-2022 走看看