LVS 是 Linux Virtual Server 的简写,即 Linux 虚拟服务器,是一个虚拟的服务器集群系统。此项目在 1998 年 5 月由章文嵩博士成立,是国内最早出现的自由软件项目之一,是根据 iptables 的实现来开发的,所以使用的时候会和 iptables 相类似
官网:The Linux Virtual Server Project
中文站点: LVS中文站点
NAT模式(网络地址映射)
IP TUN模式(IP Tunneling IP隧道)
DR模式(Direct Routing 直接路由)
不同的转发模式决定了不同的的网络结构
NAT模式 | IP TUN模式 | DR模式 | |
---|---|---|---|
对服务器要求 | 任何操作系统均支持 | 必须支持IP隧道协议,目前只有Linux支持 | 支持虚拟网卡,且可以禁用ARP响应 |
网络要求 | 局域网 | 局域网或广域网 | 局域网 |
支持的节点数 | 10~20个,视Director处理能力而定 | 可以支持到100个节点 | 可以支持到100个节点 |
安全性 | 较高,可隐藏real server | 较差,real server 容易暴露 | 较差,real server 容易暴露 |
IP要求 | 仅需要一个合法IP地址作为VIP | 除VIP外,每个服务器需要拥有合法IP地址可以直接路由至客户端 | 除VIP外,每个服务器需要拥有合法IP地址可以直接路由至客户端 |
拓展性 | 差 | 很好 | 好 |
特点 | 地址转换 | 封装IP | 修改MAC地址 |
DR群集模式:LVS负载调度器和节点需要共同VIP地址,应关闭Linux内核的重定向参数响应。
节点服务器:同样要有VIP地址,但此地址仅用作发送Web响应数据包的原地址,不需要监听客户机的访问请求(改由调度器监听毕分发)。
配置
环境准备
角色 | IP地址 | 主机名 | 服务或工具 |
---|---|---|---|
Director | VIP:172.25.10.110 DIP:172.25.10.110 | 172.25.10.111 | ipvsadm |
RS1 | RIP1:172.25.10.120 | 172.25.10.120 | httpd |
RS2 | RIP2:172.25.10.130 | 172.25.10.130 | httpd |
首先,给node2和node3下载使用httpd服务
下载
yum install httpd -y
写内容,配web主页内容
echo "`hostname -I`,web test page" > /var/www/html/index.html
启动服务
systemctl start httpd
测试
curl 172.25.10.120
配置 Director
下载工具
yum install ipvsadm -y
配置LVS虚拟IP(VIP)
cd /etc/sysconfig/network-scripts/
cp ifcfg-ens33 ifcfg-ens33:1
vi ifcfg-ens33:1
vi ifcfg-ens33
重启服务
systemctl restart network
配置转发规则
#注意:三个 LVS 模式中,只有 NAT 模式需要开启路由转发功能,DR 和 TUN 模式不需要开启
-g 表示 DR 模式
ipvsadm -At 172.25.10.110:80 -s rr
ipvsadm -at 172.25.10.110:80 -r 172.25.10.120:80 -g
ipvsadm -at 172.25.10.110:80 -r 172.25.10.130:80 -g
配置 RS1和RS2
增加一个本地回环接口,将VIP地址配置到回环接口上
cd /etc/sysconfig/network-scripts/
cp ifcfg-lo ifcfg-lo:1
vi ifcfg-lo:1
DEVICE=lo:1
IPADDR=172.25.10.110
NETMASK=255.255.255.255
ONBOOT=yes
NAME=loopback
#注意ens33网口的网关,网关指向公网出口路由器IP
重启服务
systemctl restart network
cat >> /etc/sysctl.conf << EOF
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
EOF
#测试效果,注意测试时,不要在 Director 或 RS 上测试,需要另外再开一台新虚拟机安装 elinks 测试.
这个还存在问题,仅供参考
环境准备
需要将环境回滚
角色 | IP地址 | 主机名 | 服务或工具 |
---|---|---|---|
Director | VIP(ens36):10.0.0.1 DIP(ens33):172.25.10.110 | 172.25.10.110 | ipvsadm |
RS1 | RIP1(ens33):172.25.10.120 | 172.25.10.120 | httpd |
RS2 | RIP2(ens33):172.25.10.130 | 172.25.10.130 | httpd |
配置前需要给 Director 增加了一张网卡设置为桥接模式,用于模拟 Director 的 VIP,其它网卡均为 NAT 模式
systemctl stop firewalld.service
systemctl disable firewalld.service
setenforce 0
下载相关软件服务
yum install httpd -y
写内容,配web主页内容
echo "`hostname -I`,web test page" > /var/www/html/index.html
启动服务
systemctl start httpd
测试
curl 172.25.10.120
修改网络配置,将网关进行更改
Director配置过程
关闭防火墙
systemctl stop firewalld.service
systemctl disable firewalld.service
setenforce 0
打开路由转发功能
echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf
sysctl -p
iptables -t nat -F
iptables -F
iptables -t nat -A POSTROUTING -s 172.25.10.0/24 -o ens36 -j SNAT --to-source 10.0.0.1
安装ipvsadm 管理工具
yum -y install ipvsadm
ipvsadm -C
ipvsadm -A -t 10.0.0.1:80 -s rr
ipvsadm -a -t 10.0.0.1:80 -r 172.25.10.120:80 -m -w 1
ipvsadm -a -t 10.0.0.1:80 -r 172.25.10.130:80 -m -w 1