Redis配置简析(二)之主从管理

需求:先有4台服务器10.0.0.82 10.0.0.83 10.0.0.84 10.0.0.85 配置成1主3从,当其中一台主服务器出现问题宕机时,从服务器能自动切换为主服务器,数据不丢失并保证,程序无需调整。
工具:Redis Sentinel(Redis自带)
步骤:1)在4台服务器上分别安装redis,并配置主从(步骤见一)
               主从配置完查看master服务器信息:
               
               查看从服务器信息:
               
          2)配置sentinel.conf(与redis.conf在同目录下)
               #port 26379
               #sentinel monitor mymaster 10.0.0.84 6379 1
               #sentinel auth-pass mymaster iiot201411
               #sentinel down-after-milliseconds mymaster 30000
               #sentinel parallel-syncs mymaster 1
               #sentinel failover-timeout mymaster 180000

                 第1行含义: Sentinel 去监视一个名为  mymaster  的主服务器, 这个主服务器的 IP 地址为 10.0.0.84  , 端口号为  6379  , 而将这个主服务器判断为失效至少需要 1  个 Sentinel 同意 (只要同意 Sentinel                          
                                  的数量不达标,自动故障迁移就不会执行)。
                第2行含义: Sentinel  的密码,若主从配置了密码,此处最好与主从密码一致,否则启动有问题。
                第3行含义: 选项指定了 Sentinel 认为服务器已经断线所需的毫秒数
                第4行含义: 选项指定了在执行故障转移时, 最多可以有多少个从服务器同时对新的主服务器进行同步, 这个数字越小, 完成故障转移所需的时间就越长
         3)启动 Sentinel  
              #/usr/local/redis-2.8.18/src/redis-sentinel /usr/local/redis-2.8.18/sentinel.conf
              
              如主从配置一样,sentinel会自动检测主从服务器及端口。
              查看sentinel状态:
              
              测试:kill 掉10.0.0.84的redis进程 查看sentinel状态:
              
              82Slave顺利晋升为master,成功!
         4)java代码部分:
              
              
               测试部分:
      public static void main(String[] args) {
        try {
            String redisSentinelHost = "10.0.0.84";
            int redisSentinelPort = 26379;
            String redisSentinelClusterName = "mymaster";
            String redisSentinelPwd = "iiot2014";
            RedisSentinel pool = new RedisSentinelJedisPool(redisSentinelHost, redisSentinelPort, redisSentinelClusterName);
            if (pool != null) {
               Jedis jedis = (Jedis) pool.getResource();
                if (redisSentinelPwd != null)
                    jedis.auth(redisSentinelPwd);
                    jedis.set("test", "test");
                    jedis.get("test",);
            }
        } catch (Exception e) {
            log.error(e.getMessage());
            e.printStackTrace();
        }
    }
        
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值