企业集群的应用

文章介绍了企业中集群的应用,包括由多台服务器构成的集群对外表现为单一入口,提供大规模计算、高性能和高可用性。重点讨论了负载均衡器(LB)的负载分配,以及高可用性(HA)的实现。LVS作为Linux内核的负载均衡解决方案,工作在网络层,具有高性能和低成本的优点。文章还对比了LVS与nginx,并详细描述了LVS的NAT模式部署,包括配置共享存储、Web服务器和负载调度器的步骤。
摘要由CSDN通过智能技术生成

企业集群的应用

什么是集群

由多台主机构成,但对外只表现为一个整体,只提供一个访问入口(ip与域名),相当于一台大型计算机

集群使用在哪些场景

集群可以在需要大规模计算、高性能、高可用和分布式存储等场景下发挥重要作用,提供更好的计算和存储能力

集群的分类

负载均衡器

提高应用系统的响应能力,尽可能处理更多的访问请求,减少延迟为布标,获得高并发、高负载(LB)的整体性能

LB的负载分配依赖于主节点的分流算法

强调减少响应延迟、提高并发处理能力

高可用

提高应用系统的可靠性,尽可能的减少中断时间为目标,确保服务的连续性,达到高可用(HA)的容错效果

HA的工作方式包括双工和主从两种模式

强调系统稳定性,减少服务中断时间,减少损失

高性能

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

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

强调高性能运算能力,分布式,并发

负载均衡集群的架构

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-P3GEO95W-1688968395205)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230704112245950.png)]

负载调度器

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

服务器池

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

共享存储

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

负载均衡集群的工作模式

地址转换 nat模式

类似于防火墙的私有网络结构,负载调度器作为所有服务器节点的网关,即作为客户机的访问入口,也是各节点回应客户机的访问出口

服务器节点使用私有ip地址,与负载调度器位于同一个物理网络,安全性要优于其他两种方式

调度作为网关,是访问请求的入口。也是响应访问的出口,在高并发场景中负载压力很高,可以提高安全性

ip隧道 tun模式

采用开放式的网络结构,负载调度器仅作为客户机的访问入口,各节点通过各自的Internet连接直接回应客户机,二不在经过负载调度器

服务器节点分散在互联网中的不同位置,具有独立的公网ip地址,通过专用ip隧道与负载调度器相互通信

仅是访问请求的入口,相应数据不经过调度器。但是需要大量的公网IP地址,还是要有专用的ip隧道,成本太高数据转发受到ip隧道的影响

直接路由 dr模式

采用半开放式的网络结构,与tun模式的结构类似,但是各个节点并不是分散在各地,而是与调度器位于同一个物理网络

负载调度器与各个节点服务器通过本地网络连接,不需要建立专用的ip隧道

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

LVS虚拟服务器

针对Linux内核的负载均衡解决方案

是基于内核态的netfilter框架实现的IPVS功能,工作在内核态

用户配置VIP等相关详细信息并传递到IPVS就需要用到ipvsadm工具

ipvsadm:是lvs用户态的配套工具,可以实现VIP和rs的增删改查功能

LVS的作用

主要用于多服务器的负载均衡

工作在网络层,可实现高性能,高可用的服务集群技术

廉价,可把许多低性能的服务器组合在一起,形成一个超级服务器

易用,配置简单,有多种负载均衡的方法

稳定可靠,即使在集群的服务器中有某台服务器无法正常工作,也不影响整体的效果

可扩展性

LVS与nginx的比较

lvs比nginx具有更强的抗负载能力,性能高,对内存和cpu资源消耗低

lvs工作在网络层,网络依赖性大,稳定性高。nginx安装配置较简单,网络型依赖小

lvs不支持正则匹配处理,无法实现动静分离,nginx可实现这方面的功能

lvs适用的协议范围广,nginx仅支持http和https email协议,适用于范围小

LVS负载调度算法

轮询

将受到的访问请求按照顺序轮流分配给群集中的各节点,均等的对待每一台服务器,而不管服务器实际的连接数和系统负载

加权轮询

根绝调度器设置的权重值来分发请求,权重值高的节点优先获得任务,分配的请求数越多

保证性能强的服务器承担更多的访问流量

最少连接

根据真是服务器已建立的连接数进行分配,将收到的访问请求优先分配给连接数最少得节点

加权最少连接

在服务器节点的性能差异较大时,可以为真实服务器自动调整权重

性能较高的节点将承担更大比例的活动连接负载

VIP工作原理 备份 冗余

vip地址特性:只会存在于同一个热备组中优先级最高的设备上 (抢占模式)

VIP的好处:VIP占用一个IPv4地址,常规情况下,VIP占用的IPv4的地址也是不可重复的

vrrp应用场景:高可用,解决单点故障

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

1.部署共享存储
1.1关闭防火墙
[root@nfs /]# systemctl stop firewalld.service 
[root@nfs /]# systemctl disable firewalld.service 

1.2安装nfs服务,并设置开机自启
[root@nfs /]# yum install -y nfs-utils rpcbind
[root@nfs /]# systemctl start nfs.service 
[root@nfs /]# systemctl start rpcbind.service
[root@nfs /]# systemctl enable nfs.service 
[root@nfs /]# systemctl enable rpcbind.service
1.3设置nfs共享目录 赋予权限并设置配置文件
[root@nfs /]# mkdir /opt/kgc /opt/benet
[root@nfs /]# chmod 777 /opt/kgc /opt/benet
[root@nfs /]# vim /etc/exports
/usr/share *(ro,sync)
/opt/kgc 192.168.116.0/24(rw,sync)
/opt/benet 192.168.116.0/24(rw,sync)
1.4发布共享
[root@nfs /]# exportfs -rv
exporting 192.168.116.0/24:/opt/benet
exporting 192.168.116.0/24:/opt/kgc
exporting *:/usr/share
[root@nfs /]# showmount -e
Export list for nfs:
/usr/share *
/opt/benet 192.168.116.0/24
/opt/kgc   192.168.116.0/24
2配置web1节点服务器
2.1安装httpd服务并设置开机自启
[root@web1 ~]# yum -y install httpd
[root@web1 ~]# systemctl start httpd.service 
[root@web1 ~]# systemctl enable httpd.service
2.2安装nfs服务,并设置开机自启
[root@web1 ~]# yum install -y nfs-utils rpcbind
[root@web1 ~]# systemctl start rpcbind.service
[root@web1 ~]# systemctl enable rpcbind.service
2.3查看nfs服务器上的可挂载目录并挂载
[root@web1 ~]# showmount -e 192.168.116.10
Export list for 192.168.116.10:
/usr/share *
/opt/benet 192.168.116.0/24
/opt/kgc   192.168.116.0/24
设置挂载
[root@web1 local]# mount.nfs 192.168.116.10:/opt/kgc /var/www/html/
[root@web1 local]# echo 'this is kgc' > /var/www/html/index.html
[root@web1 html]# vim /etc/fstab 
192.168.116.10:/opt/kgc /var/www/html nfs defaults,_netdev 0 0
[root@web1 html]# mount -a

3配置web2节点服务器
3.1查看nfs服务器上的可挂载目录并挂载
[root@web2 ~]# showmount -e 192.168.116.10
Export list for 192.168.116.10:
/usr/share *
/opt/benet 192.168.116.0/24
/opt/kgc   192.168.116.0/24
设置挂载
[root@web2 ~]# mount.nfs 192.168.116.10:/opt/benet /var/www/html/
[root@web2 ~]# echo 'this is benet' > /var/www/html/index.html
[root@web2 ~]# vim /etc/fstab 
192.168.116.10:/opt/benet /var/www/html nfs defaults,_netdev 0 0
mount -a
4配置负载调度器LVS

4.1开启ipv4转发功能

[root@lvs ~]# vim /etc/sysctl.conf
net.ipv4.ip_forward=1
重新加载 使配置文件生效
[root@lvs ~]# sysctl -p
net.ipv4.ip_forward = 1

4.2清除nat表中所有的配置并配置

[root@lvs ~]# iptables -t nat -F
[root@lvs ~]# iptables -F
[root@lvs ~]# iptables -t nat -nL
[root@lvs ~]# iptables -t nat -A POSTROUTING -s 192.168.116.0/24 -o ens37 -j SNAT --to-source 10.0.0.1

4.3加载lvs内核模块

[root@lvs ~]# modprobe ip_vs
[root@lvs ~]# cat /proc/net/ip_vs
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port Forward Weight ActiveConn InActConn

4.4安装ipvsadm工具,保存负载分配策略并开启服务

[root@lvs ~]# yum install -y ipvsadm
[root@lvs ~]# ipvsadm-save > /etc/sysconfig/ipvsadm
[root@lvs ~]# systemctl start ipvsadm.service

4.5配置负载分配策略

[root@lvs ~]# ipvsadm -C 
[root@lvs ~]# ipvsadm -A -t 10.0.0.1:80 -s rr
[root@lvs ~]# ipvsadm -a -t 10.0.0.1:80 -r 192.168.116.11:80 -m -w 1
[root@lvs ~]# ipvsadm -a -t 10.0.0.1:80 -r 192.168.116.12:80 -m -w 1

4.6启动策略并查看是否配置成功,保存策略

[root@lvs ~]# ipvsadm
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  lvs:http rr
  -> 192.168.116.11:http          Masq    1      0          0         
  -> 192.168.116.12:http          Masq    1      0          0       
  
[root@lvs ~]# ipvsadm-save > /etc/sysconfig/ipvsadm

面试题

1.lvs是干什么的 在项目架构上是第几层?

lvs是具有负载均衡功能的服务之一

lvs是后端真实服务器,提供负载均衡和跳转的功能

单台lvs是作为4层负载均衡的服务tcp协议的负载均衡

​ lvs+keepalive组成的HA高可用集群,可以作为L7层负载均衡

PS:L4和L7的负载均衡有什么区别

L4是通过tcp协议建立连接之后的ip:port来接收请求和基于ip:port端口的转发

L7是通过tcp协议建立三次握手,通过http协议传输数据,7层提供负载均衡器,需要根据http协议来传输过来的请求,进行对应的跳转,这个跳转是先基于tcp协议的传输(ip:port)+http数据的传输

如果是L4层:协议只有tcp就是ip:port的转发

如果是L7层:tcp 三次握手 长连接+http规范的传输数据

简单来说

单台lvs就是4层

lvs+keepalive就是7层

2.lvs有几种模式 如何提供负载均衡功能,是用什么来管理?

①lvs-nat模式

主要通过防火墙规则来完成内外网的nat映射+ipvsadm工具的管理

实现方式:基于主机(192.168.116.180)来作为访问入口 通过ipvsadm -A -t 192.168.116.180 -rr 通过lvs的功能,来定义后端地址池 ipvsadm -a -t 192.168.116.180 -r 192.168.116.10 -m -w 1

以L4层的方式,直接基于tcp协议的ip:port端口进行转发

nat模式的特性:负载均衡器和真实服务器均在同一个网络,接受请求、响应请求均通过负载均衡器,内外网的映射是通过lvs服务器上的iptables规则来完成的

②lvs-tun模式

贵 因为负载调度器和真实服务器不在同一个网络,真实服务器需要公网ip

接受请求+转发请求是通过lvs负载调度器完成的,但是响应请求是直接通过隧道的方式相应客户端

③lvs-dr模式

关闭lvs负载调度器上的路由和重定向

定义ens33一个虚拟接口(ens33:0),来承载虚拟ip

清空防火墙的规则/关闭防火墙

使用ipvsadm配置后端真实服务器的地址池(-g使用dr模式)和rr轮询来进行转发

小结:就是使用ipvsadm来控制lvs服务使用dr模式进行转发(主要L4层ip:port形式实现)真实服务器

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值