实现基于Keepalived主从高可用集群网站架构

背景

上一期咱们实现了基于lvs负载均衡集群的电商网站架构,随着业务的发展,网站的访问量愈来愈大,网站访问量已经从原来的1000QPS,变为3000QPS,目前业务已经经过集群LVS架构可作到随时拓展,后端节点已经经过集群技术保障了可用性,但对于前端负载均衡器来讲,是个比较大的安全隐患,由于当前端负载均衡器出现故障时,整个集群就处于瘫痪状态,所以,负载均衡器的可用性也显得相当重要,那么怎么来解决负载均衡器的可用性问题呢?前端

技术说明

集群(cluster)技术是一种较新的技术,经过集群技术,能够在付出较低成本的状况下得到在性能、可靠性、灵活性方面的相对较高的收益,其任务调度则是集群系统中的核心技术。
集群是一组相互独立的、经过高速网络互联的计算机,它们构成了一个组,并以单一系统的模式加以管理。一个客户与集群相互做用时,集群像是一个独立的服务器。
集群组成后,能够利用多个计算机和组合进行海量请求处理( 负载均衡),从而得到很高的处理效率,也能够用多个计算机作备份高可用),使得任何一个机器坏了整个系统仍是能正常运行。集群在目前互联网公司是必备的技术,极大提升互联网业务的可用性和可缩放性。
高可用(High Availability )高可用集群,英文原文为HighAvailability Cluster,简称HA Cluster,简单的说,集群(cluster)就是一组计算机,它们做为一个总体向用户提供一组网络资源。这些单个的计算机系统 就是集群的节点(node)。高可用性集群(HA cluster)是指如单系统同样地运行并支持(计算机)持续正常运行的一个主机群。

高可用集群技术

高可用(High Availability )高可用集群,英文原文为HighAvailability Cluster,简称HA Cluster,简单的说,集群(cluster)就是一组计算机,它们做为一个总体向用户提供一组网络资源。这些单个的计算机系统 就是集群的节点(node)。高可用性集群(HA cluster)是指如单系统同样地运行并支持(计算机)持续正常运行的一个主机群。
高可用集群的出现是为了使集群的总体服务尽量可用,从而减小由计算机硬件和软件易错性所带来的损 失。若是某个节点失效,它的备援节点将在几秒钟的时间内接管它的职责。所以,对于用户而言,集群永远不会停机。高可用集群软件的主要做用就是实现故障检查和业务切换的自动化。
高可用(High Availability )
HA(High Available), 高可用性群集是经过系统的可靠性(reliability)和可维护性(maintainability)来度量的。工程上,一般用平均无端障时间(MTTF)来度量系统的可靠性,用平均维修时间(MTTR)来度量系统的可维护性。因而可用性被定义为:HA=MTTF/(MTTF+MTTR)*100%(平均无端障时间/总时间,总时间=平均无端障时间+平均维修时间)
具体HA(可用性)衡量标准:
99% 一年宕机时间不超过4天
99.9% 一年宕机时间不超过10小时
99.99% 一年宕机时间不超过1小时
99.999% 一年宕机时间不超过6分钟

高可用集群技术实现

高可用(High Availability )
高可用工做方式: 主从方式 (非对称方式)、双机双工方式(互备互援)、集群工做方式(多服务器互备方式)
高可用的资源分类: 网络高可用、服务器高可用、存储高可用、服务高可用等
开源高可用解决方案: keepalived:经过实现vrrp协议来实现地址漂移;heartbeat(开源社区项目),cman+rgmanager (RHCS:redhat cluster suite),corosync+pacemaker(大型解决方案,一个用于心跳检测,一个用于资源转移。两个结合起来使用,能够实现对高可用架构的自动管理。)
 咱们今天讲的就是基于keepalived经过vrrp协议来实现地址漂移从而来实现高可用。

高可用技术演示图(主从)

高可用技术演示图(双主)

Keepalived是什么

Keepalived的做用是检测服务器的状态,若是有一台web服务器宕机,或工做出现故障,Keepalived将检测到,并将有故障的服务器从系统中剔除,同时使用其余服务器代替该服务器的工做,当服务器工做正常后Keepalived自动将服务器加入到服务器群中,这些工做所有自动完成,不须要人工干涉,须要人工作的只是修复故障的服务器。

Keepalived的特性

配置文件简单:配置文件比较简单,可经过简单配置实现高可用功能
稳定性强:keepalied是一个相似于layer3,4&7交换机机制的软件,具有咱们平时说的第3层、第4层和第7层交换机的功能,经常使用于前端负载均衡器的高可用服务,当主服务器出现故障时,可快速进行切换,监测机制灵活,成功率高。
成本低廉:开源软件,可直接下载配置使用,没有额外费用。
应用范围广:由于keepalived可应用在多个层面,因此它几乎能够对全部应用作高可用,包括LVS、数据库、http服务、nginx负载均衡等等
支持多种类型:支持主从模式、主主模式高可用,可根据业务场景灵活选择。

Keepalived工做流程图

Keepalived工做流程图详解
如上图, keepalived主要是模块是VRRP Stack和Cheackers,实现HA集群中失败切换(Failover)功能。Keepalived经过VRRP功能能再结合LVS负载均衡软件便可部署一个高性能的负载均衡集群系统。,Cheackers主要实现可实现对服务器运行状态检测和故障隔离。其中ipvs和realserver健康状态检查经过配置文件配置就能够实现,而其余服务高可用则须要经过本身编写脚本,而后配置keepalived调用来实现。
Keepalived运行有3个守护进程。父进程主要负责读取配置文件初始化、监控2个子进程等;而后两个子进程,一个负责VRRP,另外一个负责Cheackers健康检查。其中父进程监控模块为WacthDog,工做实现:每一个子进程打开一个接受unix域套接字,父进程链接到那些unix域套接字并向子进程发送周期性(5s)hello包。
上图是Keepalived的功能体系结构,大体分两层:用户空间(user space)和内核空间(kernel space)。
内核空间:主要包括IPVS(IP虚拟服务器,用于实现网络服务的负载均衡)和NETLINK(提供高级路由及其余相关的网络功能)两个部份。

什么是VRRP协议

VRRP(Virtual Router Redundancy Protocol,虚拟路由冗余协议)能够认为是实现路由器高可用的协议,简单的说,当一个路由器故障时能够由另外一个备份路由器继续提供相同的服务。node

VRRP根据优先级来肯定虚拟路由器中每台路由器的角色(Master路由器或Backup路由器)。VRRP优先级的取值范围为0到255(数值越大代表优先级越高),可配置的范围是1到254,优先级0为系统保留给路由器放弃Master位置时候使用,255则是系统保留给IP地址拥有者使用。优先级越高,则越有可能成为Master路由器。当两台优先级相同的路由器同时竞争Master时,比较接口IP地址大小。接口地址大者当选为Master。linux

Keepalived的应用场景
网络层、数据链路层,运行着4个重要的协议: 互联网协议IP、互联网控制报文协议ICMP、地址转换协议ARP以及反向地址转换协议RARP。Keepalived在网络层采用的最多见的工做方式是经过ICMP协议向服务器集群中的那个节点发送一个ICMP数据包(相似于ping实现的功能),若是某个节点没有返回响应数据包,那么认为此节点发生了故障,Keepalived将报告次节点失效,并从服务器集群中剔除故障节点。
传输层,提供了两个主要的协议:传输控制协议TCP和用户数据协议UDP。传输控制协议TCP能够提供可靠的数据传输服务、Ip地址和端口表明TCP的一个链接端。要得到TCP服务,须要在发送机的一个端口上和接收机的一个端口上创建链接,而Keepalived在传输层就是利用TCP协议的端口链接和扫描技术来判断集群点是否正常的。好比,对于常见的WEB服务默认的80端口、SSH服务默认的22端口等,Keepalived一旦在传输层探测到这些端口没有响应数据返回,就认为这些端口发生异常,而后强制将此端口对应得节点从服务器集群组中移除。
应用层,可运行FTP、TELNET、HTTP、DNS等各类不一样类型的高层协议,Keepalived的运行方式也更加全面化和复杂化,用户能够经过自定义Keepalived的工做方式;例如:用户能够经过编写程序来运行keepalived。而keepalived将根据用户的设定检测各类程序或服务是否运行正常,若是Keepalived的检测结果与用户设定不一致时,Keepalived将把对应的服务从服务器中移除。

实战架构图

实现基于keepalived的高可用服务,在两台主机上分别实现主从,主主模型,经过keepalived实现IP地址高可用和LVS的主从高可用架构。

实战演练

实现基于keepalived主从模型高可用集群:

1、环境准备:
centos系统主从两台、yum源、防火墙关闭、各节点时钟服务同步、各节点之间能够经过主机名互相通讯
2、安装步骤:
一、iptables -F && setenforing 清空防火墙策略,关闭selinux
二、两台服务器都使用yum方式安装keepalived服务
3、修改配置文件:
1.修改/etc/keepalived/keepalived.conf配置文件内容
二、对glob段进行定义,添加管理员邮箱等
三、对vrrp_instance 进行配置,配置一主一从,定义一个基于虚拟IP的实例
4、检验高可用的效果
一、配置完成后,观察两侧IP的是状况,看是否虚拟IP在主上配置成功
二、检查主从服务日志,服务是否运行正常,监测机制是否有效
三、停掉主服务上的keepalived服务,看虚拟IP是否正常转移到从节点上
四、观察日志,了解整个切换过程,以后启动主节点服务,看虚拟IP可否被主服务再接管

实现keepalived企业级高可用基于LVS-DR模式的应用实战:

1、环境准备:两台centos系统作DR、一主一从,两台后端服务器实现过基于LNMP的电子商务网站
2、安装步骤:
一、两台服务器都使用yum方式安装keepalived服务
二、iptables -F && setenforing 清空防火墙策略,关闭selinux
3、配置基于DR模式的LVS负载均衡集群:
vim /etc/keepalived/keepalived.conf
1.对glob段进行定义,添加管理员邮箱
二、修改keepalived主(lvs-server-master)配置文件实现virtual_instance
三、修改keepalived主(lvs-server-master)配置文件实现virtual_server
四、修改keepalived从(lvs-server-master)配置文件实现real_server
 
五、修改keepalived主(lvs-server-backu)配置文件实现virtual_instance
六、修改keepalived从(lvs-server-backup)配置文件实现virtual_server
七、修改keepalived从(lvs-server-backup)配置文件实现real_server

 

四.在两台主从负载均衡器上开启路由转发
vim /etc/sysctl.conf
net.ipv4.ip_forward=1
sysctl -p
五,在后端服务器的回环网卡上配置vip,并将网关指向vip
ifconfig lo:0 172.17.253.100 broadcast 172.17.253.100 netmask 255.255.255.255 up
route add -host 172.17.253.100 dev lo:0
六,在后端服务器关闭arp
echo "1" > /proc/sys/net/ipv4/conf/lo/arp_ignore
#1 只回答目标IP地址是来访网络接口本地地址的ARP查询请求
echo "2" > /proc/sys/net/ipv4/conf/lo/arp_announce
#2 对查询目标使用最适当的本地地址.在此模式下将忽略这个IP数据包的源地址并尝试选择与能与该地址通讯的本地地址.
echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce
#关闭arp应答
(1): 仅在请求的目标IP配置在本地主机的接收到请求报文的接口上时,才给予响应
(2):必须避免将接口信息向非本网络进行通告
七,检验高可用的效果
两台负载均衡器都开启keepalived服务,我中止了负载均衡器主服务器的keepalived服务(模拟负载均衡器主服务器宕机),马上负载均衡器从服务器会将主服务器上的vip拿过来(地址漂移),接替负载均衡器主服务器的工做,一旦负载均衡器主服务器被修好了,重新开启keepalived服务,因为默认为抢占模式,主服务器再将从服务器的vip给拿回来,继续工做,不会影响客户端访问。
好了,今天的内容就到这里,咱们下期再见。
相关文章
相关标签/搜索