HA(High available)-Keepalived高可用性集群(双机热备)单点实验-菜鸟入门级

Posted BestYunYan[云燕]

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HA(High available)-Keepalived高可用性集群(双机热备)单点实验-菜鸟入门级相关的知识,希望对你有一定的参考价值。

HA(High available)-Keepalived高可用性集群

 

Keepalived 是一个基于VRRP虚拟路由冗余协议来实现的WEB 服务高可用方案,虚拟路由冗余协议 (Virtual Router Redundancy Protocol,简称VRRP),类似于工作在3,4,5层的交换机软件。利用其来避免单点故障

 

keepalived 软件期初设计专为解决LVS负载均衡软件设计的。用来管理和监控LVS集群系统中的各个服务节点的状态,后来加入可以实现高可用的vrrp功能,因此keeplived软件不仅可以管理LVS软件外还可以,作为其他服务(nginx Haproxy mysql等的高可用解决方案)的软件。
keepalived 功能:

1.管理LVS负载均衡软件。

2.实现对lVS集群节点健康检查功能(healthcheck).

3作为系统网络服务的高可用功能(failover)

 

配置服务原理以web服务为例 :一个WEB服务至少会有2台服务器运行Keepalived,一台为主服务器(MASTER),一台为备份服 务器(BACKUP),但是对外表现为一个虚拟IP,主服务器会发送特定的消息给备份服务器,当备份服务器收不到这个消息的时候,即主服务器宕机的时候, 备份服务器就会接管虚拟IP,继续提供服务,从而保证了高可用性。

 


 

keepalived和heartbeat区别

 

Keepalived使用的vrrp协议方式,虚拟路由冗余协议 (Virtual Router Redundancy Protocol,简称VRRP);

Heartbeat是基于主机或网络服务的高可用方式;

keepalived的目的是模拟路由器的双机[前端]

heartbeat的目的是用户service的双机[服务]

lvs的高可用建议用keepavlived

业务的高可用用heartbeat


 

VRRP中有两组重要的概念VRRP路由器和虚拟路由器,主控路由器和备份路由器。

VRRP路由器是指运行VRRP的路由器,是物理实体,虚拟路由器是指VRRP协议创建的,是逻辑概念。一组VRRP路由器协同工作,共同构成一台虚拟路由器。 Vrrp中存在着一种选举机制,用以选出提供服务的路由即主控路由,其他的则成了备份路由。当主控路由失效后,备份路由中会重新选举出一个主控路由,来继续工作,来保障不间断服务。
测试环境如下
两台物理服务器和一个虚拟服务器(vip):
master:redhat 6.5 eth1  192.168.1.105
backup: redhat 6.5 eth1  192.168.1.106
vip: 192.168.1.100



测试环境的网络图如下:

+---------------------------VIP(192.168.1.100)----------------------+  

|                                                                                              |

|                                                                                              |

Server[master]<----------------keppalived------------------>server[BACKUP]

 eth0:192.168.1.105                                                      eth0:192.168.1.106

 

 



节点A 192.168.1.105(主节点), 节点B 192.168.1.106(备用节点),虚拟IP(对外提供服务的IP 192.168.1.100)
在这种模式下,虚拟IP在某时刻只能属于某一个节点,另一个节点作为备用节点存在。
当主节点不可用时,备用节点接管虚拟IP(即虚拟IP漂移至节点B),提供正常服务。
keepalived的原理可以这样简单理解:
keepalived安装在两台物理服务器上,并相互监控对方是否在正常运行。
当节点A正常的时候:节点A上的keepalived会将下面的信息广播出去:
192.168.1.100 这个IP对应的MAC地址为节点A网卡的MAC地址
图中的其它电脑如客户端和NodeB会更新自己的ARP表,对应192.168.8.100的MAC地址=节点A网卡的MAC地址。
当节点A发生故障的时候,节点B上的keepalived会检测到,并且将下面的信息广播出去:
192.168.1.100 这个IP对应的MAC地址为节点B网卡的MAC地址
图中的其它电脑如客户端会更新自己的ARP表,对应192.168.1.100的MAC地址=节点B网卡的MAC地址。

 


 

配置如下:

>/etc/keepalived/keepalived.conf 清除原配置文件内容。

vim /etc/keepalived/keepalived.conf

! Configuration File for keepalived

global_defs {

   notification_email {

     1335234172@qq.com

   }

   notification_email_from Alexandre.Cassen@firewall.loc

   smtp_server 127.0.0.1

   smtp_connect_timeout 30

   router_id wyl01

}

vrrp_instance VI_1 {

    state MASTER

    interface eth0

    virtual_router_id 55

    priority 100

    advert_int 1

    authentication {

        auth_type PASS

        auth_pass 1111

    }

    virtual_ipaddress {

        

        192.168.1.100/24 dev eth0 label eth0:1

    }

}

保存退出。

 


 

配置备节点,主备节点配置大致相同,只需更改:

router_id wyl01

state MASTER

priority 100

为:

router_id wyl02

state BACKUP

priority 99

保存即可。

 


 

说明:

! Configuration File for keepalived

global_defs {

   notification_email {

     1335234172@qq.com

   }

   notification_email_from Alexandre.Cassen@firewall.loc

   smtp_server 127.0.0.1

   smtp_connect_timeout 30

   router_id wyl01   id为wyl01必须唯一,不同的keepalived.conf此处的ID必须唯一

}

vrrp_instance VI_1 {  实例名为VI_1,相同实例的备节点要和这个名字相同。

state MASTER  节点状态为MASTER 备节点状态应该为BACKUP

    interface eth0 通讯接口为eth0

    virtual_router_id 55  实例ID为55 keepalived.conf 里唯一。

    priority 100  优先级为100,备节点的优先级必须比这个低

    advert_int 1    通讯检查时间间隔为1s

    authentication {

        auth_type PASS  PASS为认证类型,此参数主备节点必须相同

        auth_pass 1111  密码1111 准备节点必须相同

    }

    virtual_ipaddress {

                192.168.1.100/24 dev eth0 label eth0:1

    }

}

虚拟ip即vip为192.168.1.100,子网掩码为24,绑定接口为eth0 别名为eth0:1 次参数准备节点相同

 


 

启用服务主备keepalived ,和nginx :

/etc/init.d/keepalived start

service nginx start

查看备节点ip :ip arrd |grep eth0:1

 

显示有记录,查看备节点显示无此记录

如果备节点中出现eth0:1说明keepalived 配置不正常。高可用裂脑了,可逐步排除。

浏览器访问192.168.1.100 显示正常。

 


 

测试主备切换

停到主节点,理论:切换到备服务

service keepalived stop

查看备节点ip ip addr |grep eth0:1

 

备节点显示正常,浏览器测试:ok

 


 

测试2

重新开启主节点 理论:备接节点vip失效,主节点重新接管。

service keepalived start

查看主节点ip 浏览器访问

显示正常。

查看备节点ip 

ip显示正常。

Keepalived 主备单实例实验完结。

                         


keepalived 双实例双主模式配置

 

keepalived 双主模式原理 :A业务在wyl01上是主模式。在wyl02上是备模式。而B业务,在wyl01上是备模式,在wyl02上是主模式。配置只需要在单实例的基础上增加一个vrrp_instance VI_2实例即可。

在wyl01上配置如下:

 

vim /etc/keepalived/keepalived.conf

 

! Configuration File for keepalived

 

global_defs {

 

   notification_email {

 

     1335234172@qq.com

 

   }

 

   notification_email_from Alexandre.Cassen@firewall.loc

 

   smtp_server 127.0.0.1

 

   smtp_connect_timeout 30

 

   router_id wyl01

 

}

 

vrrp_instance VI_1 {

 

    state MASTER

 

    interface eth0

 

    virtual_router_id 55

 

    priority 100

 

    advert_int 1

 

    authentication {

 

        auth_type PASS

 

        auth_pass 1111

 

    }

 

    virtual_ipaddress {

 

        

 

        192.168.1.100/24 dev eth0 label eth0:1

 

    }

 

}

vrrp_instance VI_2 {

     state BACKUP

     interface eth0

     virtual_router_id 55

     priority 99

    advert_int 1

    authentication {

    auth_type PASS

     auth_pass 1111

     }

     virtual_ipaddress {

192.168.1.10/24 dev eth0 label eth0:2

  }

}

保存退出即可。


 

在wyl02配置如下:

vim /etc/keepalived/keepalived.conf

 ! Configuration File for keepalived

 global_defs {

notification_email {

 1335234172@qq.com

 }

notification_email_from Alexandre.Cassen@firewall.loc

smtp_server 127.0.0.1

smtp_connect_timeout 30

router_id wyl02

}

vrrp_instance VI_1 {

state BACKUP

interface eth0

virtual_router_id 55

priority 99

advert_int 1

authentication {

auth_type PASS

 auth_pass 1111

     }

virtual_ipaddress {

192.168.1.100/24 dev eth0 label eth0:1

  }

}

vrrp_instance VI_2 {

     state MASTER

     interface eth0

     virtual_router_id 55

     priority 100

    advert_int 1

    authentication {

    auth_type PASS

     auth_pass 1111

     }

     virtual_ipaddress {

192.168.1.10/24 dev eth0 label eth0:2

  }

}

保存退出即可。

启动keeplived服务测试成功。


 

RRP虚拟路由冗余协议简介

路由中VRRP工作工作原理:
虚拟路由冗余协议(Virtual Router Redundancy Protocol,简称VRRP)是由IETF提出的解决局域网中配置静态网关出现单点失效现象的路由协议,

1.路由器开启VRRP功能后,会根据优先级确定自己在备份组中的角色。优先级高的路由器成为主用路由器,优先级低的成为备用路由器。主用路由器定期发送VRRP通告报文,通知备份组内的其他路由器自己工作正常;备用路由器则启动定时器等待通告报文的到来。

2。在抢占方式下,当主用路由器收到VRRP通告报文后,会将自己的优先级与通告报文中的优先级进行比较。如果大于通告报文中的优先级,则成为主用路由器;否则将保持备用状态。(在非抢占方式下,只要主用路由器没有出现故障,备份组中的路由器始终保持主用或备用状态,备份组中的路由器即使随后被配置了更高的优先级也不会成为主用路由器。)

3.如果备用路由器的定时器超时后仍未收到主用路由器发送来的VRRP通告报文,则认为主用路由器已经无法正常工作,此时备用路由器会认为自己是主用路由器,并对外发送VRRP通告报文。备份组内的路由器根据优先级选举出主用路由器,承担报文的转发功能。
VRRP它是通过竞选机制将路由的任务交给某台VRRP路由器的。实现虚拟路由功能的。
VRRP 采用多播的方式默认多播地址:224.0.0.18.实现高可用之间通讯的。



keepalived 工作原理


keepalived是通过vrrp进行通信的,vrrp通过竞选机制来确定主备的,主的优先级高于备。因此工作中主会优先获得所有资源。备节点处于等待状态。当主宕掉后,备节点收不到报文就会重新参与竞选,优先级最高的则接管主节点的资源。顶替主节点对外 服务。
在keeplived服务对之间,只有作为主的服务器会一直发送VRRP广播包,告诉备它还活着,此时备不会抢占主,当主不可用时,即备监听不到主发送的广播包文时,就会启动相关服务接管资源。保证业务的连续性。

 

以上是关于HA(High available)-Keepalived高可用性集群(双机热备)单点实验-菜鸟入门级的主要内容,如果未能解决你的问题,请参考以下文章

我理解的RocketMQ:主从复制HA(High Availability)原理

Spark技术内幕:Master基于ZooKeeper的High Availability(HA)源代码实现

Spark技术内幕:Master基于ZooKeeper的High Availability(HA)源代码实现

转Spark:Master High Availability(HA)高可用配置的2种实现

HA-集群(High available)高可用性集群(双机热备)菜鸟入门级

HA(High available)-Keepalived高可用性集群(双机热备)单点实验-菜鸟入门级