文章目录
- 一、LVS简介
- 二、LVS相关术语
- 三、LVS调度算法
- 四、LVS三种工作模式
- NAT模式
- DR模式
- TUN模式
- 五、完整配置步骤
一、LVS简介
LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统。本项目在1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一。
LVS的核心思想是将传入的网络流量分配到后端的多个真实服务器上。对于每个客户端请求,LVS会选择最适合该请求的服务器,并将其转发到该服务器。这样做可以提高系统的可伸缩性和负载均衡能力。
二、LVS相关术语
1、 DS:Director Server。指的是前端负载均衡器节点。
2、 RS:Real Server。后端真实的工作服务器。
3、 VIP:Visual Server IP,向外部直接面向用户请求,作为用户请求的目标的IP地址。
4、 DIP:Director Server IP,主要用于和内部主机通讯的IP地址。
5、 RIP:Real Server IP,后端服务器的IP地址。
6、 CIP:Client IP,访问客户端的IP地址
三、LVS调度算法
- 静态调度
rr(Round Robin): 轮询
wrr(weight):加权
sh(source hashing): 源地址散列
dh(Destination Hashing): 目标地址散列 - 动态调度
lc(Least-Connection): 最少连接
wlc(Weighted Least-Connection): 加权最少连接
sed(Shortest Expected Delay): 最短期望延迟
nq(never queue): 永不排队
LBLC(Locality-Based Least Connection): 基于本地的最少连接
LBLCR(Locality-Based Least Connections withReplication): 基于本地的带复制功能的最少连接
四、LVS三种工作模式
LVS有三种主要的负载均衡策略:IP隧道、NAT和直接路由。其中,IP隧道和NAT在LVS的工作方式方面比较相似,它们都需要LVS作为数据包的中间人来重定向流量。而直接路由则更加简单,因为它不需要对数据包进行操作或修改。
NAT模式
NAT(Network Address Translation,网络地址转换)是一种将私有网络地址转换为公网地址的技术。在互联网中,NAT允许多个设备使用同一个公共IP地址来访问互联网,通过在路由器或防火墙上配置NAT规则,将私有IP地址转换为公共IP地址,从而使局域网内的设备可以访问互联网,同时保护了局域网内的设备不受来自互联网的攻击。
- S.NAT
S.NAT是一种将源IP地址和端口号进行修改的技术,它通常用于在私有网络和公共网络之间进行通信时,将私有网络内的IP地址转换为公共网络的IP地址,以保护私有网络的安全性。S.NAT可以使私有网络内的主机访问公共网络上的服务,同时隐藏了私有网络的真实IP地址,增加了网络安全性。
- D.NAT
D.NAT是一种将目标IP地址和端口号进行修改的技术,它通常用于在公共网络和私有网络之间进行通信时,将公共网络的IP地址转换为私有网络的IP地址。D.NAT可以使公共网络上的主机访问私有网络内的服务,同时隐藏了私有网络的真实IP地址,增加了网络安全性。
LVS运用了D.NAT(Destination NAT)技术。在LVS中,使用D.NAT将客户端请求的目标IP地址和端口号改为LVS集群中一个真实服务器的IP地址和端口号,使得客户端看到的是LVS集群中的一个真实服务器在提供服务,而不是LVS本身。这样可以实现负载均衡和高可用性。而S.NAT(Source NAT)则是将客户端的源IP地址改为LVS的IP地址,这种方式在LVS中并不常用。
DR模式
DR(Direct Routing)模式通过为请求报文重新封装一个MAC首部进行转发,源MAC是DIP所在的接口的MAC,目标MAC是某挑选出的RS的RIP所在接口的MAC地址;源IP/PORT,以及目标IP/PORT均保持不变。在DR模式下,LVS负载均衡器只对客户端请求进行处理和响应,并将数据包直接转发到后端服务器。
TUN模式
LVS收到客户端请求,进行IP Tunnel封装,在原有的包头加上IP Tunnel的包头,然后发送给服务器,服务器根据Tunnel协议解开包头,得到真实客户端请求并进行处理,最终以VIP地址为源IP地址返回给客户端
五、完整配置步骤
以DR模型为例
node01配置DIP(eth0:1网卡)
ifconfig eth0:8 192.168.150.100/24
修改node02~node03内核,并配置VIP(lo虚拟网卡)
#1)修改内核:
echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/eth0/arp_announce
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
#2)设置隐藏的vip:
ifconfig lo:3 192.168.150.100 netmask 255.255.255.255
node02~node03安装http服务并初始化页面
# 1)安装httpd服务
yum install httpd -y
# 2)启动http服务
service httpd start
# 3)编辑index.html
vi /var/www/html/index.html
# 4)页面内容,:wq 保存退出
from node02
node01安装ipvsadm
yum install ipvsadm
node01配置入口
#TCP协议 入口地址 指定调度算法,这里是轮询调度(Round Robin)算法
ipvsadm -A -t 192.168.150.100:80 -s rr
node01配置出口
#TCP协议 映射入口和出口地址 -g表示开启网关模式,-w 1表示设置权重值为1
ipvsadm -a -t 192.168.150.100:80 -r 192.168.150.12 -g -w 1
ipvsadm -a -t 192.168.150.100:80 -r 192.168.150.13 -g -w 1
查看配置的负载规则
#查看配置的负载规则
ipvsadm -ln
#查看负载均衡记录(访问了请求之后的偷窥记录本)
ipvsadm -lnc
#查看socket连接状态,node01看不到socket连接,node02~node03有很多socket连接
netstat -natp
整体拓扑图如下