LVS负载均衡集群

目录

一、集群的含义

二、集群类型

三、负载均衡集群架构

负载均衡的结构

四、负载均衡集群工作模式分析

五、LVS虚拟服务器

LVS的组成及作用

六、LVS的负载调度算法

LVS与Nginx功能对比

LVS-NAT部署

架构图

 LVS的管理工具(ipvsadm)

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

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

​编辑 配置web1,2节点服务器(192.168.23.30、192.168.23.40)

配置负载调度器(192.168.23.20) 


一、集群的含义

由多台主机构成,但对外只表现为一个整体

二、集群类型

负载均衡(LB):提高应用系统的响应效率,处理更多的访问请求,减少延迟,提高并发和负载能力
高可用(HA):提高应用系统的可靠性,减少服务中断时间,确保服务的连续性
高性能运算(HPC): 将多台主机的硬件计算资源整合到一起实现分布式运

三、负载均衡集群架构

负载均衡的结构

  • 第一层,负载调度器(Load Balancer或Director)
  • ​​第二层,服务器池(Server Pool)
  • 第三层,共享存储(Share Storage)

负载调度器: 通过VIP接收用户的请求,再通过调度算法确定要转发的节点服务器

服务器池中的节点服务器 :通过RIP接收调度器转发来的请求,并处理请求进行响应

共享存储:为各个节点服务器提供稳定、一致的文件存取服务,比如NAS+NFS,文件服务器+NFS,分布式对象存储等存储设备

四、负载均衡集群工作模式分析

负载均衡集群是目前企业用得最多的群集类型

集群的负载调度技术有3种工作模式

NAT(地址转换) 调度器作为所有节点服务器的网关,既作客户端的访问入口,也作节点服务器响应的访问出口,也就意味着调度器将成为整个集群系统的瓶颈,由于再转发过程中做了地址转发,对于节点服务器的安全性比其它模式较好,调度器至少要有2个网卡,一个承载VIP用于接收客户端的请求,另一个用于使用私有IP在同一个局域网中与节点服务器相互通信

DR(直接路由)  调度器只负责接收客户端的请求,并根据调度算法转发给节点服务器;节点服务器在处理完请求后是直接响应返回给客户端,响应的数据包不经过调度器,性能比NAT模式高,调度器和节点服务器使用私有IP在同一个局域网中与节点服务器相互通信

TUN(IP隧道)   架构与DR相类似,但是节点服务器分散在互联网各个位置,都具有独立的公网IP,通过专用IP隧道与调度器相互通信。

NAT 模式:只需要一个公网IP地址,是最易用的一种负载均衡模式,安全性较好。
TUN 模式和 DR 模式:负载能力强大,适用范围广,节点安全性较差。

五、LVS虚拟服务器

LVS的组成及作用

ipvs(ip virtual server):LVS 是基于内核态的 netfilter 框架实现的 IPVS功能,工作在内核态。用户配置 VIP 等相关信息并传递到 IPVS 就需要用到 ipvsadm 工具。
ipvsadm:ipvsadm 是 LVS 用户态的配套工具,可以实现 VIP 和 RS 的增删改查功能,是基于 netlink 或 raw socket 方式与内核 LVS 进行通信的,如果 LVS 类比于 netfilter,那 ipvsadm 就是类似iptables 工具的地位。
作用
主要用于多服务器的负载均衡
工作在网络层,可实现高性能,高可用的服务器集群技术
廉价,可把许多低性能的服务器组合在一起形成一个超级服务器
易用,配置简单,有多种负载均衡的方法
稳定可靠,即使在集群的服务器中某台服务器无法正常工作,也不影响整体效果
可扩展性好


六、LVS的负载调度算法

①轮询(Round Robin)

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

根据调度器设置的权重值来分发请求
权重值高的节点优先获得任务并且分配的请求越多
这样可以保证性能高的节点承担更多请求
③最少连接(Least Connections)

根据真实服务器已建立的连接数进行分配
将收到的访问请求优先分配给连接数最少的节点
如果所有的服务器节点性能相近,采用这种方式可以更好的均衡负载
④加权最少链接(Weighted Least Connections)

在服务器节点性能差异较大的情况下,调度器可以根据节点服务器负载自动调整权重
权重较高的节点将承担更大比例的活动连接负载
⑤IP_Hash

根据请求来源的IP地址进行Hash计算,得到后端服务器
这样来自同一个IP请求总是会落到同一台服务器上处理,以至于可以将请求上下文信息存储在这个服务器上
⑥url_Hash

按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器
后端服务器为缓存时比较有效
⑦fair

采用的不是内建负载均衡使用的轮换均衡方法
而是可以根据页面大小、加载时间长短智能进行负载均衡
也就是根据后端服务器时间来分配用户请求,响应时间短的优先分配

LVS与Nginx功能对比

Nginx的优势
可操作性大
Nginx是一个应用层的程序,所以用户可操作性的空间大得多,可以作为网页静态服务器,支持 Rewrite 重写规则;支持 GZIP 压缩,节省带宽;可以做缓存;可以针对 http 应用本身来做分流策略,静态分离,针对域名、目录结构等相比之下 LVS 并不具备这样的功能,所以 nginx 单凭这点可以利用的场合就远多于 LVS 了;但 nginx 有用的这些功能使其可调整度要高于 LVS,所以经常要去触碰,人为出现问题的几率也就大
网络依赖小
nginx 对网络的依赖较小,理论上只要 ping 得通,网页访问正常,nginx 就能连得通,nginx 同时还能区分内外网,如果是同时拥有内外网的节点,就相当于单机拥有了备份线路;LVS 就比较依赖于网络环境,目前来看服务器在同一网段内并且 LVS 使用 direct 方式分流,效果较能得到保证。另外注意,LVS 需要向托管商至少申请多于一个 ip 来做 visual ip
安装简单
nginx 安装和配置比较简单,测试起来也很方便,因为它基本能把错误用日志打印出来。LVS 的安装和配置、测试就要花比较长的时间,因为同上所述,LVS 对网络依赖性比较大,很多时候不能配置成功都是因为网络问题而不是配置问题,出了问题要解决也相应的会麻烦的多
nginx 也同样能承受很高负载且稳定,但负载度和稳定度差 LVS 还有几个等级:nginx 处理所有流量所以受限于机器 IO 和配置;本身的 bug 也还是难以避免的;nginx 没有现成的双机热备方案,所以跑在单机上还是风险比较大,单机上的事情全都很难说
支持健康检查以及请求重发
nginx 可以检测到服务器内部的故障(健康检查),比如根据服务器处理网页返回的状态码、超时等等,并且会把返回错误的请求重新提交到另一个节点。目前 LVS 中 ldirectd 也能支持针对服务器内部的情况来监控,但 LVS 的原理使其不能重发请求。比如用户正在上传一个文件,而处理该上传的节点刚好在上传过程中出现故障,nginx 会把上传切到另一台服务器重新处理,而 LVS 就直接断掉了。
最新面试题整理好了,大家可以在Java面试库小程序在线刷题。
LVS 的优势
抗负载能力强
因为 LVS 工作方式的逻辑是非常简单的,而且工作在网络的第 4 层,仅作请求分发用,没有流量,所以在效率上基本不需要太过考虑。LVS 一般很少出现故障,即使出现故障一般也是其他地方(如内存、CPU 等)出现问题导致 LVS 出现问题
配置性低
这通常是一大劣势同时也是一大优势,因为没有太多的可配置的选项,所以除了增减服务器,并不需要经常去触碰它,大大减少了人为出错的几率
工作稳定
因为其本身抗负载能力很强,所以稳定性高也是顺理成章的事,另外各种 LVS 都有完整的双机热备方案,所以一点不用担心均衡器本身会出什么问题,节点出现故障的话,LVS 会自动判别,所以系统整体是非常稳定的
无流量
LVS 仅仅分发请求,而流量并不从它本身出去,所以可以利用它这点来做一些线路分流之用。没有流量同时也保住了均衡器的 IO 性能不会受到大流量的影响
LVS 基本上能支持所有应用,因为 LVS 工作在第 4 层,所以它可以对几乎所有应用做负载均衡,包括 http、数据库、聊天室等。

LVS-NAT部署

架构图

 LVS的管理工具(ipvsadm)


ipvsadm工具选项说明
-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
 

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


LVS负载调度器:ens33:192.168.23.20 ens37:12.0.0.1(vmnet1)
Web 节点服务器1:192.168.23.30
Web 节点服务器2:192.168.23.40
客户端(win10):12.0.0.2 (vmnet1)

注意:web服务器网关设置为192.168.23.10

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

关闭防火墙

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

yum install nfs-utils rpcbind -y  #安装nfs
systemctl start rpcbind.service   #开启服务
systemctl start nfs.service       
systemctl enable nfs.service      #设置开机自启
systemctl enable rpcbind.service

mkdir /opt/kgc /opt/benet       
chmod 777 /opt/kgc /opt/benet   #加权限
echo '回忆上了发条!' > /opt/kgc/index.html
echo '我让日夜颠倒!' > /opt/benet/index.html

vim /etc/exports
/usr/share *(ro,sync)
/opt/kgc 192.168.23.0/24(rw,sync)
/opt/benet 192.168.23.0/24(rw,sync)

exportfs -rv   #发布共享

 配置web1,2节点服务器(192.168.23.30、192.168.23.40)

以下操作web1和web2都是一样的操作

关闭防火墙

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

 安装服务并启动 

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

yum install nfs-utils rpcbind -y
showmount -e 192.168.23.10
systemctl start rpcbind
systemctl enable rpcbind

 web1配置

mount.nfs 192.168.23.10:/opt/kgc /var/www/html   #挂载nfs

web2配置

mount.nfs 192.168.23.10:/opt/kgc /var/www/html   #挂载nfs

 

配置负载调度器(192.168.23.20) 

systemctl stop firewalld.service  #关闭防火墙
systemctl disable firewalld.service
setenforce 0

 

vim /etc/sysctl.conf   #配置SNAT转发规则
net.ipv4.ip_forward = 1
sysctl -p              #查看

 

清除路由表规则,新添规则 

iptables -t nat -F 
iptables -F
iptables -t nat -A POSTROUTING -s 192.168.23.0/24 -o ens36 -j SNAT --to-source 12.0.0.1

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值