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

news/2024/5/10 9:52:17/文章来源:https://blog.csdn.net/weixin_33859665/article/details/94444194

背景

上一期我们实现了基于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,虚拟路由冗余协议)可以认为是实现路由器高可用的协议,简单的说,当一个路由器故障时可以由另一个备份路由器继续提供相同的服务。

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

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主从模型高可用集群:

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

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

一、环境准备:两台centos系统做DR、一主一从,两台后端服务器实现过基于LNMP的电子商务网站
二、安装步骤:
1、两台服务器都使用yum方式安装keepalived服务
2、iptables -F && setenforing 清空防火墙策略,关闭selinux
三、配置基于DR模式的LVS负载均衡集群:
vim /etc/keepalived/keepalived.conf
1.对glob段进行定义,添加管理员邮箱
2、修改keepalived主(lvs-server-master)配置文件实现virtual_instance
3、修改keepalived主(lvs-server-master)配置文件实现virtual_server
4、修改keepalived从(lvs-server-master)配置文件实现real_server
5、修改keepalived主(lvs-server-backu)配置文件实现virtual_instance
6、修改keepalived从(lvs-server-backup)配置文件实现virtual_server
7、修改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给拿回来,继续工作,不会影响客户端访问。
好了,今天的内容就到这里,我们下期再见。

转载于:https://www.cnblogs.com/1477717815fuming/p/7874384.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_701402.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

静态网站建立工具

2019独角兽企业重金招聘Python工程师标准>>> VuePressdocusaurus转载于:https://my.oschina.net/zhugenqiang/blog/2992432

JAVA WEB快速入门之从编写一个JSP WEB网站了解JSP WEB网站的基本结构、调试、部署...

接上篇《JAVA WEB快速入门之环境搭建》,在完成了环境搭建后(JDK、Tomcat、IDE),现在是万事具备,就差写代码了,今天就来从编写一个JSP WEB网站了解JSP WEB网站的基本结构、调试、部署,至于为什么…

超详解百万PV网站架构案例部署(内附安装包)

网站架构概述 网站架构是根据客户需求分析的结果,准确定位网站目标群体,设定网站的整体架构,规划、设计网站栏目及其内容,制定网站开发流程的顺序,最大限度地进行高效资源分配与管理的设计。 网站架构分很多种&#xf…

springboot后台弹出前台对话框_基于springboot的精品小说网站

项目简介今天给大家推荐一款小说精品屋,该项目是一个多平台(web、安卓app、微信小程序)、功能完善的小说弹幕网站,包含精品小说专区、轻小说专区和漫画专区。包括小说/漫画分类、小说/漫画搜索、小说/漫画排行、完本小说/漫画、小说/漫画评分、小说/漫画…

网站托管的内容细节你都清楚吗?

网站托管看似简单,其中却蕴含着很多不为人知的细节,稍有处理不好,便达不到想要的效果,那么今天网站托管专家网总管就为大家分享一下网站托管的相关内容。在网站内容方面,要定期有规律的进行更新,需要注意的…

通用权限管理系统组件 中集成多个子系统的单点登录(网站入口方式)附源码

通用权限管理系统组件 (GPM - General Permissions Manager) 中集成多个子系统的单点登录(网站入口方式)附源码 上文中实现了直接连接数据库的方式,通过配置文件,自定义的登录界面单点登录到通用权限管理系统的功能实现。这个方法不好的地方就是暴露了数…

宝塔建站 mysql在哪_宝塔面板建站教程,越详细越好纯小白! - 搜外问答

我的网站就是用宝塔添加的网站:宝塔面板创建站点添加网站的详细教程。宝塔 Linux 面板创建站点添加网站常规方法1、登录宝塔 linux 面板 >> 网站 >> 添加站点,具体如下图所示:2、填写站点域名;FTP 可以选择创建&#…

如何防御网站被ddos攻击 首先要了解什么是流量攻击

什么是DDOS流量攻击?我们大多数人第一眼看到这个DDOS就觉得是英文的,有点难度,毕竟是国外的,其实简单通俗来讲,DDOS攻击是利用带宽的流量来攻击服务器以及网站。 举个例子,服务器目前带宽是100M&#xff0c…

PHP 实现多网站共享用户SESSION 数据解决方案

PHP 实现多网站共享用户SESSION 数据解决方案 来源URL:http://blog.csdn.net/dongdongzzcs/article/details/6906613 一、问题起源 稍大一些的网站,通常都会有好几个服务器,每个服务器运行着不同功能的模块,使用不同的二级域名,而…

怎么制作营销型网站才能有效提升优化效果?

中小企业建设网站大多数都是为了推广自身产品或品牌,但是,并非所有网站都能达到网络营销或推广的作用。在这个信息爆炸的时代,必须通过互联网传播,才能发挥网站应有的价值。那为什么要做营销型网站呢?从营销角度来讲&a…

一个母婴电子商务网站贝贝网的大数据平台及机器学习实践【转】

关键字:大数据平台、机器学习 贝贝网的主要产品是垂直的母婴类,母婴相对一般的电子商务网站有一些特点:第一个特点是商品周期短,在母婴网站上的商品,在线的时间不会超过5-7天,第二个是用户需求的变化快&…

django前端引用数据_「基于Python技术的智慧中医商业项目」Django前端网站篇-5.资讯的数据交互...

如果你对中医感兴趣欢迎留言讨论,觉得我的内容对你有帮助的话,能够请我喝一杯沪上阿姨不禁万分感谢。内容简介本章介绍Django搭建中医网站项目平台前端建设之资讯模块的数据交互的内容。其中由于代码量较大,因此部分模块代码举例说明&#xf…

干货 | NLP、知识图谱教程、书籍、网站、工具...(附资源链接)

来源:人工智能头条本文多资源,建议阅读收藏。本文整理了关于 NLP 与知识图谱的众多参考资源,涵盖内容与形式非常丰富。[ 导读 ]本文作者一年前整理了这份关于 NLP 与知识图谱的参考资源,涵盖内容与形式也是非常丰富,接…

干货收藏 | 计算机学习绝对不能错过的10大网站(内附网站链接)

作者:肖镇东本文共2071字,建议阅读5分钟。本文整理出大数据和人工智能领域最实用,质量最高的10大技术网站信息,既可以用于丰富技术知识,也可以用于学术研究。[ 导读 ]随着AI,大数据这些技术的快速发展&…

程序员放大招教你网站怎么做短信验证码防刷验证码机制-速码云

文章来源:http://www.4006026717.com 在我们开始发送了 短信验证码 的时候在前台中会出现一分钟的倒计时,进行了这个操作了之后,在这段时间之内,如果用户多次提交的话是无法发送请求的。这种的方法是最为经常使用的一种&#xff0…

Spring Boot 搭载属于你的网站框架(一)

Spring Boot 搭载你的网站框架(本次demo演示 使用工具 idea) 使用springboot优点,简单快速便捷,只需要管理好pom文件,构建一个新项目是非常快的。 而且内置tomcat,用命令 java -jar jar包路径 的形式启动网…

没想到,阿里工程师每天必刷的网站是......

阿里人每日必逛的神奇内网 阿里内外是阿里内部员工使用的企业运行与协作平台。它诞生于2013年,彼时只是一个门户和企业社交的入口。但经过3年发展,阿里内外实现了平台化运营,不仅接入众多阿里应用与系统,阿里的生态公司也开始享受…

如何成为SEO专家(10步指南)

如何成为SEO专家(10步指南) 您想了解如何增加流量并获得更高的关键字排名,从而为您的网站带来更多销售和收入吗?那么你应该学习有关SEO的一切知识并成为SEO专家。 拥有SEO专业知识并不是SEO专业人士的唯一特权。任何想要学习如何自…

linux+xampp搭建WordPress个人网站过程详解

建站准备 建站流程 搭建网站注意事项可以参考以下文章 如何从零开始拥有自己的网站?新手建站十大必知忠告超详细新手建站指南以及预算成本估计注册域名 我是在阿里云万网上注册的域名:注册域名详情地址 。不懂这一步的可以参考建站流程里面的几篇文章。 …

jQuery Mobile手机网站案例

jQuery Mobile手机网站案例 一、总结 一句话总结&#xff1a;jQuery Mobile是纯手机框架&#xff0c;和amazeui和bootstrap都可以做手机网站。 1、另一款文本编辑器&#xff1f; jd编辑器 二、jQuery Mobile手机网站案例 1、index.php 1 <?php 2 include common/config.php…