LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统。本项目在1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一。
相关术语
CIP:客户端IP
Director:负责调度集群的主机;也简称调度器、分发器
VIP:通常此IP绑定域名,对外公布的IP,即客户请求进来的IP地址
DIP:调度器和RealServer的RIP通信的IP
RealServer:也称为真实内部服务器,是真正在提供WEB服务的,简称RS
RIP:内部真正提供服务的主机IP
负载均衡LVS_NAT(地址转换模型)原理:
RS1的RIP1、RS2的RIP2在私网内,不能与外界通信,但是可以和Director的DIP通信,而Director的VIP是与外界连通的,所以RS1、RS2与外界的通信必须经过Director转发。
客户端请求WEB资源,发送请求到director的VIP,Director通过负载均衡算法选择RS1,通过修改数据帧的目标地址,通过DIP转发给RS1的RIP1;RS1将请求的WEB资源封装响应给CIP,不过要先发送到Director进行转发给客户端CIP
模拟过程:
当客户端CIP请求WEB资源时,将请求数据帧发往VIP,此时
源IP | 目标IP |
CIP | VIP:172.16.58.1 |
Director通过负载均衡算法选定出RS1,并将客户端CIP请求WEB资源的数据帧的目标IP改为RS1的RIP1,此时
源IP | 目标IP |
CIP | RIP1:192.168.10.8 |
RS1接收数据帧后,将请求的WEB资源重新封装响应给CIP,但是必须要经过Director的转发才可以响应给CIP,此时
源IP | 目标IP |
RIP1:192.168.10.8 | CIP |
Director接收到来自RS1响应的数据帧后,要修改源IP为VIP来响应客户端的请求,此时
源IP | 目标IP |
VIP:172.16.58.1 | CIP |
这样就完成了一次客户端访问WEB资源的过程
实验环境准备:
配置一个lvs_nat模型集群,我们这里需要三个虚拟机,一个为Director,一个RIP1,一个RIP2.
Director:负载均衡调度器 VIP:172.16.58.1 DIP:192.168.10.7 |
RS1:真实WEB服务器1 RIP1:192.168.10.8 |
RS2:真实WEB服务器2 RIP1:192.168.10.9 |
作为Director的虚拟机先关机添加一块网卡,设备为eth1
DIP、 RIP1 、RIP2在同一私网内,这三台虚拟机网卡都选择同一网络连接方式
实战配置:
以下均为临时设置,想要永久有效需要修改配置文件/etc/sysconfig/network-scripts/INTERFACE
RS1的配置:
#设置RIP1
ifconfig eth0 192.168.10.8up
#查看
ifconfig
#启动httpd
service httpd start
#查看httpd启动是否成功,80端口是否启用
ss –tnl | grep :80
#添加index.html首页用于测试
echo “RS1” > /var/www/html/index.html
#查看测试页
curl http://192.168.10.8
#从服务器上同步时间
ntpdate 172.16.0.1
RS2的配置:
#设置RIP2
ifconfig eth0 192.168.10.9up
#查看
ifconfig
#启动httpd
service httpd start
#查看httpd启动是否成功,80端口是否启用
ss –tnl | grep :80
#添加index.html首页用于测试
echo “RS1” > /var/www/html/index.html
#查看测试页
curl http://192.168.10.8
#从服务器上同步时间
ntpdate 172.16.0.1
Director的配置:
#设置VIP
ifconfig eth0 172.16.58.1 up
#设置DIP
ifconfig eth0 192.168.10.7 up
#查看
ifconfig
#清除iptables规则
iptales -F
service iptales save
#开启转发功能
echo 1> /proc/sys/net/ipv4/ip_forward
或者修改配置文件/etc/sysctl.conf
net.ipv4.ip_forward = 1
sysctl–p 使配置生效
#添加集群服务
ipvsadm –A –t 172.16.58.1:80 –s rr
#添加真实服务器RS1、RS2
ipvsadm –a –t 172.16.58.1:80–r 192.168.10.8 –m
ipvsadm –a –t 172.16.58.1:80–r 192.168.10.9 –m
#从服务器上同步时间
ntpdate 172.16.0.1
#访问测试效果
浏览器访问172.16.58.1,不断刷新