LVS负载均衡群集

一、企业群集应用概述

1.1、群集的含义(什么是集群)

①、Cluster(团)、集群、群集
②、由多台主机构成,但对外只表现为一个整体,只提供一个访问入口(域名与IP地址),相当于一台大型计算机。

1.2、出现的问题

①、互联网应用中,随着站点对硬件性能、响应速度、服务稳定性、数据可靠性等要求越来越高,单台服务器已经无法满足负载均衡及高可用性的要求。

1.3、解决方法

①、使用价格昂贵的小型机、大型机。
②、使用多台相对廉价的普通服务器构建服务集群。

通过整合多台服务器,使用LVS来达到服务器的高可用和负载均衡,并且同一个IP地址对外提供相同的服务。
在企业中常用的一种集群技术——LVS(Linux Virtual Server,Linux虚拟服务器)

也就(集群使用在哪个场景 )------>高并发场景

二、企业群集分类

2.1、集群分类三种类型

①、负载均衡群集  (Load Balance Cluster)

  • 作用:减少响应延迟 ,提供并发处理能力

提高应用系统的响应能力、尽可能处理更多的访问请求、减少延迟为目标,获得高并发、高负载(LB)的整体性能,LB的负载分配依赖于主节点的分流算法,将来自客户机的访问请求分担给多个服务器节点,从而缓解整个系统的负载。


②、高可用群集(High Availability Cluster)

  • 作用:系统稳定性,减少服务中断时间,减少损失

提高应用系统的可靠性、尽可能地减少中断时间为目标,确保服务的连续性,达到高可用(HA) 的容错效果。HA的工作方式包括双工和主从两种模式,双工即所有节点同时在线;主从则只有主节点在线,但当出现故障时从节点能自动切换为主节点。
例如:“故障切换”、“双机热备” 等


③、高性能运算群集(High Performance Computer Cluster)

  • 作用:高性能运算群集   分布式   并发

以提高应用系统的CPU运算速度、扩展硬件资源和分析能力为目标,获得相当于大型、超级计算机的高性能运算(HPC)能力。高性能依赖于"分布式运算”、“并行计算” , 通过专用硬件和软件将多个服务器的CPU、内存等资源整合在一起,实现只有大型、超级计算机才具备的计算能力

   

注意:不能混搭使用,比如负载均衡和高可用,负载均衡就已经分配了多台机器,再使用高可用的主备分配就会错误。

2.2、负载均衡集群工作模式

地址转换 (NAT模式)

负载调度器作为所有服务器节点的网关,即作为客户机的访问入口,也是各节点回应客户机的访问出口。服务器节点使用私有ip地址,与负载调度器位于同一个物理网络,安全性要优于其他两种方式。

在高并发场景当中负载压力很高,NAT地址转换可以提高安全性。


IP隧道   (TUN模式)        

仅是访问请求的入口,响应数据不经过调度器。但是需要大量公网IP,还需要专用的IP隧道(成本太高),数据转发受IP隧道的影响(几乎不用)。
直接路由 (DR模式)      

仅是访问请求的入口,响应数据不经过调度器。节点服务器和调度器在同一个物理网络中数据转发不收额外影响。

2.3、负载均衡的结构

第一层,负载调度器(Load Balancer或Director)
访问整个群集系统的唯一入口, 对外使用所有服务器共有的VIP地址,也称为群集IP地址。通常会配置主、备两台调度器实现热备份,当主调度器失效以后能够平滑替换至备用调度器,确保高可用性。

第二层,服务器池(Server Pool)
群集所提供的应用服务、由服务器池承担,其中每个节点具有独立的RIP地址(真实IP),只处理调度器分发过来的客户机请求。当某个节点暂时失效时,负载调度器的容错机制会将其隔离,等待错误排除以后再重新纳入服务器池。

第三层,共享存储(Share Storage)
为服务器池中的所有节点提供稳定、一致的文件存取服务, 确保整个群集的统一性共享存储可以使用NAS设备,或者提供NFS共享服务的专用服务器。

三、LVS虚拟服务器

3.1、Linux Virtual Server(Linux虚拟服务器)简介

 1998年5月,由我国的章文嵩博士创建,针对Linux内核开发的负载均衡解决方案, LVS 实际上相当于基于IP地址的虚拟化应用, 为基于IP地址和内容请求分发的负载均衡提出了一种高效的解决方法。
● 官方网站: http://www.linuxvirtualserver.orgl

LVS现在已成为Linux内核的一部分,默认编译为ip_ vs模块,必要时能够自动调用。在CentOS 7系统中,以下操作可以手动加载ip_ vs模块,并查看当前系统中ip_ vs模块的版本信息。

modprobe ip_vs
cat /proc/net/ip_vs    #确认内核对LVS的支持

3.2、LVS的负载调度算法

①、轮询(Round Robin)
● 将收到的访问请求按照顺序轮流分配给群集中的各节点(真实服务器) ,均等地对待每一台服务器 ,而不管服务器实际的连接数和系统负载

②、加权轮询 (Weighted Round Robin)
● 根据调度器设置的权重值来分发请求,权重值高的节点优先获得任务,分配的请求数越多
● 保证性能强的服务器承担更多的访问流量

③、最少连接 (Least Connections )
● 根据真实服务器已建立的连接数进行分配,将收到的访问请求优先分配给连接数最少的节点

④、加权最少连接(Weighted L east Connections )
● 在服务器节点的性能差异较大时,可以为真实服务器自动调整权重
● 性能较高的节点将承担更大比例的活动连接负载

3.3、LVS群集创建与管理

LVS的管理工具是ipvsadm

选项说明
-A添加一个虚拟服务器(Virtual Server)到IPVS表中。
-D从IPVS表中删除一个整个虚拟服务器。
-s指定虚拟服务器使用的负载调度算法(如:rr 轮询, wrr 加权轮询, lc 最少连接, wlc 加权最少连接)。
-a向一个已存在的虚拟服务器中添加一个真实服务器(Real Server,即节点服务器)。
-d从一个虚拟服务器中删除一个真实服务器。
-t指定虚拟服务器(VIP)的IP地址和TCP端口,格式为IP:Port。
-r指定真实服务器(RIP)的IP地址和TCP端口,格式为IP:Port。
-m设置IPVS集群的工作模式为NAT(网络地址转换)模式。
-g设置IPVS集群的工作模式为DR(直接路由)模式。
-i设置IPVS集群的工作模式为TUN(隧道)模式。注意,TUN模式在现代LVS环境中已较少使用。
-w为指定的真实服务器设置权重。权重为0时表示暂停该节点。
-p设置TCP连接的持久连接超时时间,单位秒。例如,-p 60 表示连接将被保持60秒。
-l列出IPVS表中的所有虚拟服务器。默认为查看所有。
-n在列出IPVS表时,以数字形式显示地址和端口信息,常用于与-l结合使用以获取更简洁的输出。

四、NAT模式 LVS负载均衡群集部署

一共需要5台机器

win10客户端               12.0.0.12

LVM调度器   ens37     12.0.0.1    ens33   192.168.88.79

web1和web2服务器    192.168.76   192.168.77

NFS服务器                  192.168.88.78

如下图配置

前置关防火墙,selinux

systemctl stop firewalld.service 
systemctl disable firewalld.service 
setenforce 0

A、【首先部署共享存储(NFS服务器)】

配置思路

1 、安装 nfs 和 rpcbind 软件  并且启动,设置开机自启

2 、创建共享目录(给权限)

3 、修改配置文件设置共享

4 、发布共享

5、刷新,列出检验

6 、客户端验证共享目录可访问(可以在后面验证)

安装,设置自启

yum install -y nfs-utils rpcbind

systemctl start nfs.service

systemctl start rpcbind.service

systemctl enable nfs.service

systemctl enable rpcbind.service

建立两个共享文件夹yc和hhh
mkdir /opt/yc    /opt/hhh
给权限
chmod 777 /opt/yc   /opt/hhh

修改配置文件设置共享

vim /etc/exports


/usr/share *(ro,sync)
/opt/kgc 192.168.10.0/24(rw,sync)
/opt/benet 192.168.10.0/24(rw,sync)


刷新
exportfs -rv
显示NFS(Network File System)服务器上导出的共享目录列表

showmount -e

B、【配置节点服务器(后端服务器)】

配置思路

1 、安装 http服务器应用  并且启动,设置开机自启

2 、安装nfs客户端  并且启动,设置开机自启(并且验证上一个NFS服务端)

3 、设置NFS系统格式化,永久挂载NFS文件夹

安装http服务器

yum install -y httpd
systemctl start httpd.service 
systemctl enable httpd.service

安装nfs客户端
yum install -y nfs-utils rpcbind

systemctl start rpcbind.service
systemctl enable rpcbind.service

显示NFS(Network File System)服务器上导出的共享目录列表
showmount -e 192.168.10.18

设置NFS系统格式化

在76(web1)

mount.nfs 192.168.88.78:/opt/yc     /var/www/html/

或者 mount -t nfs 192.168.88.78:/opt/yc   /var/www/html/

echo 'this is yc' > /var/www/html/index.html

在77(web2)

mount.nfs 192.168.88.78:/opt/hhh    /var/www/html/

echo 'this is hhh' > /var/www/html/index.html

注意web1和web2服务器的网关是负载调度器的地址79

永久挂载

vim /etc/fstab 
192.168.10.18:/opt/kgc /var/www/html nfs defaults,_netdev 0 0
mount -a

  1. dump 选项(用于备份,通常设置为0)
  2. fsck 选项(用于文件系统检查,通常设置为0或1,对于NFS来说,通常是0)

C、【配置负载调度器LVS】

配置思路

1 、启用 IPv4 的数据包转发功能

2 、iptables清除,配置snat

3 、加载LVS内核模块

4 、安装ipvsadm管理工具

5、配置负载分配策略

6、启动策略,保存策略


启用 IPv4 的数据包转发功能
vim /etc/sysctl.conf
net.ipv4.ip_forward=1

sysctl -p

启用 IPv4 的数据包转发功能的,但是临时启用
或者:echo '1' > /proc/sys/net/ipv4/ip_forward
 

filter清除
iptables -F

nat清除
iptables -t nat -F

查看

iptables -t nat -nL
 

SNAT规则

iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -o ens37 -j SNAT --to-source 10.0.0.1
 

加载LVS内核模块
modprobe 是 Linux 系统中的一个命令行工具,用于动态地加载或卸载 Linux 内核模块(也称为驱动程序)

手动加载ip_vs模块
modprobe ip_vs  

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

 

安装ipvsadm管理工具
yum install -y ipvsadm

注意:启动服务前必须保存负载分配策略,否则将会报错
ipvsadm-save > /etc/sysconfig/ipvsadm
或者
ipvsadm --save > /etc/sysconfig/ipvsadm
或者
touch /etc/sysconfig/ipvsadm

systemctl start ipvsadm.service

配置负载分配策略(NAT模式只要在服务器上配置,节点服务器不需要特殊配置)
ipvsadm -C     #清除原有策略
ipvsadm -A -t 10.0.0.1:80 -s rr
ipvsadm -a -t 10.0.0.1:80 -r 192.168.10.16:80 -m -w 1
ipvsadm -a -t 10.0.0.1:80 -r 192.168.10.17:80 -m -w 1

-A    添加虚拟服务器
-s    指定负载调度算法 (轮询:rr、加权轮询: wrr、最少连接: lc、加权最少连接: wlc )
-a    表示添加真实服务器 (后端节点服务器)
-t    指定 VIP地址及 TCP端口
-m    表示使用 NAT群集模式.
-w    设置权重 (权重为 0 时表示暂停节点)

启动策略

ipvsadm

查看节点状态,Masq代表 NAT模式

ipvsadm -ln   

保存策略
ipvsadm-save > /etc/sysconfig/ipvsadm   

---------------------------------------------------------------------------------------------------------------

其他用法

删除群集中某一节点服务器
ipvsadm -d -t 10.0.0.1:80 -r 192.168.10.16:80

删除整个虚拟服务器   
ipvsadm -D -t 10.0.0.1:80  

停止服务(清除策略)  
systemctl stop ipvsadm

 启动服务(重建规则)   
systemctl start ipvsadm

 恢复LVS策略 
ipvsadm-restore > /etc/sysconfig/ipvsadm    


测试:
在win10上使用浏览器访问12.0.0.1,刷新浏览器测试负载均衡
PS:刷新间隔时间需要稍长一点

五、补充面试题

面试题:
1、lvs 三种模式,他们之间区别 (60%-70%)
NAT 
TUN
⭐⭐⭐DR : 被延伸出来的第三个面试题

2、LVS 分流算法、分流算法区别
只要确定分流算法 分流依据——》RR WRR ——》访问流量的分配
                 分流依据——》LC WLC ——》依据后端真实服务器的已连接的连接数

LVS-NAT LVS-TUN LVS-DR  你们公司用不用LVS,以及用什么模式,为什么(DR,假设你的项目,拓扑很简单-》NAT)


路由器网关: 3张表
1、ARP表                
目的: 用于广播后,解析MAC-IP映射,并且维护在MAC与路由表中
什么时候用、更新:

① 在接收到请求,需要解析IP-MAC的时候(因为内网是基于二层进行通讯的),
② 并且用于转发时-同步到MAC地址表中 (192.168.226.100---》接口位置 ——》目标mac位置)
2、MAC地址表
3、路由表

  • 18
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值