美文网首页我爱编程
Redis Sentinel 搭建

Redis Sentinel 搭建

作者: 霂蔺 | 来源:发表于2017-06-21 19:39 被阅读952次

    部署哨兵之前需要了解的基本事情

    • 1.一个健壮的部署至少需要三个哨兵实例,并且使用奇数个Sentinel.
    • 2.三个哨兵实例应该放置在客户使用独立方式确认故障的计算机或虚拟机中。例如不同的物理机或不同可用区域的虚拟机。
    • 3.sentinel + Redis实例不保证在故障期间保留确认的写入,因为Redis使用异步复制。然而有方式部署哨兵使丢失数据限制在特定时刻,虽然有更安全的方式部署它。
    • 4.你的客户端要支持哨兵,流行的客户端都支持哨兵,但不是全部。
    • 5.没有HA设置是安全的,如果你不经常的在开发环境测试,在生产环境他们会更好。你可能会有一个明显的错误配置只是当太晚的时候。
    • 6.Sentinel,Docker,或者其他形式的网络地址交换或端口映射需要加倍小心:Docker执行端口重新映射,破坏Sentinel自动发现其他的哨兵进程和master的slave列表。稍后在这个文档里检查关于Sentinel和Docker的部分,了解更多信息。

    1.redis环境:

    • 操作系统:阿里云Centos 6.8
    • Redis版本:Redis-3.2.9
    角色 IP地址 端口号
    Redis Master 10.169.28.143 6379
    Redis Slave01 10.28.10.103 6379
    Redis Slave02 10.174.238.225 6379
    Redis Sentinel 10.169.28.143 26379
    Redis Sentinel 10.28.10.103 26379
    Redis Sentinel 10.174.238.225 26379

    2.安装Redis主从系统:

    从官网下载redis-3.2.9,并且安装。
    2.1 安装redis

    $ wget http://download.redis.io/releases/redis-3.2.9.tar.gz
    $ tar xzf redis-3.2.9.tar.gz
    $ cd redis-3.2.9
    $ make && make install

    2.2 配置master上的redis.conf

    bind 10.169.28.143
    port 6379
    daemonize yes //启动redis后台运行
    masterauth 123456 //master的密码,如果redis设置了密码,主从密码要设置成一样的。
    requirepass 123456
    logfile "/var/log/redis/redis.log"

    2.3 配置slave上的redis.conf。另外一个类似

    bind 10.28.10.103
    port 6379
    daemonize yes //启动redis后台运行
    slave 10.169.28.143 6379
    masterauth 123456 //master的密码,如果redis设置了密码,主从密码要设置成一样的。
    requirepass 123456
    logfile "/var/log/redis/redis.log"

    2.4 配置完成以后测试一下主从是否同步正确。
    依此启动master redis和slave redis
    启动方法:

    $ ./src/redis-server redis.conf

    在mster上创建:

    $ redis-cli -h 10.169.28.143 -p 6379 -a 123456
    10.169.28.143:6379> set name abc
    OK
    10.169.28.143:6379> get name
    "abc"

    在从库上面查看:

    $ redis-cli -h 10.28.10.103 -p 6379 -a 123456
    10.28.10.103:6379>get name
    "abc"

    3.搭建Sentinel系统

    修改第一个Sentinel实例的配置文件 sentinel.conf ,配置如下:

    bind 10.169.28.143
    port 26379
    daemonize yes
    sentinel monitor mymaster 10.169.28.143 6379 2
    sentinel down-after-milliseconds mymaster 5000
    sentinel failover-timeout mymaster 180000
    sentinel parallel-syncs mymaster 1
    sentinel auth-pass mymaster 123456
    logfile /var/log/redis/redis-sentinel.log

    修改第二个Sentinel实例的配置文件 sentinel.conf ,配置如下:

    bind 10.28.10.103
    port 26379
    daemonize yes
    sentinel monitor mymaster 10.169.28.143 6379 2
    sentinel down-after-milliseconds mymaster 5000
    sentinel failover-timeout mymaster 180000
    sentinel parallel-syncs mymaster 1
    sentinel auth-pass mymaster 123456
    logfile /var/log/redis/redis-sentinel.log

    修改第三个Sentinel实例的配置文件 sentinel.conf ,配置如下:

    bind 10.174.238.225
    port 26379
    daemonize yes
    sentinel monitor mymaster 10.169.28.143 6379 2
    sentinel down-after-milliseconds mymaster 5000
    sentinel failover-timeout mymaster 180000
    sentinel parallel-syncs mymaster 1
    sentinel auth-pass mymaster 123456
    logfile /var/log/redis/redis-sentinel.log

    然后分别在三台机器上执行以下命令启动 sentinel 实例。

    $ ./src/redis-sentinel sentinel.conf

    至此,redis sentinel 系统搭建完成

    4.测试redis 是否主从切换

    4.1 在10.169.28.143服务器上查看redis的主从信息

    $ ./src/redis-cli -h 10.169.28.143 -p 6379 -a 123456 info Replication

    # Replication
    role:master
    connected_slaves:2
    slave0:ip=10.28.10.103,port=6379,state=online,offset=463,lag=0
    slave1:ip=10.174.238.225,port=6379,state=online,offset=463,lag=1

    4.2 在 10.28.10.103 服务器上查看redis的主从信息

    $ ./src/redis-cli -h 10.28.10.103 -p 6379 -a 123456 info Replication

    # Replication
    role:slave
    master_host:10.169.28.143
    master_port:6379

    4.3 在master服务器上作下线操作

    $ ./src/redis-cli -h 10.169.28.143 -p 6379 -a 123456 shutdown

    4.4 过了一会可以在其他slave上看见新的master信息

    ./src/redis-cli -h 10.28.10.103 -p 6379 -a 123456 info Replication

    # Replication
    role:slave
    master_host:10.174.238.225
    master_port:6379

    slave.png

    出现如图所示及为主从切换成功。

    4.5 当原master(10.169.28.143)重新上线以后,会自动加入到群组,并且变新master的slave

    $ ./src/redis-cli -h 10.169.28.143 -p 6379 -a 123456 info Replication

    # Replication
    role:slave
    master_host:10.174.238.225
    master_port:6379

    参考资料

    https://redis.io/download
    https://redis.io/topics/sentinel
    https://leehao.me/Redis-Sentinel-%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/
    http://redis.majunwei.com/topics/sentinel.html
    http://mp.weixin.qq.com/s/YSaRfpIzArqbeyRcyzp4tw

    相关文章

      网友评论

        本文标题:Redis Sentinel 搭建

        本文链接:https://www.haomeiwen.com/subject/dvutcxtx.html