企业网站 数据库百度有免费推广广告
一、LVS
1. LVS概述
LVS(Linux Virtual Server、Linux虚拟服务)是一种基于Linux系统集群的负载均衡方案,属于四层的负载均衡。
- 集群:将相同组件部署在不同的服务器上,提供统一的服务,以及同样的功能,各台服务器的性能大致相同。
- 分布式:把不同组件部署在不同服务器上,组件之间依靠网络通信,实现定制化功能。
2. LVS相关概念
系统性能的扩展方式
- 单节点扩展:
- 垂直扩展,向上扩展,提升计算机的性能(硬件性能),性能提升有限。
- 水平扩展,向外扩展,增加设备的数量提供性能,也就是集群的由来。
集群类型
- 负载均衡
- HA(高可用)主要有两种:负载均衡高可用,主备高可用。
系统的可靠性指标
- MTBF(平均无故障时间)
- MTTR(平均故障恢复时间)
- 指标计算方式:MTBF/(MTBF+MTTR)*100%,指标范围越接近1越好。
- 停机时间通常不会算在故障时间内,计划停机时间不计算在故障范围内,计划外停机时间计算在故障时间内。
LVS常见术语
- VS(Virtual Server):LVS的逻辑名字,外部访问LVS的IP地址和端口。
- DS(Director Server):LVS集群的主服务器、调度器,是集群的核心。接受客户端的请求,然后根据负载均衡的算法转发到后端RS。
- RS(Real Server):LVS集群中的真实服务器,也就是后端服务器,接收调度器转发的请求。
- CIP(Client IP):客户端的IP地址。
- VIP(Virtual IP):虚拟IP地址,对外提供服务的IP地址。
- DIP(Director Server IP):调度器的IP地址。
- RIP(Real Server IP):后端服务器的IP地址。
LVS负载均衡的模式
- NAT模式:地址转换模式,是最为常用的模式。
- DR模式:直连路由模式,性能最佳。
- TUN模式:隧道模式,通过VPN实现。
3. NAT模式
NAT模式也就是地址转换模式。在这种模式下,LVS中的DS类似一个路由。客户端发出的请求先发送给DS,请求数据包中的目标地址VIP会转换为RIP;RS处理完请求,响应数据包中的源地址RIP会转换成VIP。
这种模式性能较差,后端的真实服务器数量通常在10~30台左右。请求和响应都会经过DS,所以DS的性能会成为整个LVS的性能瓶颈。
4. DR模式
DR模式是直连路由模式,调度器只负责请求的转发,后端服务器的响应会直接返回给客户端。DS和RS属于同一个网络。
5. TUN模式
TUN模式是隧道模式,调度器只负责请求的转发,后端服务器和调度器通过VPN实现互相通信。
6. 三种模式比较
NAT | DR | TUN | |
---|---|---|---|
优点 | 配置简单 | 性能最好 | 使用VPN |
缺点 | 性能低 | 不支持跨网段 | 必须使用VPN |
真实服务器 | 配置低 | 要屏蔽ARP响应 | 要配置VPN |
支持的网络类型 | 内网 | 内网 | 内网或外网 |
真实服务器数量 | 10~30 | 100 | 100 |
7. ipvsadm命令 – 管理Linux虚拟服务器
ipvsadm命令来自英文词组“IPVS administration”的缩写,功能是用于管理Linux虚拟服务器。
ipvsadm [选项] IP地址
常见的选项:
选项 | 功能 |
---|---|
-a | 添加真实服务器 |
-A | 添加虚拟服务器 |
-D | 删除虚拟服务器 |
-g | 设置LVM为DR模式 |
-i | 设置LVM为TUN模式 |
-m | 设置LVM为NAT模式 |
-n | 以数字形式显示IP地址 |
-r | 设置真实服务器 |
-s | 设置负载均衡算法 |
-t | 设置TCP协议的虚拟服务 |
-w | 设置权重 |
二、LVS具体配置
1. LVS NAT模式
1.1 配置DS服务器
-
加载系统的LVS内核模块。
modprobe ip_vs
-
下载ipvsadm软件包。
apt -y install ipvsadm
-
设置虚拟服务器,指定访问端口为TCP/80,负载均衡策略为轮询模式。
ipvsadm -A -t 12.0.0.10:80 -s rr
-
设置RS服务器,指定LVM为NAT模式。
ipvsadm -a -t 12.0.0.10:80 -r 192.168.1.129 -m ipvsadm -a -t 12.0.0.10:80 -r 192.168.1.130 -m
-
查看ipvsadm是否成功设置策略。
ipvsadm -ln
-
配置服务器的两个网卡。
network:ethernets:ens33:dhcp4: noaddresses: [192.168.1.128/24]ens37:dhcp4: noaddresses: [12.0.0.10/24]
-
保存网卡配置后,应用配置使其生效。
netplan apply
-
编辑系统内核文件/etc/sysctl.conf,开启路由转发功能。
net.ipv4.ip_forward = 1
-
应用内核配置,使其生效。
sysctl -p
-
配置SNAT策略。
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o ens37 -j SNAT --to-source 12.0.0.10
1.2 配置RS服务器
-
配置两台RS服务器的网卡,设置网关为DS服务器的内网IP(ens33网卡)。
# 第一台RS服务器 network:ethernets:ens33:dhcp4: noaddresses: [192.168.1.129/24]gateway4: 192.168.1.128# 第二台RS服务器 network:ethernets:ens33:dhcp4: noaddresses: [192.168.1.130/24]gateway4: 192.168.1.128
-
保存网卡配置后,应用配置使其生效。
netplan apply
-
开启两台RS服务器的Nginx服务。
systemctl start nginx
1.3 客户端访问测试
-
配置客户端网卡。
network:ethernets:ens33:dhcp4: noaddresses: [12.0.0.11/24]gateway4: 12.0.0.10
-
保存网卡配置后,应用配置使其生效。
netplan apply
-
访问VIP地址。
curl 12.0.0.10
2. LVS DR模式
2.1 配置DS服务器
-
加载系统的LVS内核模块。
modprobe ip_vs
-
下载ipvsadm软件包。
apt -y install ipvsadm
-
设置虚拟服务器,指定访问端口为TCP/80,负载均衡策略为轮询模式。
ipvsadm -A -t 192.168.1.200:80 -s rr
-
设置RS服务器,指定LVM为DR模式。
ipvsadm -a -t 192.168.1.200:80 -r 192.168.1.129 -g ipvsadm -a -t 192.168.1.200:80 -r 192.168.1.130 -g
-
查看ipvsadm是否成功设置策略。
ipvsadm -ln
-
配置服务器的两个网卡。
network:ethernets:ens33:dhcp4: noaddresses: [192.168.1.128/24]gateway4: 192.168.1.254ens37:dhcp4: noaddresses: [192.168.1.200/32]gateway4: 192.168.1.254
-
保存网卡配置后,应用配置使其生效。
netplan apply
-
编辑系统内核文件/etc/sysctl.conf,关闭路由转发相关功能,也就是不将DS服务器作为路由器。
net.ipv4.ip_forward = 0 net.ipv4.conf.all.send_redirects = 0 net.ipv4.conf.default.send_redirects = 0 net.ipv4.conf.ens37.send_redirects = 0
-
应用内核配置,使其生效。
sysctl -p
2.2 配置RS服务器
-
配置两台RS服务器的网卡。
# 第一台RS服务器 network:ethernets:ens33:dhcp4: noaddresses: [192.168.1.129/24]gateway4: 192.168.1.254ens37:dhcp4: noaddresses: [192.168.1.200/32]# 第二台RS服务器 network:ethernets:ens33:dhcp4: noaddresses: [192.168.1.130/24]gateway4: 192.168.1.254ens37:dhcp4: noaddresses: [192.168.1.200/32]
-
保存网卡配置后,应用配置使其生效。
netplan apply
-
配置两台RS服务器的静态路由。
route add -host 192.168.1.200 dev ens37
-
编辑系统内核文件/etc/sysctl.conf,配置ARP响应相关参数。
net.ipv4.conf.ens37.arp_ignore = 1 net.ipv4.conf.ens37.arp_announce = 2
-
应用内核配置,使其生效。
sysctl -p
-
开启两台RS服务器的Nginx服务。
systemctl start nginx
2.3 客户端访问测试
-
配置客户端网卡。
network:ethernets:ens33:dhcp4: noaddresses: [192.168.1.5/24]gateway4: 192.168.1.254
-
保存网卡配置后,应用配置使其生效。
netplan apply
-
访问VIP地址。
curl 192.168.1.200