基本信息
简介:
LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统;本项目在1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一
使用集群技术和Linux操作系统实现一个高性能、高可用的服务器;其具有:很好的可伸缩性(Scalability)、很好的可靠性(Reliability)、很好的可管理性(Manageability)
特点:
可伸缩网络服务的几种结构,它们都需要一个前端的负载调度器(或者多个进行主从备份);我们先分析实现虚拟网络服务的主要技术,指出IP负载均衡技术是在负载调度器的实现技术中效率最高的,在已有的IP负载均衡技术中,主要有通过网络地址转换(Network Address Translation)将一组服务器构成一个高性能的、高可用的虚拟服务器,我们称之为VS/NAT技术(Virtual Server via Network Address Translation);在分析VS/NAT的缺点和网络服务的非对称性的基础上,我们提出了通过IP隧道实现虚拟服务器的方法VS/TUN (Virtual Server via IP Tunneling),和通过直接路由实现虚拟服务器的方法VS/DR(Virtual Server via Direct Routing),它们可以极大地提高系统的伸缩性;VS/NAT、VS/TUN和VS/DR技术是LVS集群中实现的三种IP负载均衡技术
技术:
LVS集群采用IP负载均衡技术和基于内容请求分发技术;调度器具有很好的吞吐率,将请求均衡地转移到不同的服务器上执行,且调度器自动屏蔽掉服务器的故障,从而将一组服务器构成一个高性能的、高可用的虚拟服务器;整个服务器集群的结构对客户是透明的,而且无需修改客户端和服务器端的程序,为此,在设计时需要考虑系统的透明性、可伸缩性、高可用性和易管理性
一般来说,LVS集群采用三层结构,其主要组成部分为:
1、负载调度器(load balancer):它是整个集群对外面的前端机,是服务器集群系统的唯一入口点(Single Entry Point),它可以采用IP负载均衡技术、基于内容请求分发技术或者两者相结合;负责将客户的请求发送到一组服务器上执行,而客户认为服务是来自一个IP地址上的,我们可称之为虚拟IP地址(VIP)
2、服务器池(server pool):是一组真正执行客户请求的服务器,执行的服务有WEB、MAIL、FTP和DNS等
3、共享存储(shared storage):它为服务器池提供一个共享的存储区,这样很容易使得服务器池拥有相同的内容,提供相同的服务
LVS的主要结构:
1、工作在内核空间的IPVS模块,是LVS集群系统的核心软件;LVS的能力实际上都是由IVPS模块实现
2、工作在用户空间的ipvsadm管理工具;其作用是向用户提供一个命令接口,用于将配置的虚拟服务、真实服务等传给IPVS模块
IPVS主要作用是:安装在Director Server上,同时在Director Server上虚拟出一个IP地址,用户必须通过这个虚拟的IP地址访问服务,这个虚拟IP一般称为LVS的VIP,即Virtual IP;访问的请求首先经过VIP到达负载调度器,然后由负载调度器从Real Server列表中选取一个服务节点响应用户的请求
LVS官网:The Linux Virtual Server Project - Linux Server Cluster for Load Balancinghttp://www.linuxvirtualserver.org/
LVS管理工具ipvsadm
IPVS具体实现是由ipvsadm这个程序来完成,因此判断一个系统是否具备ipvs功能,只需要察看ipvsadm 程序是否被安装;察看ipvsadm程序最简单的办法就是在任意路径执行命令ipvsadm
ipvsadm的常用参数
安装完ipvsadm后首次启动可能会出现如下报错
此时手动创建此文件即可正常启动ipvsadm
使用ipvsadm配置VS/DR模式环境:
boke1主机为负载调度器,IP=172.25.100.11
boke2主机为后端服务器,配置httpd服务,IP=172.25.100.12
boke3主机为后端服务器,配置httpd服务,IP=172.25.100.13
##配置一个简单的虚拟服务器集群
##显示已载入系统的模块;lsmod==list modules,即列出所有已载入系统的模块
##在负载调度器添加VIP
##在后端真实服务器主机也须添加VIP
##此时的访问效果:负载均衡
此种情况下,客户端访问VIP时可能会得到后端真实主机的MAC地址
##客户端访问时会获取到VIP的MAC地址,当清除ARP表中VIP的缓存重新访问VIP时,竟获取到了后端服务器boke3的MAC地址
ARP:地址解析协议(Address Resolution Protocol),其基本功能为透过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行
MAC地址:也称为局域网地址、以太网地址或物理地址,是一个用来确认网络设备位置的地址;网络中每台设备都有一个唯一的网络标识,即网卡地址或MAC地址,由网络设备制造商生产时写在硬件内部
IP地址和MAC地址的区别:
1、地址性质不同
MAC地址是物理地址,IP地址是逻辑地址;MAC地址是不可改变的,IP地址可以更改
2、可变性
MAC地址具有唯一性,每个硬件出厂时的MAC地址是固定的;IP地址不具备唯一性,因此,很多应用软件是围绕MAC地址开发的
3、工作层次不同
二层基于MAC地址转发数据帧,三层基于IP地址转发报文;二层交换机基于MAC地址表转发数据,路由器基于路由表(IP地址)转发数据
4、长度定义
MAC地址是Ethernet网卡上带的地址,长度为48位;IP地址目前主流是32位长;IP地址和MAC地址通过ARP协议联系到一起
5、分配依据不同
IP地址的分配是基于网络拓扑,MAC地址的分配是基于制造商
针对以上情况,可以在后端真实服务器配置arptables的相关策略进行优化
arptables:用于过滤arp包;基本思路和iptables一样,不过,arptables处理arp协议有关的包,这些包在iptables中并不会处理;arptables可用于灵活的arp管理,如果善于运用的话,不失为一个优秀的arp防火墙,既能防止别的机器对自己进行arp欺骗,又能防止本机病毒或错误程序向其他机器发起arp攻击
更多详细信息可参见以下arptables_百度百科arptables,linux命令,用于过滤arp包。基本思路和iptables一样,不过,arptables处理arp协议有关的包,这些包在iptables中并不会处理·arptables可用于灵活的arp管理,如果善于运用的话,不失为一个优秀的arp防火墙.既能防止别的机器对自己进行arp欺骗,又能防止本机病毒或错误程序向其他机器发起arp攻击。https://baike.baidu.com/item/arptables/6516118?fr=aladdin在所有后端服务器配置arptables策略并保存至文件
##策略意义:进来的ARP,如果目的地IP是VIP的,丢弃;发出去的ARP包,如果源IP是VIP的,更改成realserver的IP
注意:arptables只是过虑了ARP广播包,如果手动绑定IP和MAC,或者存在正确的MAC缓存,也是可以和主机通信的
##在客户端清除arp缓存后重新访问VIP,获取到调度器的MAC地址
LVS管理软件Keepalived
Keepalived是一个类似于layer3,4&5交换机制的软件,也就是我们平时说的第3层、第4层和第5层交换;主要用作后端RealServer的健康状态检查以及LoadBalance主机和BackUP主机之间failover的实现
Keepalived会检测LVS集群中各个服务器的状态,如果有一台web服务器宕机,或工作出现故障,Keepalived将检测到,并将有故障的服务器从系统中剔除,同时使用其他服务器代替该服务器的工作;当服务器工作正常后Keepalived自动将服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的服务器
Keepalived软件还可以通过VRRP(Virtual Router Redundancy Protocol)即虚拟路由器冗余协议实现高可用功能;VRRP出现的目的就是为了解决静态路由单点故障问题,它能够保证当个别节点宕机时,整个网络可以不间断地运行;因此,Keepalived一方面具有配置管理LVS的功能,同时还具有对LVS下面节点进行健康检查的功能,另一方面也可实现系统网络服务的高可用功能
更多信息可参见以下
Keepalived_百度百科keepalived是一个类似于layer3, 4 & 5交换机制的软件,也就是我们平时说的第3层、第4层和第5层交换。Keepalived是自动完成,不需人工干涉。https://baike.baidu.com/item/Keepalived/10346758?fr=aladdinKeepalived for LinuxKeepalived provides robust High-Availability and Load Balancing features for Linux critical infrastructureshttps://www.keepalived.org/环境:
boke1主机为主负载调度器,配置keepalived服务,IP=172.25.100.11
boke2主机为后端服务器,配置httpd服务,IP=172.25.100.12
boke3主机为后端服务器,配置httpd服务,IP=172.25.100.13
boke4主机为备份负载调度器,配置keepalived服务,IP=172.25.100.14
##在手动搭建LVS模式中,某台后端服务器宕机后,客户端会出现访问失败的情况
##在使用keepalived搭建LVS前删除VIP、清空LVS集群以便后续查看效果
##keepalived软件的配置文件的LVS配置内容
##启动keepalived服务后,调度器主机自动获取keepalived配置文件中的VIP和LVS集群
##此时关闭后端服务器boke2的apache服务后,客户端均能成功访问;重启boke2主机的apache服务后,客户端访问又恢复为负载均衡效果
以上配置的单点keepalived主机,在此主机故障后,客户端将再也无法访问,直至此主机故障被修复;此时配置boke4为其热备主机,实现其高可用性
##热备主机的keepalived配置文件与keepalived服务master主机配置文件的区别,其他配置相同
virtual_router_id 51
##虚拟路由编号,主备要一致;同一网段中的此项值不能重复,取值范围为0~255
priority 50
##定义优先级,数字越大优先级越高;一般主端大于备端;也用来选举master,要成为master,这个选项的值最好大于其他主机50个点,取值范围为1~255,在此范围之外的值默认为100
配置完成后,启动热备机的keepalived服务,down掉master端的keepalived服务,查看效果
##热备主机在检测到master端宕机后自动使自身配置文件中设定的VIP生效,以便服务可用
##客户端访问依然得到负载均衡的效果;且获取到的是热备主机boke4的MAC地址;当master端重启keepalived服务后,VIP会自动回退至master端
以上效果测试中,可以搭配mailx软件查看详细TCP_CHECK信息