集群-lvs

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.RS和DS应该使用私网地址,且在同一个网段,其中RS网关为DS
2.数据流量都会经过DS调度器,因此,DS成LVS-NAT模式的瓶颈
3.支持端口映射
4.RS可以使用任意OS
  • 所有数据都要经过调度器

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

  • 整个流程
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(默认模式)

  • 特点
1.RS的RIP可以使用私有地址,也可以使用公网地址
2.RS跟Director必须在同一物理网络中
3.不支持端口映射
4.RS可以是大多数OS
5.RS的网关不能指向DIP
  • 调度器接收客户端请求,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请求

  • 整个流程
1、当客户端发送请求,数据包到达LVS负载均衡服务器,此时源IP地址为CIP、目的IP地址为VIP、源MAC地址为CMAC、目标MAC地址为DMAC。
2、数据包到达网卡后,经过链路层到达PREROUTING链,进行查找路由,发现目的IP是LVS的VIP,这时就会发送至INPUT链中并且数据包的IP地址、MAC地址、Port都未经过修改。
3、数据包到达INPUT链中,LVS会根据目的IP和Port(端口)确认是否为LVS定义的服务,如是定义过的VIP服务,会根据配置的服务信息,从RealServer中选择一个后端服务器RS1
4、数据包通过POSTROUTING链后,目的MAC地址将会修改为RMAC,源MAC地址修改为DMAC,此时,数据包将会发至RealServer服务器。
5、数据包到达RealServer服务器后,发现请求报文的MAC地址是自己的网卡MAC地址,将会接受此报文,待处理完成之后,将响应报文通过 lo 接口传送给eth0网卡然后向外发出。此时的源IP为VIP,目标IP为CIP,源MAC地址为RS1的RMAC,目的MAC地址为下一跳路由器的MAC地址(CMAC),最终数据包通过RS相连的路由器转发给客户端。

LVS-Tunnel

lvs-tun模式不修改请求报文的ip首部,而是通过在原有的ip首部(CIP<-->VIP)之外再封装一个ip首部(DIP<-->RIP)

  • 特点:
1.RIP,DIP,VIP必须是公网地址
2.RS的网关不能指向DIP
3.请求报文必须经由director调度,但响应报文必须不能经由director
4.不支持端口映射
5.RS的OS必须支持隧道功能

  • 流程
1、 客户端发送数据包经过网络后到LVS网卡,数据包源IP为CIP,目的IP为VIP。
2、 进入PREROUTING链后,会根据目的IP去查找路由,确定是否为本机IP,数据包将转发至INPUT链中,到LVS,源 IP和目的IP不变。
3、 到LVS后,通过目的IP和目的PORT查找是否为IPVS服务,如是IPVS服务,将会选择一个RS后端服务器, 源IP为 DIP,目标IP为RIP,数据包将会转发至OUTPUT链中。
4、 数据包根据路由信息到达LVS网卡,发送至路由器网关,最终到达后端服务器。
5、 后端服务器收到数据包后,会拆掉最外层的IP地址后,会发现还有一层IP首部,源IP为CIP,目的IP为VIP,TUNL0上配置VIP,查找路由后判断为本机IP地址,将会发给用户空间层的应用程序响应后VIP为源IP,CIP为目的IP数据包发送至网卡,最终返回至客户端用户。

LVS_FullNat

  • FULLNat模式:director通过同时修改请求报文的目标地址和源地址进行转发,(RS,DR无须在同一个网段)
  • NAT模式:director只修改请求报文的目标地址进行转发,(RS,DR在同一个网段)
  • 特点
1.VIP是公网地址,RIP和DIP是私网地址,RIP与DIP无须在同一网络中
2.RS接收到的请求报文的源地址为DIP,因此要响应给DIP
3.请求报文和响应报文都必须经由Director
4.支持端口映射机制
5.RS可以使用任意OS
posted @ 2020-11-11 09:00  小芃总  阅读(148)  评论(0编辑  收藏  举报