天天看点

备胎的养成记KeepAlived实现热备负载

  但这样的话有没有发现所有请求都经过了HAproxy代理,自然当并发量越来越高时HAproxy就成了瓶颈,突发时HAproxy就会挂掉,或HAproxy服务器出现故障,这时外部唯一的请求入口没有了,怎么办?重启是个办法,但还是需要抢修时间,这期间内客户都无法访问损失的锅又得程序猿来背。

备胎的养成记KeepAlived实现热备负载

  这种情况下备胎出现了, Keepalived登场,他可以解决服务宕机自动无缝切换。

Keepalived采用VRRP(virtual router redundancy protocol,虚拟路由冗余协议)热备份协议,以软件的方式实现linux服务器的多机热备功能。VRRP是针对路由器的一种备份解决方案——由多台路由器组成一个热备组。通过共用的虚拟IP地址对外提供服务;每个热备组内同一时刻只有一台主服务器提供服务,其他服务器处于冗余状态,若当前在线的服务器失败,其他服务器会自动接替(优先级决定接替顺序)虚拟IP地址,以继续提供服务。 keepalived 默认需要使用D类多播地址224.0.0.18 进行心跳通信 keepalived 使用vrrp协议(虚拟路由冗余协议)进行通信(协议号码为112)
备胎的养成记KeepAlived实现热备负载

  Keepalived也可以与LVS、Nginx、MySQL等结合使用,形成可靠的主备机,给了你宝贵的抢修时间。

  下面来讲如何一步步搭建。

  CentOS6.X

  HAProxy 1.7.3

  Keepalived 1.3.4

  用root用户安装

  若在线安装不用下载,可直接通过yum命令安装(建议),不过需要联网。

  去官网下载 :http://www.keepalived.org/software/keepalived-1.3.4.tar.gz

  下载后放进CentOS中的/usr/local/ 文件夹中

  分两种:

  1、在线装:yum install -y ipvsadm keepalived (建议)

  2、安装包;

  此处按照下载好的安装包操作:

  在此之前还需要设置主备机的时间一致,可用ntpdate向时间服务器同步,具体的方法有时间再详细说明。

   修改keepalived.conf文件配置

  具体配置内容:

  说明:

因为Keepalived在转换状态时会依照状态来呼叫: 当进入Master状态时会呼叫notify_master 当进入Backup状态时会呼叫notify_backup 当发现异常情况时进入Fault状态呼叫notify_fault 当Keepalived程序终止时则呼叫notify_stop

  配置中notify.sh:

  配置内容:

  其中chk_haproxy.sh

  添加内容:

  将以上三个文件全部更改后 复制一份到备机;注意根据上述高亮描述进行更改。(非常重要)

  还要给chk_haproxy.sh和notify.sh执行脚本的权限。

   配置完后进行启动keepalived 和haproxy,主备机均要启动:

service keepalived start

   其它命令:

  down掉主机的haproxy,查看haproxy监控访问VIP:192.168.80.32:8089/stats,看haproxy的ID是否有变化,然后重启主机的haproxy,再看haproxy的ID是否有变化。

   执行ip a查看VIP在两台机子上有变化

  虚拟IP必须与master 和 备机 在同一网段,经测试若虚拟IP与他们不在同一网段访问不了VIP。

  防止keepalived互抢IP的办法,这个也有网有提出过,有相应的方法。

  主备机互作主备,即主机也是备机,可以做配置多个实例来实现。

  有网友测试出Keepalived限制死20个VIP问题,那这个是怎么解决的。