lvs(linux virtual server),linux虚拟服务器,是一个虚拟的四层交换器集群系统,根据目标地址和目标端口实现用户请求转发,本身不产生流量,只做用户请求转发,目前是负载均衡性能最好的集群系统。
后期也由很多用户参与开发LVS辅助工具和辅助组件,最出名的就是alexandre为LVS编写的keepalived
keepalived最初专门用于监控LVS,之后又加入VRRP实现高可用功能。
**负载调度器:**真实服务器群节点一起被称为LVS,LVS负载调度器(有时也称为负载均衡器),接收服务的所有接入服务集群的请求,并决定集群中的哪个节点应该回复其请求。
1)、负载调度器(director):作为整个集群的前端,主要将用户请求分发至真实服务器中进行处理。
2)、真实服务器池:由多个功能相同的真是服务器组成,为用户提供真正的网络服务,如web服务,邮件服务等。且虚拟服务器集群作为一个可伸缩的集群,可自由添加深处真是服务器而并步影响整个集群的正常工作。
3)、共享存储:作用就是让每个用户访问的资源都是一样的,服务器支持写操作,才建议使用
LVS集群的高可用:虽然LVS负载均衡性能很好,但是如果其中节点故障,LVS是无法感知的。
因此产生了LVS周边的一个辅助工具KeepAlived,用于监控检查兼容性非常好,如果RS一个节点挂掉,keepalived会将此节点从管理列表中剔出,当节点恢复再拉回管理列表,但是此时的调度器存在单点故障的可能性,所以还必须使用其他软件来实现调度器的高可用,比如hearbeat。最好的方法是软硬件相结合,用router调用lvs,这样既能节省资源又能避免节点故障。
Linux Virtual Server项目的目标 :使用集群技术和Linux操作系统实现一个高性能、高可用的服务器,它具有很好的可伸缩性(Scalability)、可靠性(Reliability)和可管理性(Manageability)。
在LVS框架中,提供了含有三种IP负载均衡技术的IP虚拟服务器软件IPVS、基于内容请求分发的内核Layer-7交 换机KTCPVS和集群管理软件。可以利用LVS框架实现高可伸缩的、高可用的Web、Cache、Mail和Media等网络服务;在此基础上,可以开 发支持庞大用户数的、高可伸缩的、高可用的电子商务应用。
LVS是四层(传输层tcp/vdp),七层(应用层)的负载均衡工具,用的最多的是就是四层负载均衡功能的ipvs,七层的内容分发负载ktcpvs(kenrnel tcp virtual server),基于内容的调度,因为应用层交换处理复杂,但伸缩性有限,目前还不成熟
lvs的四种方式:
在LVS集群中,集群是一个整体,通过负载均衡调度器(director)作为外部通信的中介,因此如何将外部请求转发到内部真是服务器的方式对LVS集群分类
LVS四种方式:网络地址转换(LVS-NAT),直接路由(LVS-DR),IP隧道(LVS-TUN)、LVS-FULLNAT,一个负载均衡器上可以实现多种转发方式,一般用一种方式即可。
ipvsadm配置:
在server5上:
添加vip:
web服务器配置:
server6,7配置相同:
在真机查看实验结果:
但是一旦我们抑制ARP响应(noarp)响应,因为lvs无法检测后台是否down
所以我们就会发现我们在访问时绕过了server5的管理,直接访问了slave端的server6
所以下一步我们要对此进行优化
优化的目的是让客户端访问时无法直接访问server6,7,也就是说,我们需要关闭server6,7对外的开放,让他们只对server5开放
server6,7:
安装arptables管理工具:
因为我们的配置不能保存,下次开启要重新配置,所以为了方便,我们将他保存在一个文件里:
server6,7的配置相同,我们将server6上的配置文件传给server7即可:
文件最后一行的ip更改为server7的ip:
在真机上进行测试:
清理过之后负载均衡依旧成功!!!完成!!!
删除添加的ip:
在真机访问:
尝试:
停掉server6的httpd:
在真机crul:
重新开启server6的:
keepalived会自动将server6拉近来:
keepalived解决了一个结点挂掉但是lvs不提醒的问题,但是如果挂掉的是master呢?
因此我们需要另一台master备用:
将server5上配置好的keepalived文件传给server4:
更改keepalived文件如下部分:
开启服务:
查看日志:
已经显示出了backup,证明配置成功:
停掉server5的服务:
在server4上查看mac地址:
在真机上查看ip100的mac地址:
这表明服务已经被server4接管!!!
重新开启server5的服务:
此时mac地址和server5的一致,因为server5的优先级高,所以,优先选择server5!!!!
最后给大家推荐lvs的详细介绍和部署的文章:
https://www.cnblogs.com/zhangxingeng/p/10497279.html