LVS介绍
LVS 是 Linux Virtual Server 的简写,即 Linux 虚拟服务器,是一个虚拟的服务器集群系统。此项目在 1998 年 5 月由章文嵩博士成立,是国内最早出现的自由软件项目之一,是根据 iptables 的实现来开发的,所以使用的时候会和 iptables 相类似
官网:The Linux Virtual Server Project
中文站点: LVS中文站点
- 对比 LVS 负载均衡群集的 NAT 模式和 DR 模式,比较其各自的优势 。
- 构建 LVS-DR 群集时,在调度器与节点服务器中的 /proc 参数调整有何区别?
LVS三种模式介绍
NAT模式(网络地址映射)
 IP TUN模式(IP Tunneling IP隧道)
 DR模式(Direct Routing 直接路由)
 不同的转发模式决定了不同的的网络结构
1. 对比 LVS 负载均衡群集的 NAT 模式和 DR 模式,比较其各自的优势 。
三种模式对比
| 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地址 | 
2. 构建 LVS-DR 群集时,在调度器与节点服务器中的 /proc 参数调整有何区别?
DR群集模式:LVS负载调度器和节点需要共同VIP地址,应关闭Linux内核的重定向参数响应。
节点服务器:同样要有VIP地址,但此地址仅用作发送Web响应数据包的原地址,不需要监听客户机的访问请求(改由调度器监听毕分发)。
3. 基于 CentOS 7 构建 LVS-DR 群集。
配置
 环境准备
| 角色 | 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
查看配置好的转发规则
 ipvsadm -Ln
 
配置 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

 关闭ARP转发
 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 测试.
4. 基于 CentOS 7 构建 LVS-NAT 群集。
这个还存在问题,仅供参考
环境准备
 需要将环境回滚
| 角色 | 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 模式

 RS1
 关闭防火墙
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
测试:
 










