首页 > 其他 > 详细

集群-lvs

时间:2020-11-11 09:41:45      阅读:28      评论:0      收藏:0      [点我收藏+]

1.集群介绍

集群是一组计算机在逻辑上作为一个整体向用户提供一组网络资源。实际上,每个集群中的节点都有自己的地址用于内部通信,从而协同工作提高效率。简单来说:集群是通过增加在单位时间内执行任务的数量来提高效率。

1.1系统扩展方式

scale up:向上扩展(纵向),通过升级服务器来提升性能,比如说,升级CPU,扩大内存等

scale out:向外扩展(横向),通过加入新的服务器来提高系统性能

1.2集群类型

LB(负载均衡集群)

负载均衡集群为大数据量的访问提供了一个可靠的解决方案,这种集群的核心是把业务的负载流量通过调度器尽可能平均合理地分摊到集群各个节点。

HA(高可用集群)

高可用性集群侧重于提高系统的可用性,它通过集成硬件和软件的容错性来实现整体服务的高可用。如果群集中的某个节点发生了故障,那么将由另外的节点代替它。即使多个节点发生故障,整个系统环境也保证用户能够访问。 > > 一般来说对关键业务做高可用,避免这台服务器当机后,导致整个业务瘫痪,同时也不会浪费服务器资

HP(高性能集群)

高性能计算集群采用将计算任务分配到不同计算节点来提高整体计算能力,因而主要应用在科学计算领域。这种集群是并行计算的基础,其处理能力比普通的服务器高太多,并且具有优良的性价比。这种集群就是现在流行的大数据分析会经常应用到的分布式集群。

1.3集群的实现

硬件

  • F5 BIG-IP
  • Citrix NetScaler
  • A10
  • Array
  • Redware

软件

  • lvs
  • haproxy
  • nginx
  • ats(apache traffic server)
  • perlbal

基于工作时协议层次划分

  • 传输层(4): LVS,haproxy(mode tcp)
  • 应用层(7): haproxy,nginx,ats,perlbal
  • 相比较来说,LVS这种4层的更稳定,能承受更多的请求,而nginx这种7层的更加灵活,能实现更多的个性化需求

2.LVS

全称linux virtual server,LVS集群采用IP负载均衡技术和基于内容请求分发技术,将用户请求按照一定策略分发到后端的 Server 上,从而将一组服务器构成一个高性能的、高可用的虚拟服务器。在特定的场景下,整个服务器集群的结构对客户是透明的,而且无需修改客户端和服务器端的程序。

技术分享图片

2.1LVS架构

  • client ip
  • director virtual ip
  • director ip
  • real server ip

调度器load balancer(director)

负载均衡调度器根据请求报文的IP和PORT(涉及到第四层传输层)通过均衡调度算法将请求均衡发送给后端的服务器
它是访问整个群集系统的唯一入口,对外使用所有服务器共有的虚拟 IP(virtual ip)
运行着IPVS,在 Linux 内核中实现应用程序级负载平衡。使用IPVS时,要求所有服务器提供相同的服务和内容,负载均衡器根据指定的调度算法和每个服务器的负载将新的客户端请求转发到服务器。无论选择哪个服务器,客户端都应获得相同的结果。

服务器池Server Cluster(real server)

真实提供应用服务的服务器池,每个节点具有独立的真实 IP 地址,只处理调度器分发过来的客户机请求

共享存储Storage(Mysql,NFS,DFS)

为服务器池中的所有节点提供稳定、一致的文件存储服务,确保整个群集的统一性,可使用 NAS 设备或提供 NFS 网络文件系统共享服务的专用服务器。
共享存储:可以是数据库系统,网络文件系统或分布式文件系统。静态数据通常保存在网络文件系统中,以便可以由所有服务器节点共享数据。对于大型集群系统,共享存储由GPFS或者GFS文件系统提供。

2.2netfilter(流量过滤)

iptables 和 netfilter 是 Linux 防火墙组合工具,他们一起完成系统防护工作。iptables 是位于用户空间,而 Netfilter 是位于内核空间。iptables 只是用户空间编写和传递规则的工具而已,真正工作的还是 netfilter。
如下图所示,netfilter工作机制有5个状态(prerouting,input,forward,output,postrouting)

  • LVS 是基于 Linux 内核中 netfilter 框架实现的负载均衡系统

技术分享图片

  • prerouting: 在对数据包做路由选择之前,将应用此链中的规则;
  • input: 当收到访问防火墙本机地址的数据包时,将应用此链中的规则;
  • forward: 当收到需要通过防火中转发给其他地址的数据包时,将应用此链中的规则;
  • output: 当防火墙本机向外发送数据包时,将应用此链中的规则;
  • postrouting: 在对数据包做路由选择之后,将应用此链中的规则

2.3lvs使用的工具

  • ipvsadm: 命令行工具,用于操作
  • ipvs:工作在内核中的netfilter上的input链

调度根据访问的VIP和端口判断请求是否为IPVS服务,若是则进行IPVS相关流程,并强制修改数据包的相关数据,并将数据包发往POSTROUTING链中。POSTROUTING链收到数据包后,最终将数据包发送至算法选出的后端真实服务器。
grep -i -A 2 ‘ipvs‘ /boot/config-2.6.32-504.el6.x86_64 查看系统对LVPS是否支持

2.4工作模式

LVS-NAT

  • 所有数据都要经过调度器

技术分享图片

  • 调度器接收客户端数据的内部流程,如下

技术分享图片

  • 整个流程
1.客户端发出的请求数据包经过网络到达LVS网卡,数据包源IP为CIP,目的IP为VIP。
2.然后进入PREROUTING链中,根据VIP查找路由,确定是否为本机VIP地址,随后将数据包转发至INPUT链中,源IP 和目的IP不变。
3.到达LVS后,通过目的IP和目的PORT查找是否为IPVS服务,如是IPVS服务,将会选择一个RS来作为后端服务器,数据包的目的IP地址将会修改为RIP1,这时并以RIP1为目的IP去查找路由,确定下一跳及PORT信息后,数据包将会转发至OUTPUT链中。
4.被修改过的数据包经过POSTROUTING链后,到达RS服务器,数据包源IP为CIP,目的IP为RIP。
5.RS 服务器经过处理后,将会把数据包发送至用户空间的应用程序,待处理完成后,发送响应数据包,RS服务器的默认网关为VIP,应用程序将会把数据包转发至下一跳LVS服务器,数据包源IP为RIP,目的IP为CIP。
6.LVS服务器收到RS服务器响应的数据包后,查找路由,目的IP不是本机IP并且==LVS服务器开启了FORWARD模式==,会将数据包转发给它,数据包不变。
7.LVS服务器收到响应数据包后,根据目的IP和目的PORT查找相应的服务,这时,源IP为VIP,通过查找路由,确定下一跳信息并将数据包发送至网关,最终回应给客户端用户。

LVS-DR(默认模式)

  • 调度器接收客户端请求,real server返回数据到客户端
  • arp-announce 此模式时,参数值选2
##arp_announce参数常用的取值有0,1,2。
0:(default,默认值为0)通告自己所拥有的所有地址
1:尽量不通告与自己不在同一个网段的地址
2:总是不通告与自己不在同一个网段的地址
  • arp-ignore 此模式,值为1
##arp_ignore参数作用是控制是否返回arp响应。
##arp_ignore参数常用的取值主要有0,1,2,3~8较少用到
0:响应任意网卡上接收到的对本机IP地址的arp请求(包括环回网卡上的地址),而不管该目的IP是否在接收网卡上
1:只响应目的IP地址为接收网卡上的本地地址的arp请求。
2:只响应目的IP地址为接收网卡上的本地地址的arp请求,并且arp请求的源IP必须和接收网卡同网段。
3:不响应该网络接口的arp请求,而只对设置的唯一和连接地址做出回应
4~7:保留未使用
8:不回应所有的arp请求

技术分享图片

LVS-IP Tunnel

LVS_FullNat

集群-lvs

原文:https://www.cnblogs.com/fyjpeng/p/13956972.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!