keepalived 保持在线,实现高可用集群
主要解决单点故障,
vrrp动态路由协议,可以解决任何单点故障
运行原理:检测每个服务器节点状态,节点异常或工作出现故障将故障节点从集群系统中剔除,故障节点恢复后在加入到时集群系统中,所有工作自动完成。
HA(High Available),高可用性集群,是保证业务连续性的有效解决方案,一般有两个或两个以上的节点,且分为活动节点及备用节点。通常把正在执行业务的称为活动节点,而作为活动节点的一个备份的则称为备用节点。当活动节点出现问题,导致正在运行的业务(任务)不能正常运行时,备用节点此时就会侦测到,并立即接续活动节点来执行业务。从而实现业务的不中断或短暂中断。
VRRP的工作原理:
路由器开启VRRP功能后,会根据优先级确定自己在备份组中的角色。优先级高的路由器成为主用路由器,优先级低的成为备用路由器。主用路由器定期发送VRRP通告报文,通知备份组内的其他路由器自己工作正常;备用路由器则启动定时器等待通告报文的到来。
VRRP在不同的主用抢占方式下,主用角色的替换方式不同:
l在抢占方式下,当主用路由器收到VRRP通告报文后,会将自己的优先级与通告报文中的优先级进行比较。如果大于通告报文中的优先级,则成为主用路由器;否则将保持备用状态。
l在非抢占方式下,只要主用路由器没有出现故障,备份组中的路由器始终保持主用或备用状态,备份组中的路由器即使随后被配置了更高的优先级也不会成为主用路由器。
如果备用路由器的定时器超时后仍未收到主用路由器发送来的VRRP通告报文,则认为主用路由器已经无法正常工作,此时备用路由器会认为自己是主用路由器,并对外发送VRRP通告报文。备份组内的路由器根据优先级选举出主用路由器,承担报文的转发功能。
配置HA集群
安装keepalived,那些网站要做高可用集群就在那些上面安装keepalived软件因为做高可用集群必须用keepalived软件注意要两台计算机以上
2.配置主服务器和备用服务器
/etc/keepalived/keepalived.conf
global_defs {
notification_email {
}
notification_email_from [email protected]
smtp_server 192.168.200.1
smtp_connect_timeout 30
router_id LVS_DEVEL
vrrp_skip_check_adv_addr
# vrrp_strict注意要把这要注释掉
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_instance webha { 集群名字两台要一样
20 state MASTER 描述,这只是一个描述信息,状态主state备master
21 interface eth0 接口网卡名
22 virtual_router_id 51 这是一个编号不用动
23 priority 100 优先级谁做主谁优先级就大点优先级最大255
24 advert_int 1 默认比此通信时间间隔默认为秒
25 authentication { 认证方式
26 auth_type PASS 通过密码两台要一样
27 auth_pass 1111
28 }
29 virtual_ipaddress {vip地址是多少就在里面写多少
30 192.168.200.16
31 192.168.200.17
32 192.168.200.18
33 }}
建议先启用优先级高的设置
ip addr show 专门用来查ip地址
注意:如何网站服务坏了我们可以让keepalived自己停了,需要自己写脚本
综合应用:
keepalived+lvs 配置lvs调度器,HA集群
注意:/etc/rc.d/rc.local要给这执行权限才能去读/etc/rc.local里面写的东西
删除主机上策略和VIP地址
ipvsadm -C
ifdown eth0
ifup eth0
删除/etc/rc.local文件里的ifconfig eth0:1 192.168.4.253 命令
默认/etc/rc.local是一个链接文件,真实文件是/etc/rc.d/rc.local这个文件默认没有执行权限要自己手动去改一个权限
eth0 eth0:1 和eth0.1三者的关系对应于物理网卡、子网卡、虚拟VLAN网卡的关系:
物理网卡:物理网卡这里指的是服务器上实际的网络接口设备,这里我服务器上双网卡,在系统中看到的2个物理网卡分别对应是eth0和eth1这两个网络接口。
子网卡:子网卡在这里并不是实际上的网络接口设备,但是可以作为网络接口在系统中出现,如eth0:1、eth1:2这种网络接口。它们必须要依赖于物理网卡,虽然可以与物理网卡的网络接口同时在系统中存在并使用不同的IP地址,而且也拥有它们自己的网络接口配置文件。但是当所依赖的物理网卡不启用时(Down状态)这些子网卡也将一同不能工作。
虚拟VLAN网卡:这些虚拟VLAN网卡也不是实际上的网络接口设备,也可以作为网络接口在系统中出现,但是与子网卡不同的是,他们没有自己的配置文件。他们只是通过将物理网加入不同的VLAN而生成的VLAN虚拟网卡。如果将一个物理网卡通过vconfig命令添加到多个VLAN当中去的话,就会有多个VLAN虚拟网卡出现,他们的信息以及相关的VLAN信息都是保存在/proc/net/vlan/config这个临时文件中的,而没有独自的配置文件。它们的网络接口名是eth0.1、eth1.2这种名字。
注意:当需要启用VLAN虚拟网卡工作的时候,关联的物理网卡网络接口上必须没有IP地址的配置信息,并且,这些主物理网卡的子网卡也必须不能被启用和必须不能有IP地址配置信息。这个在网上看到的结论根据我的实际测试结果来看是不准确的,物理网卡本身可以绑定IP,并且给本征vlan提供通信网关的功能,但必须是在802.1q下。
分别在主机上安装keepalived
修改配置文件
修改做主分发配置文件
virtual_server 192.168.4.253 80 { 虚拟服务器 端口 相当于ipvsadm -A -t
persistence_timeout 50
lvs配置persistence_timeout 参数导致数据库负载不均
现象是网站访问很慢,某台数据库的负载很高,在LVS上看到连接数分布非常不均衡。
临时解决方式是数据库访问不通过LVS,不同的web配置不同的数据库读IP。网站暂时恢复正常。
检查keepalived软件配置,发现virtual_server配置了persistence_timeout 连接保持,意思就是在这个一定时间内会讲来自同一用户(根据ip来判断的)访问到同一个real server。
配置连接保持后用户访问到哪个后端由persistence_timeout和lvs的超时共同决定
扩展:配置keepalived对lvs服务的realserver 做健康检查默认不配是没有的
使用Haproxy 软件配置 LB集群
LVS 基于端口 传输层tcp/udp 不能做健康检查,不能做应用层
Haproxy 基于端口,基于健康检查,基于应用层
(1).LB:Load Balancing:负载均衡集群
负载均衡集群中有一个分发器或者叫调度器,我们将其称之为Director,它处在多台服务器的上面,分发器根据内部锁定义的规则或调度方式从下面的服务器群中选择一个以此来响应客户端发送的请求。
(2).HA:High Availability 高可用集群
高可用集群是服务的可用性比较高,当我们某台服务器死机后不会造成我们的服务不可用。其工作模式则是将一个具有故障的服务转交给一个正常工作的服务器,从而达到服务不会中断。一般来说我们集群中工作在前端(分发器)的服务器都会对我们的后端服务器做一个健康检查,如果发现我们服务器当机就不会对其在做转发。
衡量标准:可用性=在线时间/(在线时间+故障处理时间)
99%、99.9%、99.99%、99.999%
lvs和haproxy都是实现的负载均衡的作用,keepalived和heartbeat都是提高高可用性的,避免单点故障。
两者的区别:
lvs的是通过vrrp协议进行数据包转发的,提供的是4层的负载均衡。特点是效率高,只要你机器网卡抗的住就不是问题。
haproxy可以提供4层或7层的数据转发服务,能做到7层的好处是可以根据服务所处的状态等进行负载。
以上两者只是实现了负载均衡,但是他们本身是明显的单点故障,因此需要使用双机软件做热备,来保证高可用性。keepalived可以通过检测vrrp数据包来切换,因此更适合与lvs搭配。而heartbeat更适于和haproxy搭配。这样就出现了这两个应用比较多也比较经典的负载均衡的高可用性方案了。
URL统一资源定位器
URI