基于 CentOS 7 构建 LVS群集

时间:2022-10-21 22:57:30

LVS介绍

LVS 是 Linux Virtual Server 的简写,即 Linux 虚拟服务器,是一个虚拟的服务器集群系统。此项目在 1998 年 5 月由章文嵩博士成立,是国内最早出现的*软件项目之一,是根据 iptables 的实现来开发的,所以使用的时候会和 iptables 相类似

官网:The Linux Virtual Server Project

中文站点: LVS中文站点

  1. 对比 LVS 负载均衡群集的 NAT 模式和 DR 模式,比较其各自的优势 。
  2. 构建 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
基于 CentOS 7 构建 LVS群集

基于 CentOS 7 构建 LVS群集
出现错误,可能是存在防火墙为关闭的情况
关闭防火墙在测试

配置 Director
下载工具
yum install ipvsadm -y
配置LVS虚拟IP(VIP)
cd /etc/sysconfig/network-scripts/
cp ifcfg-ens33 ifcfg-ens33:1
vi ifcfg-ens33:1

基于 CentOS 7 构建 LVS群集
vi ifcfg-ens33
基于 CentOS 7 构建 LVS群集
重启服务
systemctl restart network
基于 CentOS 7 构建 LVS群集

配置转发规则
#注意:三个 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
基于 CentOS 7 构建 LVS群集

配置 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

基于 CentOS 7 构建 LVS群集
关闭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

测试
基于 CentOS 7 构建 LVS群集

#测试效果,注意测试时,不要在 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 模式

基于 CentOS 7 构建 LVS群集
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
基于 CentOS 7 构建 LVS群集
修改网络配置,将网关进行更改

基于 CentOS 7 构建 LVS群集

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

测试:
基于 CentOS 7 构建 LVS群集