zoukankan      html  css  js  c++  java
  • redis集群部署sentinel--两台实现

    redis集群部署sentinel--两台实现

    默于 2015-08-22 09:39:35 4258 收藏 2
    分类专栏: redis
    版权
    1.sentinel
    redis的sentinel系统用于管理多个redis服务器,主要执行三个任务:
    1)监控:sentinel不断检查主从服务器是否运行正常;
    2)提醒:当某个redis服务器出现问题,可以通过API发送通知;
    3)自动故障迁移:当一个主服务器不能正常工作时, Sentinel 会开始一次自动故障迁移操作,它会将失效主服务器的其中一个从服务器升级为新的主服务器, 并让失效主服务器的其他从服务器改为复制新的主服务器;当客户端试图连接失效的主服务器时, 集群也会向客户端返回新主服务器的地址, 使得集群可以使用新主服务器代替失效服务器。
    Redis Sentinel 是一个分布式系统, 你可以在一个架构中运行多个 Sentinel 进程(progress),这些进程使用流言协议(gossip protocols)来接收关于主服务器是否下线的信息, 并使用投票协议(agreement protocols)来决定是否执行自动故障迁移, 以及选择哪个从服务器作为新的主服务器。虽然 Redis Sentinel释出为一个单独的可执行文件 redis-sentinel , 但实际上它只是一个运行在特殊模式下的 Redis 服务器,你可以在启动一个普通 Redis 服务器时通过给定 –sentinel 选项来启动 Redis Sentinel 。

    2.安装环境
    本次安装采用两台服务器作为主从服务器,服务器信息如下:

    master: 10.133.6.120 6379
    slave: 10.133.6.126 6379
    master-sentinel: 10.133.6.120 26379
    slave-sentinel: 10.133.6.126 26379
    1
    2
    3
    4
    在根目录下新建文件夹data1:

    [root@redis-1 ~]# cd /
    [root@redis-1 /]# mkdir data1
    [root@redis-1 /]# cd data1/
    1
    2
    3
    下载redis安装包:(采用的是redis-2.8.4)

    [root@redis-1 data1]# wget http://download.redis.io/releases/redis-2.8.4.tar.gz
    1
    解压安装:

    [root@redis-2 data1]# tar -zxvf redis-2.8.4.tar.gz
    [root@redis-1 data1]# cd redis-2.8.4
    [root@redis-2 redis-2.8.4]# make;make install
    1
    2
    3
    3.配置redis
    [root@redis-1 redis-2.8.4]# cd /usr/local/
    [root@redis-1 local]# mkdir redis
    [root@redis-1 local]# cd redis/
    1
    2
    3
    主服务器配置redis–master:

    [root@redis-1 redis]# cp /data1/redis-2.8.4/redis.conf ./ redis.conf
    [root@redis-1 redis]# cp /data1/redis-2.8.4/sentinel.conf ./master-sentenel.conf

    [root@redis-1 redis]# vi redis.conf
    -------------------------------------------------------------------------------------------
    ####master redis.conf######
    ###启动进程为后台进程
    daemonize yes
    ####端口
    port 6379
    ####日志文件路径设置
    logfile "/data1/log/redis/redis.log"
    ####授权密码,在安全的环境中可以不设置
    requirepass 123456
    masterauth 123456
    ####注释指令重命名,若已配置则不需要修改
    #rename-command
    ####开启AOF
    appendonly yes
    save “”
    slave-read-only yes
    -------------------------------------------------------------------------------------------
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    [root@redis-1 redis]# vi master-sentenel.conf
    -------------------------------------------------------------------------------------------
    ####master sentinel.conf
    ###启动进程为后台进程
    daemonize yes
    ##sentinel实例之间的通讯端口
    port 26379
    ####sentinel需要监控的master信息:<mastername> <masterIP> <masterPort> <quorum>.
    ####<quorum>应该小于集群中slave的个数,只有当至少<quorum>个sentinel实例提交"master失效" 才会认为master为ODWON("客观"失效) .
    sentinel monitor mymaster 10.133.6.120 6379 2
    ####设置日志路径
    logfile "/data1/log/redis/sentinel.log"
    ####授权密码,在安全的环境中可以不设置
    sentinel auth-pass mymaster 123456
    ####master被当前sentinel实例认定为“失效”(SDOWN)的间隔时间
    sentinel down-after-milliseconds mymaster 30000
    ####当新master产生时,同时进行“slaveof”到新master并进行同步复制的slave个数。
    ##在salve执行salveof与同步时,将会终止客户端请求。
    ##此值较大,意味着“集群”终止客户端请求的时间总和和较大。
    ##此值较小,意味着“集群”在故障转移期间,多个salve向客户端提供服务时仍然使用旧数据。
    sentinel parallel-syncs mymaster 1
    ####failover过期时间,当failover开始后,在此时间内仍然没有触发任何failover操作,当前sentinel将会认为此次failoer失败。
    sentinel failover-timeout mymaster 180000
    -------------------------------------------------------------------------------------------
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    从服务器上部署redis–slave

    [root@redis-2 redis]# cp /data1/redis-2.8.4/redis.conf ./ redis.conf
    [root@redis-2 redis]# cp /data1/redis-2.8.4/sentinel.conf ./slave-sentenel.conf

    root@redis-2 redis]# vi redis.conf
    -------------------------------------------------------------------------------------------
    ####slave redis.conf######
    ###启动进程为后台进程
    daemonize yes
    ####端口
    port 6379
    ####日志文件路径设置
    logfile "/data1/log/redis/redis.log"
    ####授权密码,在安全的环境中可以不设置
    requirepass 123456
    masterauth 123456
    #### IP和端口为Master的IP和端口
    slaveof 10.133.6.120 6379
    ####注释指令重命名,若已配置则不需要修改
    #rename-command
    ####开启AOF
    appendonly yes
    save “”
    slave-read-only yes
    -------------------------------------------------------------------------------------------
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    [root@redis-2 redis]# vi slave-sentenel.conf

    -------------------------------------------------------------------------------------------
    ####slave sentinel.conf
    ###启动进程为后台进程
    daemonize yes
    ##sentinel实例之间的通讯端口
    port 26379
    ####sentinel需要监控的master信息:<mastername> <masterIP> <masterPort> <quorum>.
    ####<quorum>应该小于集群中slave的个数,只有当至少<quorum>个sentinel实例提交"master失效" 才会认为master为ODWON("客观"失效) .
    sentinel monitor mymaster 10.133.6.120 6379 2
    ####设置日志路径
    logfile "/data1/log/redis/sentinel.log"
    ####授权密码,在安全的环境中可以不设置
    sentinel auth-pass mymaster 123456
    ####master被当前sentinel实例认定为“失效”(SDOWN)的间隔时间
    sentinel down-after-milliseconds mymaster 30000
    ####当新master产生时,同时进行“slaveof”到新master并进行同步复制的slave个数。
    ##在salve执行salveof与同步时,将会终止客户端请求。
    ##此值较大,意味着“集群”终止客户端请求的时间总和和较大。
    ##此值较小,意味着“集群”在故障转移期间,多个salve向客户端提供服务时仍然使用旧数据。
    sentinel parallel-syncs mymaster 1
    ####failover过期时间,当failover开始后,在此时间内仍然没有触发任何failover操作,当前sentinel将会认为此次failoer失败。
    sentinel failover-timeout mymaster 180000
    -------------------------------------------------------------------------------------------
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    4.启动
    首次构建必须先启动master的redis。

    启动master和master-sentinel:

    [root@redis-1 redis]# redis-server --include /usr/local/redis/ redis.conf
    [root@redis-2 redis]# /data1/redis-2.8.4/src/redis-sentinel /usr/local/redis/master-sentinel.conf
    1
    2
    启动slave和slave-sentinel:

    [root@redis-1 redis]# redis-server --include /usr/local/redis/ redis.conf
    [root@redis-2 redis]# /data1/redis-2.8.4/src/redis-sentinel /usr/local/redis/slave-sentinel.conf
    1
    2
    5.测试
    查看master状态

    [root@redis-1 redis]# redis-cli -h 10.133.6.120 -p 6379
    1

    查看slaver状态

    [root@redis-2 redis]# redis-cli -h 127.0.0.1 -p 6379
    1

    1)关闭master

    10.133.6.120:6379> shutdown
    1

    此时,slave状态(迁移需要等待1到2分钟)

    重启master,状态

    [root@redis-1 redis]# redis-server --include /usr/local/redis/redis.conf
    1
    实现了迁移

    2)关闭slave(此时slave下redis状态为master)
    状态信息如下:

    关闭slave

    127.0.0.1:6379> shutdown
    1

    此时master下状态

    重启slaver,状态

    [root@redis-2 redis]# redis-server --include /usr/local/redis/redis.conf
    1

    ————————————————
    版权声明:本文为CSDN博主「默于」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/moyu_2012/article/details/47856949

  • 相关阅读:
    Func<T>、Action<T> 的区别于说明
    Invoke()/BeginInvoke()区别
    C# Linq处理list数据
    C# 的三种序列化方法
    P3368 【模板】树状数组 2
    P2058 海港
    2019.6.24 校内测试 NOIP模拟 Day 2 分析+题解
    2019.6.20 校内测试 NOIP模拟 Day 1 分析+题解
    2019.6.18 校内测试 分析+题解
    P1310 表达式的值
  • 原文地址:https://www.cnblogs.com/yaoyangding/p/14809643.html
Copyright © 2011-2022 走看看