LVS负载均衡群集,NAT模式和DR模式

发布时间 2023-09-17 18:51:05作者: 行走的泡泡

一、集群

1.1集群的含义

群集   集群    cluster
特点:由多台主机构成,都干同样的一件事,对外展现为一个整体

1.2群集的类型:

1)负载均衡群集 LB
提高系统响应效率,处理更多的访问请求,减少延迟,实现高并发、高负载的能力
典型代表:软件类:LVS  Nginx  HAProxy 等     硬件类:F5  绿盟
2)高可用群集 HA
提高系统可靠性,减少中断时间,确保服务的连续性(通常使用 N 个 9 来代表高可用的指标)
典型代表:Keepalived    heartbeat
3)高性能运输群集 HPC
通过云计算或分布式计算获取高性能的CPU、内存等资源,来提高整体运算能力

1.3LVS 的三种工作模式:

1)NAT 地址转换
调度器会作为所以节点服务器的默认网关,也是客户端的访问入口和节点服务器返回响应消息的出口,也就是说调度器会承载双向数据流量的负载压力,可能会成为整个群集的性能瓶颈。由于节点服务器都处于内网环境,使用私网IP地址,所以具有一定安全性。
2)TUN IP隧道 IP Tunnel
调度器仅作为客户端的访问入口,节点服务器的响应消息是直接返回给客户端的,不需要经过调度器。但是由于节点服务器需要部署在不同位置的公网环境中,需要具有独立的公网IP,调度器与节点服务器是通过专用的IP隧道实现相互通信的,因此IP隧道模式的成本较高、安全性较低,且IP隧道需要额外的封装和解封装,性能会受到一定的影响。
3)DR 直接路由  Direct Routing
调度器仅作为客户端的访问入口,节点服务器的响应消息是直接返回给客户端的,不需要经过调度器。(与NAT模式的区别)
节点服务器与调度器是部署在同一个物理网络内,因此不需要建立专用的IP隧道。(与TUN模式的区别)
DR模式是企业首选的LVS模式。

1.4LVS 调度算法

rr 轮询    wrr 加权轮询   sh 源地址哈希   dh 目的地址哈希   lc 最小连接   wlc 加权最小连接   lblc 基于地址的最小连接

1.5LVS-NAT模式配置步骤:

1)配置 NFS 共享存储
2)节点服务器安装 Web 服务,注意:默认网关要指向 调度器的IP地址,测试的时候关闭连接保持
3)调度服务器要开启 IP路由转发 功能和设置 SNAT 等 iptables 规则,安装 ipvsadm 工具,配置虚拟服务器和真实节点服务器相关配置
4)客户端测试的时候网关要指向 调度器的IP地址

 1.6ipvsadm 工具选项说明:

-A:添加虚拟服务器
-D:删除整个虚拟服务器
-s:指定负载调度算法(轮询:rr、加权轮询:wrr、最少连接:lc、加权最少连接:wlc)
-a:表示添加真实服务器(节点服务器)
-d:删除某一个节点
-t:指定 VIP地址及 TCP端口
-r:指定 RIP地址及 TCP端口
-m:表示使用 NAT群集模式
-g:表示使用 DR模式
-i:表示使用 TUN模式
-w:设置权重(权重为 0 时表示暂停节点)
-p 60:表示保持长连接60秒(默认关闭连接保持)
-l:列表查看 LVS 虚拟服务器(默认为查看所有)
-n:以数字形式显示地址、端口等信息,常与“-l”选项组合使用。ipvsadm -ln

二、LVS-NAT模式

负载调度器:内网关 ens33:192.168.249.100,外网关 ens36:12.0.0.1
Web节点服务器1:192.168.249.101
Web节点服务器2:192.168.249.102
NFS服务器:192.168.249.103
客户端:12.0.0.12

2.1配置NFS共享(192.168.249.103)

#关闭防火墙

systemctl disable --now firewalld.service
setenforce 0

#安装nfs服务

yum install nfs-utils rpcbind -y

#新建目录,并创建站点文件
cd /opt/
mkdir nfs
cd nfs
mkdir gongxiang1 gongxiang2               #创建文件夹
chmod 777 gongxiang1 gongxiang2        #赋予其他用户权限
echo "this is gongxiang1" >gongxiang1/index.html      #写共享文件
echo "this is gongxiang2" >gongxiang2/index.html      #写共享文件
#设置共享策略
vim /etc/exports
/opt/nfs/gongxiang1 192.168.249.0/24(rw,sync,no_root_squash)
/opt/nfs/gongxiang2 192.168.249.0/24(rw,sync,no_root_squash)
#开启服务
systemctl start rpcbind                      #一般先开启rpcbind
systemctl start nfs                            #后开启nfs
#查看当前共享目录
showmount -e

2.2配置节点服务器(192.168.249.101  192.168.249.102)

WEB1:

#关闭防火墙
systemctl disable --now firewalld.service
setenforce 0
#安装httpd服务
yum install httpd -y
#查看nfs服务
showmount -e 192.168.249.103
#挂载站点
mount 192.168.249.103:/opt/nfs/gongxiang1 /var/www/html/
#开启httpd服务
systemctl start httpd
#指定网关
vim /etc/sysconfig/network-scripts/ifcfg-ens33
GATEWAY=192.168.249.100
DNS1=8.8.8.8
#重启网络服务
systemctl restart network

 

WEB2:

#关闭防火墙
systemctl disable --now firewalld.service
setenforce 0
#安装httpd服务
yum install httpd -y
#查看nfs服务
showmount -e 192.168.249.103
#挂载站点
mount 192.168.249.103:/opt/nfs/gongxiang2 /var/www/html/
#开启httpd服务
systemctl start httpd
#指定网关
vim /etc/sysconfig/network-scripts/ifcfg-ens33
GATEWAY=192.168.249.100
DNS1=8.8.8.8
#重启网络服务
systemctl restart network

2.3配置负载调度器

#关闭防火墙
systemctl disable --now firewalld.service
setenforce 0
#安装ipvsadm
yum install -y ipvsadm*
#添加网卡,配置网卡
cd /etc/sysconfig/network-scripts/
cp ifcfg-ens33 ifcfg-ens36
vim ifcfg-ens33
vim ifcfg-ens36
#打开路由转发功能
vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
sysctl -p  #查看配置的路由转发
#防火墙做策略,先查看策略
iptables -nL -t nat
#清空策略
iptables -F
#添加策略
iptables -t nat -A POSTROUTING -s 192.168.249.0/24 -o ens36 -j SNAT --to 12.0.0.1 
#查看策略
iptables -nL -t nat
#加载LVS内核模块
modprobe ip_vs
cat /proc/net/ip_vs
#开启ipvsadm服务
ipvsadm-save >/etc/sysconfig/ipvsadm
systemctl start ipvsadm.service
#清空策略
ipvsadm -C
#制定策略
#指定IP地址 外网的入口  -s rr  轮询
ipvsadm -A -t 12.0.0.1:80 -s rr
#先指定虚拟服务器再添加真实服务器地址,-r:真实服务器地址 -m指定nat模式
ipvsadm -a -t 12.0.0.1:80 -r 192.168.249.101:80 -m
ipvsadm -a -t 12.0.0.1:80 -r 192.168.249.102:80 -m
#开启服务
ipvsadm
查看策略
ipvsadm -ln

3.0测试

用客户端访问调度器,自动轮询显示web1和web2的内容。

三、LVS-DR模式

DR模式,负载调度器接收到了客户端的请求,将客户端的请求发送给WEB服务器,WEB服务器处理好之后,不通过调度器,而是直接把处理结果发回给客户端。

DR模式,在之后NAT模式的基础上,还利用原来的NFS配置,NFS服务器不变,

3.1配置负载调度服务器

yum install ipvsadm.x86_64 -y    #安装服务

#配置虚拟IP地址(VIP:192.168.217.50)

cd /etc/sysconfig/network-scripts/
cp ifcfg-ens33 ifcfg-ens33:0
vim ifcfg-ens33:0
#重启网络服务、启动网卡

ifdown ifcfg-ens33:0 ifup ifcfg-ens33:0

#调整/proc响应参数

vim /etc/sysctl.conf
net.ipv4.ip_forward = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0
#刷新配置

sysctl -p

#加载模块

modprobe ip_vs
cat /proc/net/ip_vs
#配置负载分配策略,并启动服务

ipvsadm-save >/etc/sysconfig/ipvsadm
systemctl start ipvsadm.service
#清空ipvsadm,并做策略

##添加真实服务器-a  指定VIP地址及TCP端口-t   指定RIP地址及TCP端口 -r 指定DR模式-g
ipvsadm -C
ipvsadm -A -t 192.168.217.50:80 -s rr
ipvsadm -a -t 192.168.217.50:80 -r 192.168.217.110:80 -g
ipvsadm -a -t 192.168.217.50:80 -r 192.168.217.120:80 -g
#保存设置

ipvsadm
ipvsadm -ln

3.2配置WEB服务器

还是利用原来的挂载服务,添加回环网卡,修改回环网卡名,IP地址,子网掩码

cd /etc/sysconfig/network-scripts/
cp ifcfg-lo ifcfg-lo:0
vim ifcfg-lo:0


DEVICE=lo:0
IPADDR=192.168.249.50
NETMASK=255.255.255.255
ONBOOT=yes

#设置路由

route add -host 192.168.249.50 dev lo:0
route -n                                                          #查看
#开机执行命令

vim /etc/rc.d/rc.local
route add -host 192.168.249.50 dev lo:0
chmod +x /etc/rc.d/rc.local            #赋予执行权限

调整 proc 响应参数

添加系统只响应目的IP为本地IP的ARP请求

系统不使用原地址来设置ARP请求的源地址,而是物理mac地址上的IP

vim /etc/sysctl.conf

net.ipv4.conf.lo.arp_ignore = 1  
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2

sysctl -p    #查看

第二台WEB服务器同样的配置

4测试

用12.0.0.12的客户端来访问调度器,显示WEB服务器内容,轮询显示。