keepalived对nginx进行高可用搭建及原理详解

摘抄自官网的介绍:,项目地址:github.com/acassen/kee…,所以,Keepalived 一方面具有配置管理LVS的功能,同时还具有对LVS下面节点进行健康检查的功能,另一方面也可实现系统网络服务的高可用功能。,通过官网的介绍我们可以看到Keepalived提供了两个重要的功能:loadbalancing和high-availability。最初是专门为LVS负载均衡软件设计,可以用来管理并监控LVS集群系统中各个服务节点的状态,后来的版本中又加入了可以实现高可用的VRRP功能。,因此,Keeaplived主要有两种应用场景,一个是通过配置keepalived结合ipvs做到负载均衡(LVS+Keepalived);,另一个是通过自身健康检查、资源接管等功能做高可用(双机热备),实现故障转移,功能近似于Heartbeat。,目前全球监控的分布式MySQL集群,使用了Keeaplived来实现proxy的双机热备功能,所以下面只介绍在高可用场景下的相关知识。,keepalived是以VRRP协议为实现基础的,VRRP全称Virtual Router Redundancy Protocol,即虚拟路由冗余协议,可以认为是实现路由器高可用的协议。,对应到高可用的场景,实际上就是把路由器换成了服务器或者服务器上的应用: 通常情况下是将两台linux服务器组成一个热备组(master-backup),同一时间热备组内只有一台主服务器(master)提供服务,同时master会虚拟出一个共用IP地址(VIP),这个VIP只存在master上并对外提供服务。 如果keepalived检测到master宕机或服务故障,备服务器(backup)会自动接管VIP成为master,keepalived并将master从热备组移除,当master恢复后,会自动加入到热备组,默认再抢占成为master,起到故障转移功能。,keepalived对nginx进行高可用搭建及原理详解,keepalived是模块化设计,不同模块负责不同的功能,主要有三个模块,分别是core、check和VRRP,其中:,此外还有:,keepalived做负载均衡时工作在TCP/IP协议的3/4/5层,做高可用时工作在OSI七层协议模型的3/4/7层,基本上是一样的,叫法不同而已,具体工作在哪一层的区别就在于用什么样的网络协议来进行健康检查:,Layer3:工作在三层时,keepalived会定期向热备组中的服务器发送一个ICMP数据包,来判断某台服务器是否故障,如果没有响应则将这台服务器从热备组移除。,Layer4:工作在四层时,keepalived以TCP端口的状态判断服务器是否故障,比如检测MySQL的3306端口,如果无法访问则将这台服务器从热备组移除。,Layer7:工作在七层时,keepalived根据用户设定的策略判断服务器上的程序是否正常运行,比如使用HTTP请求的方式,如果返回错误的状态码则将这台服务器从热备组移除。,在Keepalived服务器群之间,只有作为主的服务器不断发送VRRP广播包,告诉备它还活着,此时备不会抢占主,只有当主不可用,既备接受不到主的VRRP广播包,这时候备就会启动相关的服务接管主的任务向外提供服务,以保证服务的正常使用。,keepalived正常启动的时候,共启动3个进程: 一个是父进程,负责监控其子进程;,一个是VRRP子进程,另外一个是checkers子进程;,两个子进程都被系统watchlog看管,Healthcheck子进程检查各自服务器的健康状况。,如果healthchecks进程检查到master上服务不可用了,就会通知本机上的VRRP子进程,让他删除通告,并且去掉虚拟IP,转换为BACKUP状态。 生产服务器上的keepalived进程,keepalived配置文件按层级模块划分的,每层由"{ }"来界定。在主配置文件中可以通过include来涵盖多个子配置文件。 详细语法说明:官方文档 配置文件包括以下几个模块:,|,在192.168.73.136操作为例,135上把index改成135即可,(1)Master配置,(2)Slave配置,首先在浏览器中访问vip,可以看到我们访问的是BACKUP上的web地址,keepalived对nginx进行高可用搭建及原理详解,关掉master上的nginx,查看VIP是否漂移到备机。,在浏览器中访问vip,可以看到我们访问的是master上的web地址,keepalived对nginx进行高可用搭建及原理详解,在高可用系统中,如果两个节点的心跳线断开,本来两个节点为一个整体、动作协调的一个HA系统,现在由于两个之间的心跳线断开导致它们分裂成了两个单独的个体。由于双方互相失去了联系,都会以为对方出了故障。这时候这两个单独的个体就像"脑裂人"一样互相争抢共享资源、争用应用服务,这样就会造成严重问题:,一般来说,脑裂的发生,有以下几种原因:,在实际环境中,我们可以从以下几个方面来防止脑裂的问题:,(1)执行脚本,用来检测,(2)安装nmap 因为上面脚本有用到这个工具,因此两个主机都需要安装,(3) 修改master配置,(4) 修改Slave配置配置,通常生产环境是不允许VIP来回漂移,当主机的业务出问题之后,vip漂移到备机上保证业务不中断,就算故障恢复keepalived也不会把vip切到主机上;,需要进行对应的问题问题,确认主机环境没有问题之后手动重启主机上keepalived服务,让vip切回到主机上。 为,了满足这样的业务场景,可以使用nopreempt参数,不抢占VIP的机制实现 修改master配置如下,可以自己重启keepalived,然后停止web,然后再启动web,验证是否能够自动漂移回主机,当在同一个局域网内部署了多组keepalived服务器时,可能会发生高可用接管的严重故障问题。 因为keepalived高可用功能是通过VRRP协议实现的,VRRP协议默认通过IP多播的形式实现高可用对之间的通信,如果同一个局域网内存在多组Keepalived服务器对,就会造成IP多播地址冲突问题,导致接管错乱. 不同组的keepalived都会使用默认的224.0.0.18作为多播地址。此时的解决办法是,在同组的keepalived服务器所有的配置文件里指定独一无二的多播地址,配置如下:,以上就是keepalived对nginx进行高可用搭建及原理详解的详细内容,更多关于keepalived搭建nginx的资料请关注其它相关文章!
返回顶部
跳到底部

Copyright 2011-2024 南京追名网络科技有限公司 苏ICP备2023031119号-6 乌徒帮 All Rights Reserved Powered by Z-BlogPHP Theme By open开发

请先 登录 再评论,若不是会员请先 注册