LVS 负载均衡集群

目录

LVS负载均衡群集部署

1.DR模式

1.配置负载调度器

2.部署共享存储nfs服务器

3.配置节点服务器

2.NAT模式

0.虚拟机预览

1.部署共享存储(NFS服务器)

2.web节点服务器

1.第一台web节点服务器

2.第二台web节点服务器

[3.配置负载调度器 NAT](#3.配置负载调度器 NAT)

1.配置SNAT转发规则

2.加载LVS内核模块

[3. 安装ipvsadm 管理工具](#3. 安装ipvsadm 管理工具)

4.配置负载分配策略


LVS调度器用的调度方法基本分为两类:

固定调度算法:rr,wrr,dh,sh

rr:轮询算法,将请求依次分配给不同的rs节点,即RS节点中均摊分配。适合于RS所有节点处理性能接近的情况。

wrr:加权轮训调度,依据不同RS的权值分配任务。权值较高的RS将优先获得任务,并且分配到的连接数将比权值低的RS更多。相同权值的RS得到相同数目的连接数。

dh:目的地址哈希调度(destination hashing)以目的地址为关键字查找一个静态hash表来获得所需RS。

sh:源地址哈希调度(source hashing)以源地址为关键字查找一个静态hash表来获得需要的RS。

动态调度算法:wlc,lc,lblc

wlc:加权最小连接数调度,假设各台RS的权值依次为Wi,当前tcp连接数依次为Ti,依次去Ti/Wi为最小的RS作为下一个分配的RS。

lc:最小连接数调度(least-connection),IPVS表存储了所有活动的连接。LB会比较将连接请求发送到当前连接最少的RS。

lblc:基于地址的最小连接数调度(locality-based least-connection):将来自同一个目的地址的请求分配给同一台RS,此时这台服务器是尚未满负荷的。否则就将这个请求分配给连接数最小的RS,并以它作为下一次分配的首先考虑。

LVS负载均衡群集部署

1.DR模式

原理:首先负载均衡器接收到客户的请求数据包时,根据调度算法决定将请求发送给哪个后端的真实服务器(RS)。然后负载均衡器就把客户端发送的请求数据包的目标MAC地址改成后端真实服务器的MAC地址(R-MAC)。真实服务器响应完请求后,查看默认路由,把响应后的数据包直接发送给客户端,不需要经过负载均衡器。

优点:负载均衡器只负责将请求包分发给后端节点服务器,而RS将应答包直接发给用户。所以,减少了负载均衡器的大量数据流动,负载均衡器不再是系统的瓶颈,也能处理很巨大的请求量。

缺点:需要负载均衡器与真实服务器RS都有一块网卡连接到同一物理网段上,必须在同一个局域网环境。

1.配置负载调度器

bash 复制代码
modprobe ip_vs

cat /proc/net/ip_vs

yum -y install ipvsadm
bash 复制代码
cd /etc/sysconfig/network-scripts/
cp ifcfg-ens33 ifcfg-ens33:0
vim ifcfg-ens33:0
DEVICE=ens33:0
ONBOOT=yes
IPADDR=192.168.64.100
NETMASK=255.255.255.255
# 配置虚拟 IP 地址

ifup ens33:0
ifconfig ens33:0
bash 复制代码
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
# 刷新参数
bash 复制代码
ipvsadm-save > /etc/sysconfig/ipvsadm
systemctl start ipvsadm


ipvsadm -C
ipvsadm -A -t 192.168.64.100:80 -s rr
ipvsadm -a -t 192.168.64.100:80 -r 192.168.64.40:80 -g
ipvsadm -a -t 192.168.64.100:80 -r 192.168.64.50:80 -g
ipvsadm

ipvsadm -ln
# 查看节点状态

2.部署共享存储nfs服务器

bash 复制代码
yum -y install nfs-utils rpcbind
mkdir /opt/pc /opt/mo
chmod 777 /opt/pc /opt/mo

vim /etc/exports

/usr/share *(ro,sync)
/opt/pc 192.168.80.0/24(rw,sync)
/opt/mo 192.168.80.0/24(rw,sync)
# 配置nfs共享文件

systemctl start rpcbind.service
systemctl start nfs.service

3.配置节点服务器

给2个节点服务器配置虚拟网卡(两个节点进行以下操作)

bash 复制代码
cd /etc/sysconfig/network-scripts/
cp ifcfg-lo ifcfg-lo:0
		
vim ifcfg-lo:0

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

systemctl restart network
ifconfig lo:0
route add -host 192.168.64.100 dev lo:0

vim /etc/rc.local
/sbin/route add -host 192.168.64.100 dev lo:0
bash 复制代码
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

yum -y install nfs-utils rpcbind httpd
systemctl start rpcbind
systemctl start httpd

第一个节点服务器

bash 复制代码
mkdir /var/www/html -p
mount.nfs 192.168.64.20:/opt/pc /var/www/html
echo 'this is pc web!' > /var/www/html/index.html

第二个节点服务器

bash 复制代码
mkdir /var/www/html -p
mount.nfs 192.168.64.20:/opt/mo /var/www/html
echo 'this is mo web!' > /var/www/html/index.html

2.NAT模式

原理:首先负载均衡器接收到客户的请求数据包时,根据调度算法决定将请求发送给哪个后端的真实服务器(RS)。然后负载均衡器就把客户端发送的请求数据包的目标IP地址及端口改成后端真实服务器的IP地址(RIP)。真实服务器响应完请求后,查看默认路由,把响应后的数据包发送给负载均衡器,负载均衡器在接收到响应包后,把包的源地址改成虚拟地址(VIP)然后发送回给客户端。

优点:集群中的服务器可以使用任何支持TCP/IP的操作系统,只要负载均衡器有一个合法的IP地址。

缺点:扩展性有限,当服务器节点增长过多时,由于所有的请求和应答都需要经过负载均衡器,因此负载均衡器将成为整个系统的瓶颈。

0.虚拟机预览

1.部署共享存储(NFS服务器)

bash 复制代码
yum install nfs-utils rpcbind -y
# 安装nfs

systemctl start rpcbind.service
systemctl start nfs.service
# 启动

systemctl enable nfs.service
systemctl enable rpcbind.service
# 设为开机自启
bash 复制代码
mkdir /opt/pc /opt/ben
chmod 777 /opt/pc /opt/ben
# 创建目录并给予权限

echo 'this is pc web!' > /opt/pc/index.html
echo 'this is ben web!' > /opt/ben/index.html
# 设置网页内容
bash 复制代码
vim /etc/exports
# 输入以下内容

/usr/share *(ro,sync)
/opt/pc 192.168.64.0/24(rw,sync)
/opt/ben 192.168.64.0/24(rw,sync)
bash 复制代码
exportfs -rv
# 发布共享

2.web节点服务器

bash 复制代码
yum install httpd -y
# 安装httpd

systemctl start httpd.service
systemctl enable httpd.service
# 启动并设为开机自启
bash 复制代码
yum install nfs-utils rpcbind -y
# 安装nfs

showmount -e 192.168.64.50
# 查询NFS服务器上已经导出的所有文件系统
bash 复制代码
systemctl start rpcbind
systemctl enable rpcbind
# 启动并开机自启

1.第一台web节点服务器

bash 复制代码
mount.nfs 192.168.64.50:/opt/pc /var/www/html
# 将nfs服务器的pc目录挂载到/var/www/html

vim /etc/fstab
# 修改配置文件以永久挂载
192.168.64.50:/opt/pc  /var/www/html        nfs     defaults,_netdev     0         0
# nfs服务器共享目录     挂载到本地的位置  文件系统类型     挂载选项      转储频率  自检次序

2.第二台web节点服务器

bash 复制代码
mount.nfs 192.168.64.50:/opt/ben /var/www/html
# 将nfs服务器的ben目录挂载到/var/www/html

vim /etc/fstab
# 修改配置文件以永久挂载
192.168.64.50:/opt/ben  /var/www/html       nfs     defaults,_netdev     0         0
# nfs服务器共享目录     挂载到本地的位置  文件系统类型     挂载选项      转储频率  自检次序

3.配置负载调度器 NAT

1.配置SNAT转发规则

bash 复制代码
vim /etc/sysctl.conf
# 修改配置文件
net.ipv4.ip_forward = 1

sysctl -p
# 读取变量
bash 复制代码
iptables -t nat -F
# 清空nat表

iptables -F
# 删除默认链

iptables -t nat -A POSTROUTING -s 192.168.64.0/24 -o ens36 -j SNAT --to-source 12.0.0.1
# 设置snat链

2.加载LVS内核模块

bash 复制代码
modprobe ip_vs					
# 加载 ip_vs模块

cat /proc/net/ip_vs				
# 查看 ip_vs版本信息

3. 安装ipvsadm 管理工具

bash 复制代码
yum -y install ipvsadm
# 安装ipvsadm 管理工具

ipvsadm-save > /etc/sysconfig/ipvsadm
# 启动服务前须保存负载分配策略

systemctl start ipvsadm.service

4.配置负载分配策略

bash 复制代码
ipvsadm -C 					
# 清除原有策略

ipvsadm -A -t 12.0.0.1:80 -s rr
ipvsadm -a -t 12.0.0.1:80 -r 192.168.64.30:80 -m -w 1
ipvsadm -a -t 12.0.0.1:80 -r 192.168.64.40:80 -m -w 1

ipvsadm						
# 启用策略
bash 复制代码
ipvsadm -ln					
# 查看节点状态,Masq代表 NAT模式
ipvsadm-save > /opt/ipvsadm						
# 保存策略
ipvsadm-save > /etc/sysconfig/ipvsadm
相关推荐
追风赶月、30 分钟前
【Linux】线程概念与线程控制
linux·运维·服务器
CP-DD43 分钟前
Docker 容器化开发 应用
运维·docker·容器
努力的悟空2 小时前
国土变更调查拓扑错误自动化修复工具的研究
运维·自动化
周末不下雨3 小时前
win11+ubuntu22.04双系统 | 联想 24 y7000p | ubuntu 22.04 | 把ubuntu系统装到1T的移动固态硬盘上!!!
linux·运维·ubuntu
耗同学一米八4 小时前
2024 年河北省职业院校技能大赛网络建设与运维赛项样题四
运维·网络
东华果汁哥5 小时前
【linux 免密登录】快速设置kafka01、kafka02、kafka03 三台机器免密登录
linux·运维·服务器
肖永威5 小时前
CentOS环境上离线安装python3及相关包
linux·运维·机器学习·centos
布鲁格若门5 小时前
CentOS 7 桌面版安装 cuda 12.4
linux·运维·centos·cuda
Eternal-Student5 小时前
【docker 保存】将Docker镜像保存为一个离线的tar归档文件
运维·docker·容器
dessler6 小时前
云计算&虚拟化-kvm-扩缩容cpu
linux·运维·云计算