LVS简介及LVS-NAT负载均衡群集的搭建

目录

LVS群集简介

群集的含义和应用场景

性能扩展方式

群集的分类

负载均衡(LB)

高可用(HA)

高性能运算(HPC)

LVS的三种工作模式

[NAT 地址转换](#NAT 地址转换)

[TUN IP隧道 IP Tunnel](#TUN IP隧道 IP Tunnel)

[DR 直接路由 Direct Routing](#DR 直接路由 Direct Routing)

LVS调度算法

负载均衡结构

部署实例

实验流程

实验准备

实验步骤

部署共享存储(NFS服务器:192.168.75.70)

配置节点服务器(192.168.75.50、192.168.75.60)

[配置负载调度器(内网关 ens33:192.168.75.30,外网关 ens36:12.0.0.1)](#配置负载调度器(内网关 ens33:192.168.75.30,外网关 ens36:12.0.0.1))

配置负载分配策略(NAT模式只要在服务器上配置,节点服务器不需要特殊配置)

实验效果测试


LVS群集简介

群集的含义和应用场景

群集是为解决某个特定问题将多台计算机组合起来形成的单个系统,由多台主机构成,但对外只表现为一个整体,相当于一台大型计算机提供服务。

互联网应用中,随着站点对硬件性能、响应速度、服务稳定性、数据可靠性等要求越来越高,单台服务器已经无法满足负载均衡及高可用的要求,所有产生了LVS群集技术提供稳定高效服务。

性能扩展方式

  • 纵向扩展------对服务器的CPU、内存、硬盘等硬件进行升级或者扩容来实现,但存在性能上限会有瓶颈,成本昂贵,收效比不高等问题。
  • 横向扩展------通过增加服务器主机数量来应该高并发的场景。

群集的分类

负载均衡(LB)

提高应用系统的响应效率,处理更多的访问请求,减少延迟,提高并发和负载能力

LB的负载分配依赖于主节点的分流算法,将来自客户机的访问请求分担给多个服务器节点,从而缓解整个系统的负载压力。例如"DNS轮询","反向代理"等。

高可用(HA)

提高应用系统的可靠性 ,减少服务中断时间,确保服务的连续性

HA的工作方式包括双工主从两种模式,双工即所有节点同时在线,主从则只有主节点在线,但当出现故障时从节点能自动切换为主节点。例如"故障切换","双机热备"等。

高性能运算(HPC)

以提高应用系统的CPU运算速度、扩展硬件资源和分析能力为目标,获得相当于大型、超级计算机的高性能运算能力。

高性能依赖于"分布式运算"、"并行计算",通过专用硬件和软件将多个服务器的CPU、内存等资源整合在一起,实现只有大型、超级计算机才具备的计算能力。例如,"云计算","网格计算"等。

LVS的三种工作模式

NAT 地址转换

调度器会作为所有节点服务器的默认网关,也是客户端的访问入口和节点服务器返回响应消息的出口,所以调度器会承载双向流量的负载压力,可能会为整个群集的性能瓶颈。由于节点服务器都会处于内网环境,使用私网IP,所以具有一点的安全行。

TUN IP隧道 IP Tunnel

调度器仅作为客户端的访问入口,节点服务器的响应消息是直接返回客户端的,不需要经过调度器。但是由于节点服务器需要部署在不同的公网环境,所以要有独立的公网IP,而且调度器与节点服务器是通过专用的IP隧道实现相互通信,因此IP隧道模式的成本较高、安全性较低,且数据IP隧道传输的过程中需要额外的封装和解封装,性能也会受到一定的影响。

DR 直接路由 Direct Routing

调度器仅作为客户端的访问入口,节点服务器的响应消息是直接返回客户端的,不需要经过调度器。(与NAT模式的区别)

节点服务器与调度器是部署在同一个物理网络里,因此不需要建议专用的IP隧道。(与IP隧道模式的区别)

DR模式是企业首选的LVS模式。

LVS调度算法

  • rr(轮询):将请求依次分配给不同的RS节点,即RS节点中均摊分配。适合于RS所有节点处理性能接近的情况。
  • wrr(加权轮询):依据不同RS的权值分配任务。权值较高的RS将优先获得任务,并且分配到的连接数将比权值低的RS更多。相同权值的RS得到相同数目的连接数。
  • sh(源地址哈希):以源地址为关键字查找一个静态hash表来获得需要的RS。
  • dh(目的地址哈希):以目的地址为关键字查找一个静态hash表来获得所需RS。
  • lc(最小连接):IPVS表存储了所有活动的连接。LB会比较将连接请求发送到当前连接最少的RS。
  • wlc(加权最小连接):优先分配请求给 <连接数>/<权重值> 的值最小的节点服务器
  • lblc(基于地址的最小连接):优先根据目的地址哈希将请求分配给同一个节点服务器,若此节点服务器满负荷了则优先将请求分配当前连接数最小的节点服务器

负载均衡结构

  • 第一层,负载调度器(Load Balancer或Director)访问整个群集系统的唯一入口,对外使用所有服务器共有的VIP地址,也称为群集IP 地址。通常会配置主、备两台调度器实现热备份,当主调度器失效以后能够平滑替换至备用调度器,确保高可用性。
  • 第二层,服务器池(Server Pool)群集所提供的应用服务、由服务器池承担,其中每个节点具有独立的RIP地址 (真实IP) ,只处理调度器分发过来的客户机请求。当某个节点暂时失效时,负载调度器的容错机制会将其隔离,等待错误排除以后再重新纳入服务器池。
  • 第三层,共享存储 (Share Storage为服务器池中的所有节点提供稳定、一致的文件存取服务,确保整个群集的统一性共享存储可以使用 NAS设备,或者提供 NFS共享服务的专用服务器。

部署实例

实验流程

  1. 部署NFS共享存储
  2. 部署Web节点服务器,注意:节点服务器的默认网关要指向调度器的内网IP,测试的时候可关闭连接保持
  3. 部署调度器,配置双网卡,开启IP路由转发功能,如果内网中的节点服务器需要访问外网则要配置SNAT规则,安装ipvsadm工具,添加虚拟服务器和真实服务器的相关配置,使用-m选项选择NAT模式
  4. 客户端设置默认网关指向调度器的外网IP,并使用客户端工具测试

实验准备

负载调度器:内网关 ens33:192.168.75.30,外网关 ens36:12.0.0.1

Web节点服务器1:192.168.75.50

Web节点服务器2:192.168.75.60

NFS服务器:192.168.75.70

客户端:12.0.0.66

实验步骤

部署共享存储(NFS服务器:192.168.75.70)

bash 复制代码
关闭防火墙,安全机制
systemctl stop firewalld.service
systemctl disable firewalld.service
setenforce 0
下载nfs,rpcbind服务,并开启
yum install nfs-utils rpcbind -y
systemctl start rpcbind.service
systemctl start nfs.service
创建要共享出去的目录
mkdir /opt/kgc /opt/benet
chmod 777 /opt/kgc /opt/benet
将目录共享
vim /etc/exports
/usr/share *(ro,sync)
/opt/kgc 192.168.75.0/24(rw,sync)
/opt/benet 192.168.75.0/24(rw,sync)
发布共享
exportfs -rv
查看共享
showmount -e

共享成功

进到配置文件写入网页内容

/opt/kgc

/opt/benet

配置节点服务器(192.168.75.50、192.168.75.60)

在两台节点服务器下

bash 复制代码
关闭防火墙,安全机制
systemctl stop firewalld.service
systemctl disable firewalld.service
setenforce 0
下载httpd,rpcbind,nfs服务,并开启
yum install httpd -y
systemctl start httpd.service
yum install nfs-utils rpcbind -y
systemctl start rpcbind

查看70主机是否共享出来了

第一台节点服务器(192.168.75.50)配置

永久挂载目录

bash 复制代码
vim /etc/fstab
192.168.75.50:/opt/kgc		/var/www/html	nfs		defaults,_netdev	0  0

第二台节点服务器(192.168.75.60)配置

永久挂载目录

bash 复制代码
vim /etc/fstab
192.168.75.60:/opt/benet		/var/www/html	nfs		defaults,_netdev	0  0

配置负载调度器(内网关 ens33:192.168.75.30,外网关 ens36:12.0.0.1)

多网卡配置

ens33网卡的配置

ens36网卡的配置

配置SNAT转发规则

bash 复制代码
在配置文件中添加
vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
iptables -t nat -F
iptables -F
iptables -t nat -A POSTROUTING -s 192.168.80.0/24 -o ens36 -j SNAT --to-source 12.0.0.1

加载LVS内核模块

bash 复制代码
modprobe ip_vs					#加载 ip_vs模块 
cat /proc/net/ip_vs				#查看 ip_vs版本信息

for i in $(ls /usr/lib/modules/$(uname -r)/kernel/net/netfilter/ipvs|grep -o "^[^.]*");do echo $i; /sbin/modinfo -F filename $i >/dev/null 2>&1 && /sbin/modprobe $i;done

安装ipvsadm 管理工具

bash 复制代码
yum -y install ipvsadm

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

systemctl start ipvsadm.service

注:ipvsadm管理工具的选项

配置负载分配策略(NAT模式只要在服务器上配置,节点服务器不需要特殊配置)

bash 复制代码
ipvsadm -C 					#清除原有策略
ipvsadm -A -t 12.0.0.1:80 -s rr [-p 60]
ipvsadm -a -t 12.0.0.1:80 -r 192.168.75.50:80 -m [-w 1]
ipvsadm -a -t 12.0.0.1:80 -r 192.168.75.60:80 -m [-w 1]
ipvsadm						#启用策略

ipvsadm -ln					#查看节点状态,Masq代表 NAT模式
ipvsadm-save > /opt/ipvsadm						#保存策略
ipvsadm-save > /etc/sysconfig/ipvsadm

注:

ipvsadm -d -t 12.0.0.1:80 -r 192.168.80.11:80				#删除群集中某一节点服务器
ipvsadm -D -t 12.0.0.1:80									#删除整个虚拟服务器
systemctl stop ipvsadm										#停止服务(清空策略),如果selinux没关闭/etc/sysconfig/ipvsadm内容也会清空
systemctl start ipvsadm										#启动服务(根据/etc/sysconfig/ipvsadm恢复策略)
ipvsadm-restore < /opt/ipvsadm					            #恢复LVS 策略

实验效果测试

在一台IP为12.0.0.66的客户机使用浏览器访问 http://12.0.0.1/ ,不断刷新浏览器测试负载均衡效果,刷新间隔需长点(或者关闭Web服务的连接保持)。

打开一台虚拟windows系统,进行配置

在网页搜索

相关推荐
Koi慢热4 分钟前
路由基础(全)
linux·网络·网络协议·安全
传而习乎14 分钟前
Linux:CentOS 7 解压 7zip 压缩的文件
linux·运维·centos
soulteary16 分钟前
突破内存限制:Mac Mini M2 服务器化实践指南
运维·服务器·redis·macos·arm·pika
爱吃青椒不爱吃西红柿‍️44 分钟前
华为ASP与CSP是什么?
服务器·前端·数据库
运维&陈同学2 小时前
【zookeeper01】消息队列与微服务之zookeeper工作原理
运维·分布式·微服务·zookeeper·云原生·架构·消息队列
是阿建吖!2 小时前
【Linux】进程状态
linux·运维
hzyyyyyyyu2 小时前
内网安全隧道搭建-ngrok-frp-nps-sapp
服务器·网络·安全
明明跟你说过2 小时前
Linux中的【tcpdump】:深入介绍与实战使用
linux·运维·测试工具·tcpdump
刽子手发艺2 小时前
WebSocket详解、WebSocket入门案例
网络·websocket·网络协议