• 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 终止这次故障迁移操作。

  • 相关阅读:
    android中的Cursor类
    设计模式之UML类图的常见关系(一)
    关于form 上传文件时的小问题
    Javascript中最常用的61段经典代码
    自我提升mysql
    为mysql在表的某一位置增加一列
    由<a>标签的onclick影出来的问题
    第一博客
    异常的出理
    2016.7.17内部类
  • 原文地址:https://www.cnblogs.com/llguanli/p/6911534.html
Copyright © 2020-2023  润新知