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
相关推荐
七夜zippoe3 小时前
CANN Runtime任务描述序列化与持久化源码深度解码
大数据·运维·服务器·cann
Fcy6485 小时前
Linux下 进程(一)(冯诺依曼体系、操作系统、进程基本概念与基本操作)
linux·运维·服务器·进程
袁袁袁袁满5 小时前
Linux怎么查看最新下载的文件
linux·运维·服务器
代码游侠5 小时前
学习笔记——设备树基础
linux·运维·开发语言·单片机·算法
主机哥哥5 小时前
阿里云OpenClaw部署全攻略,五种方案助你快速部署!
服务器·阿里云·负载均衡
Harvey9035 小时前
通过 Helm 部署 Nginx 应用的完整标准化步骤
linux·运维·nginx·k8s
珠海西格电力科技6 小时前
微电网能量平衡理论的实现条件在不同场景下有哪些差异?
运维·服务器·网络·人工智能·云计算·智慧城市
释怀不想释怀7 小时前
Linux环境变量
linux·运维·服务器
zzzsde7 小时前
【Linux】进程(4):进程优先级&&调度队列
linux·运维·服务器
聆风吟º8 小时前
CANN开源项目实战指南:使用oam-tools构建自动化故障诊断与运维可观测性体系
运维·开源·自动化·cann