`
TableMiao
  • 浏览: 73763 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Redis(六) 主从复制、HA集群(基于Sentinel)搭建

阅读更多
Redis() 主从复制、HA集群(基于Sentinel)搭建

一、主从复制

    1.为什么使用,好处?

      1.1 单个redis服务器压力过大,可考虑,master写,slave读,分散缓解服务器压力。

      1.2 一个master可以拥有多个slave,而一个slave又可以拥有多个slave

    2.主从复制过程

      2.1 masterslave 建立连接且slave master 发起同步请求

      2.2 请求成功之后 slave 接受master发送过来的dump.rdb的快照文件

      2.3 slave载入dump.rdb文件

      2.4 masterslave的连接断开时slave可以自动重新建立连接。如果master同时收到多个 slave发来的同步连接命令,只会使用启动一个进程来写数据库镜像,然后发送给所有slave 




3.配置

      1.安装部署一个redis服务。

      2.复制 安装好redis的配置文件 redis.conf redis.conf目录同级 并重新命名(egredis6380.conf

      3.修改端口,绑定主机器的ip和端口(eg: slaveof 192.168.1.118 6379)

      4.修改日志输出目录、快照文件名称、pid等等(如果只是测试是否搭建成功这些不重要)

    eg

      1.首先启动master、再启动slave,会发现slave 会向master 发送一个同步请求

 

   2.master 断开 slave 会一直发送同步命令等待响应

   3.分别启动masterslave的客户端(eg: ./redis-cli -p 6380)在 输入info命令可看到相应的主从信息

4.测试,master 写数据  通过slave的客户端可读出来

 

二、redis集群搭建、主从切换

  1.copy两份redis.conf 修改端口为63806381 且都设置为端口6379slave服务(eg: slaveof 192.168.1.118 6379)

  2.修改sentinel.conf文件,修改其监听端口为26379 且分别监听上述三个实例。

   eg:

#master 6379

sentinel monitor master-6379 192.168.1.118 6379 1

sentinel down-after-milliseconds master-6379 5000

sentinel parallel-syncs master-6379 1

sentinel failover-timeout master-6379 60000

 

#master 6380

sentinel monitor master-6380 192.168.1.118 6380 1

sentinel down-after-milliseconds master-6380 5000

sentinel parallel-syncs master-6380 1

sentinel failover-timeout master-6380 60000

 

#master 6381

sentinel monitor master-6380 192.168.1.118 6381 1

sentinel down-after-milliseconds master-6381 5000

sentinel parallel-syncs master-6381 1

sentinel failover-timeout master-6381 60000

注: line1表示Sentinel去监视一个名为 master-6379 的主redis实例,这个主实例的IP地址为本机地址 192.168.1.118 ,端口号为 6379 ,而将这个主实例判断为失效至少需要 1 Sentinel进程的同意,只要同意Sentinel的数量不达标,自动failover就不会执行。

line2 表示 指定了Sentinel认为Redis实例已经失效所需的毫秒数。 当实例超过该时间没有返回PING,或者直接返回错误,那么Sentinel将这个实例标记为主观下线。只有一个 Sentinel进程将实例标记为主观下线并不一定会引起实例的自动故障迁移:只有在足够数量的Sentinel都将一个实例标记为主观下线之后,实例才 会被标记为客观下线,这时自动故障迁移才会执行。

line3表示 指定了在执行故障转移时,最多可以有多少个从Redis实例在同步新的主实例,在从Redis实例较多的情况下这个数字越小,同步的时间越长,完成故障转移所需的时间就越长

line4 表示 如果在该时间(ms)内未能完成failover操作,则认为该failover失败

 

3.启动服务和sentinel监听

  可以看到端口为63806381 为端口6379slave实例




 

 

4.主从切换、断开master即端口为6379的进程

查看sentinel输出、6379主观下线、随即客观下线。尝试master迁移、选择出slave端口为6381作为master,端口监听随即变化为6381

再查看端口为6381info如下,转为master成功

重新重启6379进程,sentinel监听可看到 此时的6379作为slave加入,主从切换完成
 

 

参考:

  http://www.cnblogs.com/daoluanxiaozi/p/3724299.html

  http://www.cnblogs.com/kreo/p/4423362.html  redis.conf详解

  http://www.2cto.com/database/201501/367181.html  主从同步原理

  http://www.open-open.com/lib/view/open1340001854799.html Redis的复制功能以及Redis

复制机制本身的优缺点以及集群搭建问题

 http://www.bubuko.com/infodetail-926782.html 切换详解

  http://www.2cto.com/database/201502/377061.html  主从切换配置



 

 

 

 

 

 

 

  • 大小: 103.5 KB
  • 大小: 154.3 KB
  • 大小: 62.3 KB
  • 大小: 26.7 KB
  • 大小: 6.1 KB
  • 大小: 17 KB
  • 大小: 19.6 KB
  • 大小: 196.6 KB
  • 大小: 35.3 KB
  • 大小: 27.4 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics