LVS集群技术介绍

LVS(Linux Virtual Server)集群,即Linux虚拟服务器集群,是一个在Unix/Linux平台下实现负载均衡集群功能的系统。它由国人章文嵩博士在1998年开发,是中国国内最早出现的自由软件项目之一,现在LVS已经是Linux内核标准的一部分。LVS集群通过将多台服务器组织起来,共同对外提供服务,以提高系统的整体性能、可扩展性和高可用性。

LVS的核心作用是分发网络请求,以达到以下目标:

  1. 可扩展性: 通过向集群中添加更多后端服务器(Real Server),线性提升系统的整体处理能力和吞吐量,以应对不断增长的访问量。

  2. 高可用性: 当某个后端服务器发生故障时,LVS能够自动检测到(通常需结合健康检查工具如keepalived),并将后续流量路由到其他健康的服务器上,保证服务不间断。

  3. 高性能: LVS工作在内核空间,转发效率极高,本身消耗资源少,对网络请求的处理延迟很低。

  4. 透明性: 客户端访问的是虚拟服务地址(VIP),无需感知背后实际提供服务的具体是哪台后端服务器。

  5. 可管理性: 提供统一入口,便于管理和维护后端服务器群。

核心工作模式

LVS通过不同的报文转发机制实现负载均衡:

  1. NAT模式: 修改请求/响应报文的IP地址。Director成为性能瓶颈。

  2. DR模式: 仅修改请求报文的MAC地址。响应由Real Server直接返回给客户端。性能最高,最常用,要求Real Server与Director在同一物理网络。

  3. TUN模式: 通过IP隧道封装请求报文。Real Server可以在不同网络,但需要支持IP隧道协议,配置较复杂。

LVS安装及命令详解

核心命令ipvsadm功能:管理虚拟服务器、真实服务器和规则。

添加一个虚拟服务192.168.1.100:80,使用轮询算法

ipvsadm -A -t 192.168.1.100:80 -s rr

修改虚拟服务的算法为加权轮询

ipvsadm -E -t 192.168.1.100:80 -s wrr

删除虚拟服务

ipvsadm -D -t 192.168.1.100:80

管理真实服务

添加一个真实服务器192.168.1.123,使用DR模式,权重2

ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.123 -g -w 2

修改真实服务器的权重

ipvsadm -e -t 192.168.1.100:80 -r 192.168.1.123 -g -w 5

删除真实服务器

ipvsadm -d -t 192.168.1.100:80 -r 192.168.1.123

查看统计

查看当前配置的虚拟服务和各个RS的权重 

ipvsadm -Ln

查看当前ipvs模块中记录的连接(可用于观察转发情况)

  ipvsadm -lnc

查看ipvs模块的转发情况统计

ipvsadm -Ln --stats | --rate

NAT模式的实现

工作原理

数据包流向:客户端发送请求到VIP -> LVS Director修改目标IP为真实服务器IP -> 真实服务器处理响应 -> LVS Director修改源IP为VIP返回客户端。

数学表示:流量转发公式($$ \text{转发率} = \frac{\text{处理请求数}}{\text{接收请求数}} \times 100% $$)

关键组件:IPVS内核模块、连接跟踪机制。

实验步骤

1.实验环境配置

client:

LVS集群技术介绍_第1张图片

LVS:

LVS集群技术介绍_第2张图片

webserver1:

LVS集群技术介绍_第3张图片

webserver2:

LVS集群技术介绍_第4张图片

1、启动内核路由功能:

[root@lvs ~]# echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
[root@lvs ~]# sysctl -p
net.ipv4.ip_forward = 1

2、安装ipvsadm:

[root@lvs ~]# yum install ipvsadm -y

3、在webserver1和webserver2中安装httpd包,并关闭防火墙:

webserver1:

[root@webserver1 ~]# yum install httpd -y 
[root@webserver1 ~]# echo "welcome to webserver1 - 192.168.0.10" > /var/www/html/index.html
[root@webserver1 ~]# systemctl restart httpd
[root@webserver1 ~]# systemctl stop firewalld

webserver2(与webwserver1类似)

4、在lvs中检测:

[root@lvs ~]# curl 192.168.0.10
welcome to webserver1 - 192.168.0.10
[root@lvs ~]# curl 192.168.0.20
welcome to webserver2 - 192.168.0.20

5、添加调度策略:

[root@lvs ~]# ipvsadm -A -t 172.25.254.100:80 -s rr
[root@lvs ~]# ipvsadm -a -t 172.25.254.100:80 -r 192.168.0.10:80 -m
[root@lvs ~]# ipvsadm -a -t 172.25.254.100:80 -r 192.168.0.20:80 -m
[root@lvs ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  172.25.254.100:80 rr
  -> 192.168.0.10:80              Masq    1      0          0         
  -> 192.168.0.20:80              Masq    1      0          0   

6、保存规则:

[root@lvs ~]# ipvsadm -Sn
-A -t 172.25.254.100:80 -s rr
-a -t 172.25.254.100:80 -r 192.168.0.10:80 -m -w 1
-a -t 172.25.254.100:80 -r 192.168.0.20:80 -m -w 1
[root@lvs ~]# ipvsadm -Sn > /etc/sysconfig/ipvsadm
[root@lvs ~]# cat /etc/sysconfig/ipvsadm
-A -t 172.25.254.100:80 -s rr
-a -t 172.25.254.100:80 -r 192.168.0.10:80 -m -w 1
-a -t 172.25.254.100:80 -r 192.168.0.20:80 -m -w 1

7、删除规则:

[root@lvs ~]# ipvsadm -C
[root@lvs ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn

8、重新加载规则:

[root@lvs ~]# ipvsadm -R < /etc/sysconfig/ipvsadm
[root@lvs ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  172.25.254.100:80 rr
  -> 192.168.0.10:80              Masq    1      0          0         
  -> 192.168.0.20:80              Masq    1      0          0  

你可能感兴趣的:(lvs,运维,linux)