文章目录
LVS的概念叙述
LVS(Linux Virtual Server)是一种基于Linux操作系统的负载均衡技术 ,它通过IP负载均衡和NAT (Network Address Translation)技术,将多个服务器组成一个虚拟服务器集群,从而实现高可用性和高性能的网络服务。以下是LVS的基本原理:
-
负载均衡调度器(Director Server):
- LVS的核心组件是负载均衡调度器,它负责接收客户端的请求,并将这些请求分发到后端的真实服务器(Real Server)上。
- 调度器根据一定的算法(如轮询、最少连接、IP Hash等)选择一个合适的后端服务器来处理请求。
-
IP负载均衡:
- LVS通过修改数据包的目标IP地址,将原本发往虚拟IP地址(VIP)的请求转发到后端的真实服务器上。
- 这种方式使得多个服务器可以共享同一个虚拟IP地址,从而对外部客户端透明地提供服务。
-
NAT(Network Address Translation):
- LVS利用NAT技术,在调度器上完成源地址转换(SNAT)和目的地址转换(DNAT),以实现请求的负载均衡。
- DNAT用于将请求的目标地址从虚拟IP地址转换为后端服务器的实际IP地址,而SNAT用于将响应的源地址从后端服务器的实际IP地址转换为虚拟IP地址,以便客户端能够正确接收响应。
-
三种工作模式:
- NAT模式(Network Address Translation) :
- 调度器负责所有的IP报文转发,后端服务器只需要处理TCP/UDP请求。
- 适用于后端服务器数量较少且地理位置集中的场景。
- DR模式(Direct Routing) :
- 调度器和后端服务器位于同一个物理网络,通过MAC地址替换实现请求的直接路由。
- 适用于后端服务器数量较多且地理位置分散的场景。
- TUN模式(IP Tunneling) :
- 调度器和后端服务器通过IP隧道进行通信,后端服务器负责解封装和处理请求。
- 适用于后端服务器分布在不同物理网络的场景。
- NAT模式(Network Address Translation) :
-
健康检查和故障恢复:
- LVS支持对后端服务器的健康检查,确保只有健康的服务器参与负载均衡。
- 当某个后端服务器出现故障时,LVS可以自动将其从服务池中移除,直到其恢复正常。
通过以上机制,LVS能够有效地实现服务器集群的负载均衡,提高系统的可用性和性能。
NAT工作模式实战案例
思想:
在我看来,nat工作模式其核心思想是通过修改数据包的源地址来实现负载均衡。在NAT模式下,LVS的调度器(Director)会接收到客户端发送的请求数据包。调度器会根据负载均衡策略选择一个后端服务器(Real Server),并将请求数据包转发给这个后端服务器。在这个过程中,调度器会修改数据包的源地址,将其改为调度器自身的IP地址。
NAT工作模式的优点
灵活性:NAT模式允许后端服务器使用私有IP地址,不需要每个后端服务器都有公网IP地址。这使得IP地址资源的利用更加高效。
安全性:由于后端服务器的IP地址不会暴露给外部客户端,NAT模式可以提供更好的安全性,保护后端服务器免受外部攻击。
NAT工作模式的缺点
性能损耗:NAT模式需要额外的网络地址转换操作,这会增加调度器的处理负担,可能导致一定的性能损耗。
扩展性限制:由于所有请求和响应数据包都需要通过调度器进行地址转换,NAT模式在高并发场景下的扩展性受到一定限制。
首先,两个web客户机必须安装httpd服务 ,且两台web服务器的网卡为仅主机模式,route有两个网卡一个仅主机,一个NAT
NAT工作模式的应用场景
NAT模式适用于中小型规模的负载均衡场景,特别是在后端服务器数量不多且不需要太高性能的情况下。
大致配置
web1:
(WEB2配置一样的,只是ip变一下就行)
route:
打开路由内核功能
查看是否打开成功并测试httpd服务,然后下载lvs
开始编辑lvs的策略
测试:
部署DR模式集群案例
工作思想:
简述 :其核心思想是通过直接路由技术实现负载均衡,避免了NAT模式中需要修改数据包地址的开销。
具体分析:
DR模式的基本思想
数据包的直接路由: 在DR模式下,LVS的调度器(Director)和后端服务器(Real Server)通常位于同一个物理网络中。当调度器接收到客户端发送的请求数据包时,它不会修改数据包的地址,而是根据负载均衡策略选择一个后端服务器,并直接将数据包路由到这个后端服务器。虚拟IP地址(VIP)的共享:在DR模式下,所有调度器和后端服务器都会共享一个虚拟IP地址(VIP)。这意味着客户端只需要知道VIP,就可以发送请求到LVS集群,而不需要关心具体的后端服务器地址。
ARP协议的使用: 为了实现直接路由,DR模式利用了ARP(Address Resolution Protocol)协议。当调度器接收到请求数据包时 ,它会发送一个ARP响应包到后端服务器,告诉后端服务器VIP对应的硬件地址是调度器的MAC地址。这样后端服务器就可以直接将响应数据包发送回客户端,而不需要通过调度器中转。
DR模式的优点
高性能: 由于DR模式不需要修改数据包的地址,避免了NAT模式中的额外开销,因此具有更高的性能。扩展性强:DR模式可以支持大规模的负载均衡场景,因为数据包的路由操作相对简单,不会随着后端服务器数量的增加而产生显著的性能损耗。
**灵活的后端服务器配置:**在DR模式下,后端服务器可以使用私有IP地址,也可以使用公网IP地址,具有较高的灵活性。
DR模式的缺点
复杂的网络配置: DR模式需要确保调度器和后端服务器位于同一个物理网络中,并且需要配置ARP协议的相关参数,这可能需要更多的网络配置和管理。**不支持跨网段的负载均衡:**由于DR模式依赖于直接路由技术,它不支持跨网段的负载均衡,这在某些复杂网络环境中可能会成为一个限制。
DR模式的应用场景
DR模式适用于需要高性能和高扩展性的大型负载均衡场景,特别是在后端服务器数量较多且网络环境允许的情况下。如果网络环境较为复杂或者需要跨网段进行负载均衡,可以考虑使用其他负载均衡模式,如NAT模式或TUN(IP
Tunneling)模式。
大致工作图如下
思路模型
(上下二选一参考即可)
具体配置与事实步骤
lvs:
route:
客户端:
web:两个web服务器的内容差不多
LVS配置:
补充
在执行完以上操作之后,就执行
在lvs 和 rs 中设定vip
[root@lvs ~]# ip addr add dev lo 192.168.0.100/32
[root@rs1 ~]# ip addr add dev lo 192.168.0.100/32
[root@rs2 ~]# ip addr add dev lo 192.168.0.100/32
rs1代表web1,rs2代表web2
原因 :
之所以将环回网卡设置为一样的IP地址,是因为:
在LVS的DR模式(Direct Routing)集群部署中,将调度器(LVS)和所有后端服务器(Real Server)的环回网卡(lo)的IP地址设置为相同的虚拟IP地址(VIP)是因为DR模式的工作原理要求所有的节点都能响应同一个VIP的ARP请求。
以下是具体原因:
-
直接路由(Direct Routing):在DR模式下,调度器和后端服务器都位于同一个物理网络中,客户端的请求直接发送到后端服务器,而不需要通过调度器进行NAT转换。因此,所有的节点都需要能够响应同一个VIP的ARP请求,以便客户端能够直接访问后端服务器。
-
ARP响应:ARP协议用于将IP地址解析为物理地址(MAC地址)。当客户端发送一个ARP请求来查询某个IP地址对应的MAC地址时,所有接收到这个ARP请求的设备都会检查自己是否有这个IP地址。在DR模式下,调度器和后端服务器都需要能够响应这个VIP的ARP请求,以便客户端能够建立连接。
-
环回网卡(lo):环回网卡是一个特殊的网络接口,用于本机的网络回环。在DR模式下,通过在环回网卡上绑定VIP,可以确保每个节点都能够正确处理发往这个VIP的请求,而不是依赖于物理网络接口。
通过将调度器和所有后端服务器的环回网卡的IP地址设置为相同的虚拟IP地址,可以确保在DR模式下,所有的节点都能正确响应ARP请求,从而实现高效且透明的负载均衡。
防火墙标签解决轮询错误
工作思想:
这个策略在我看来,其核心思想就是通过在数据包上打上标签,以便LVS调度器能够识别和处理这些数据包
具体思想介绍
**数据包的标记:**在数据包通过防火墙时,防火墙可以根据一定的规则对数据包进行标记。这些标记可以用来标识数据包的特定属性,如源地址、目的地址、协议类型等。
LVS调度器的识别:LVS调度器可以通过检查数据包上的标记来识别这些数据包,并根据标记进行相应的处理。例如,调度器可以根据标记选择合适的后端服务器进行负载均衡。
负载均衡策略的实施:通过使用防火墙标签,LVS调度器可以更精确地实施负载均衡策略,避免轮询错误问题。例如,调度器可以确保来自同一客户端的请求数据包始终被转发到相同的后端服务器,从而实现会话保持。
防火墙标签的优点
灵活性:防火墙标签提供了一种灵活的方式来标识和处理数据包。通过调整防火墙的规则,可以方便地改变数据包的标记,从而影响负载均衡的策略。
可扩展性:防火墙标签可以用于支持大规模的负载均衡场景。由于标记是在数据包通过防火墙时进行的,不会对LVS调度器造成额外的负担,因此具有较高的可扩展性。
易于管理:通过使用防火墙标签,可以在防火墙层面进行数据包的管理和控制,简化了LVS调度器的配置和管理。
防火墙标签的缺点
依赖防火墙:防火墙标签的使用依赖于防火墙的功能,如果防火墙不支持数据包的标记功能,就无法使用这种方法。
额外的配置:使用防火墙标签需要进行额外的防火墙配置,可能需要调整现有的防火墙规则,增加了管理的复杂性。
防火墙标签的应用场景
防火墙标签适用于需要高灵活性和可扩展性的负载均衡场景,特别是在需要进行精细的负载均衡控制和会话保持的情况下。如果防火墙不支持数据包的标记功能,或者不需要进行复杂的负载均衡控制,可以考虑使用其他方法,如基于IP地址的负载均衡或基于URL的负载均衡。
在LVS的运维中,选择合适的负载均衡策略和方法需要根据具体的业务需求和系统架构来进行综合评估,以确保系统的高可用性和高性能。
大致配置:
其环境和DR部署模式一样,仅仅只需要在web服务器上面装上mod_ssl,然后再到lvs进行配置
在配置之前,需要先执行 ipvsadm -C将所有策略都进行清空
lvs更改的配置:
命令解释:
iptables -t mangle -A PREROUTING -d 172.25.254.200 -p tcp -m
multiport --dports 80,443 -j MARK --set-mark 99这段命令是在向iptables的mangle表中添加一个新的规则,具体解释如下:
iptables
: 这是用于配置Linux内核防火墙规则的命令行工具。-t mangle
: 指定要操作的表为mangle
。iptables有多个表,mangle
表用于修改数据包的IP头信息,比如改变TOS(Type of
Service)或者设置标记(MARK)。-A PREROUTING
: 指定要添加规则的链为PREROUTING
。PREROUTING
链是数据包进入主机后,路由判断之前的第一个链。-d 172.25.254.200
: 指定目标IP地址为172.25.254.200
的数据包。-p tcp
: 指定协议为TCP。-m multiport --dports 80,443
: 使用multiport模块来指定多个目标端口,这里是HTTP服务的端口80和HTTPS服务的端口443。-j MARK --set-mark 99
: 指定动作(jump)为MARK
,即对匹配的数据包设置一个内核路由决策使用的标记(mark),这里设置的标记值为99。
在LVS(Linux Virtual Server)的运维中,这种标记通常用于负载均衡的调度决策。通过设置标记,可以在LVS的调度器上实现更复杂的负载均衡策略。例如,根据数据包的源IP、目标IP、端口等特征,决定如何将数据包分发到后端服务器。对于标记为99的数据包,后续可以通过其他iptables规则或LVS的配置来进一步处理这些数据包,实现特定的负载均衡策略。
如果添加多了或者错误,将-A '换成-D即可
第二部分命令解释
第一条命令:
ipvsadm -A -f 99 -s rr ipvsadm : 这是用于管理IPVS的命令行工具。-A: 指定操作为添加(add)。
-f 99: 指定数据包的标记(firewall mark)为99。这与前面提到的iptables命令中的标记值对应。
-s rr: 指定调度算法为轮询(round-robin)。这意味着IPVS将按照轮询的方式将数据包分发到后端服务器。 这条命令的作用是添加一个新的虚拟服务到IPVS中,该服务会处理那些被iptables标记为99的数据包,并且使用轮询算法来调度这些数据包到后端服务器。
第二条命令:
ipvsadm -a -f 99 -r 172.25.254.20 -g ipvsadm:同上,是用于管理IPVS的命令行工具。
-a: 指定操作为添加(add)。
-f 99: 同上,指定数据包的标记为99。
-r 172.25.254.20: 指定后端服务器的IP地址为172.25.254.20。
-g: 指定该后端服务器为网关(gateway)模式。这意味着数据包将被直接转发到这个后端服务器,而不是通过NAT(网络地址转换)方式。 这条命令的作用是将一个后端服务器(IP地址为172.25.254.20)添加到IPVS的虚拟服务中,该服务处理那些被iptables标记为99的数据包,并且使用网关模式直接将数据包转发到这个后端服务器。
在LVS的运维中,这些命令用于动态地管理和配置负载均衡策略,确保系统的高可用性和高性能。
测试:
在客户机上进行测试
常用命令选项信息