提示:以下是本篇文章正文内容,下面案例可供参考
LVS
LVS(Linux Virtual Server)即Linux虚拟服务器,是一个虚拟的服务器系统,在unix/Linux平台下实现负载均衡集群功能。LVS是一种集群(Cluster)技术,采用IP负载均衡技术和基于内容请求分发技术。调度器具有很好的吞吐率,将请求均衡地转移到不同的服务器上执行,且调度器自动屏蔽掉服务器的故障,从而将一组服务器构成一个高性能的、高可用的虚拟服务器。整个服务器集群的结构对客户是透明的,而且无需修改客户端和服务器端的程序。为此,在设计时需要考虑系统的透明性、可伸缩性、高可用性和易管理性。
根据LVS工作模式的不同,真实服务器会选择不同的方式将用户需要的数据发送到终端用户,LVS工作模式分为NAT(Network Address Translation,网络地址转换)模式、TUN(隧道)模式、以及DR(Direct Routing,直接路由模式:)模式。
LVS使用DR模式实现负载均衡
搭建实验环境:
server----172.20.10.9------充当外部主机client
server1 -----172.20.10.7 --------充当调度器VS
server2 ------172.20.10.6---------充当真实服务器real server
server3 -------172.20.10.8--------充当真实服务器real server
server1与server2与server3均操作如下:
实验
上述 ipvsadm -ln:查看策略,该策略是在防火墙之后,即数据包经过网卡进来之后。(-ln不进行解析,-l会进行解析)
LVS调度器的工作机制是在二层数据链路层,通过调度算法,直接将数据包转发到real server2和real server3上,这就是为什么要在一个vlan,因为数据包不能过路由,所以数据包可以在二层链路层直接转发数据包到后端服务器。因为tcp三次握手的原故,如果real server上没有vip,数据包将会被Linux内核丢弃。
地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议。也就是将IP地址映射为MAC地址的协议
如何实现负载均衡?
在real server上配置安装arptables
两个问题
如果调度器server 1 上面也安装了httpd,且开启服务。那么server 1 与real server 2 与real server 3 上均设置了 172.20.10.5,最终外部主机访问 curl 172.20.10.5,相应的还是server 2 和server 3
因为,数据包达到 lvs 时,lvs始终在INPUT链路上监听。如果目标地址是虚拟IP 172.20.10.5,就会将数据包定向到 lvs 策略上,按照策略进行转发。
防火墙firewalld / iptables的优先级比 lvs 的优先级高 从网卡进来的数据包都经过火墙过滤,如果数据包进不来,那么lvs策略也无法生效
lvs+keeplived
server----172.20.10.9------充当外部主机client
server1 -----172.20.10.7 --------充当调度器VS
server2 ------172.20.10.6---------充当真实服务器real server
server3 -------172.20.10.8--------充当真实服务器real server
server4 -----172.20.10.10 --------充当调度器VS的备用机
负载均衡测试
访问 172.20.10.5,看到页面在两个 real server 上切换表示成功!
也可以通过 ipvsadm -Lnc 查看详细连接情况!
故障切换测试
任意关闭 realserver 上的 httpd 服务,Keepalived 监控模块是否能及时发现,然后屏蔽故障节点,同时将服务转移到正常节点来执行。
高可用测试
停止 master 上的 keepalived 服务,看 backup 是否接管。