前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >lvs的多种模式

lvs的多种模式

原创
作者头像
陈不成i
修改2021-08-02 17:42:42
5970
修改2021-08-02 17:42:42
举报
文章被收录于专栏:ops技术分享ops技术分享

一.简介

LVS是Linux Virtual Server的简称,也就是Linux虚拟服务器, 是一个由章文嵩博士发起的自由软件项目,目前已经是Linux标准内核的一部分,但在Linux2.4内核以前,使用LVS时必须要重新编译内核以支持LVS功能模块。

类似于iptables的架构,在内核中有一段代码用于实时监听数据包来源的请求,当数据包到达端口时做一次重定向。这一系列的工作必须在内核中实现。在内核中实现数据包请求处理的代码叫做ipvs。ipvs仅仅提供了功能框架,还需要自己手动定义是数据对哪个服务的请求,而这种定义需要通过写规则来实现,写规则的工具就称为ipvsadm。

通过Lvs提供的负载均衡技术来实现一个高性能、高可用的服务器集群。Lvs对用户的请求进行分发,这个请求可以是网页、邮件、视频、DNS等等。

file
file

名词:

  • VIP(Virtual IP):Director用来向客户端提供服务的IP地址,因为需要做冗余,就需要2台Lvs虚拟一个共用的VIP,也是对外开放的外网ip。
  • RIP(Real IP):集群节点(后台真正提供服务的服务器)所使用的IP地址
  • DIP(Director’s IP):Director用来和RIP 进行联系的地址
  • CIP(Client computer’s ):公网IP,客户端用来访问服务的ip。

二.结构

使用LVS架设的服务器集群系统有三个部分组成:最前端的负载均衡层,用Load Balancer表示,中间的服务器群组层,用Server Array表示,最底端的数据共享存储层,用Shared Storage表示。在用户看来,所有的内部应用都是透明的,用户只是在使用一个虚拟服务器提供的高性能服务。

file
file

Load Balancer层: 位于整个集群系统的最前端,有一台或者多台负载调度器(Director Server)组成,它的作用主要是类似于一个路由器,根据设定通过路由表将用户的请求分发给后端的应用服务器上,它本身并不对请求有任何解读和处理。同时,还要安装对应用服务器的监控模块Ldirectord,此模块用于监测应用服务器的健康状况。在不可用时把它从LVS路由表中剔除,恢复时重新加入。

Server Array层: 由一组实际运行应用服务的机器组成,Real Server可以是WEB服务器、MAIL服务器、FTP服务器、DNS服务器、视频服务器中的一个或者多个。

Shared Storage层: 是为所有Real Server提供共享存储空间和内容一致性的存储区域,在物理上,一般有磁盘阵列设备组成,为了提供内容的一致性,一般可以通过NFS网络文件系统共享数据,但是NFS在繁忙的业务系统中,性能并不是很好,此时可以采用集群文件系统,例如Red hat的GFS文件系统,oracle提供的OCFS2文件系统等。

三.负载均衡

简介

LVS的IP负载均衡技术是通过IPVS模块来实现的,IPVS是LVS集群系统的核心软件,它的主要作用是:安装在Director Server上,同时在Director Server上虚拟出一个IP地址,用户必须通过这个虚拟的IP地址访问服务。这个虚拟IP一般称为LVS的VIP,即Virtual IP。

访问的请求首先经过VIP到达负载调度器,然后由负载调度器从Real Server列表中选取一个服务节点响应用户的请求。当用户的请求到达负载调度器后,调度器如何将请求发送到提供服务的Real Server节点,而Real Server节点如何返回数据给用户,有如下三种方式。

NAT(Network Address Translation)

file
file

步骤: NAT是一种外网和内网地址映射的技术,网络数据报的进出都要经过LVS的处理。LVS需要作为RS(真实服务器)的网关。当包到达LVS时,从后端应用服务器选择一个,做目标地址转换(DNAT),将目标IP改为RS的IP。Lvs就相当于一个路由器一样,做基本的路由转发。

RS接收到包以后,仿佛是客户端直接发给它的一样。RS处理完后,将包发送给客户端,这时RS的包通过网关(LVS)中转,LVS会做源地址转换(SNAT),将包的源地址改为VIP,这样,这个包对客户端看起来就仿佛是LVS直接返回给它的。客户端无法感知到后端RS的存在。

数据包地址转换过程: S:CIP D:VIP -> Director -> S:CIP D:RIP -> Real Server -> S:RIP D:CIP -> Director -> S:VIP D:CIP

file
file

特点: 在NAT方式下Lvs要对用户请求和响应报文做地址转换,当用户请求越来越多时,调度器的处理能力将成为瓶颈。 需要Lvs和RS在一个局域网,Lvs做RS的网关。 隐藏真实回应的ip。 支持端口映射。 后台的Real Server可以使用任何操作系统。

TUN(IP Tunneling)

file
file

步骤: TUN也就是IP隧道技术实现虚拟服务器,它将调度器收到的IP数据包封装在一个新的IP数据包中,转交给RS,然后RS的返回数据会直接返回给用户。

ip隧道是一个将ip报文封装到另一个ip报文的技术,将客户请求包封装在一个ip tunnel里面,然后发给RS节点服务器。这时候这个包的源ip就是Lvs的,目的ip是RS服务器的。

RS收到请求后解开里面的ip tunnel层,进行响应处理。并且直接把包通过自己的外网地址发送给客户,不用经过LVS。

数据包地址转换过程: DIP -> VIP 基于隧道来传输,在数据包外层额外封装了S:DIP D :RIP 的地址。

file
file

特点: 因为经过封装,所以RS一定不能是私有地址,可以异地容灾。 Lvs只处理用户的报文请求而不用发送回应,这样会提高一定的效率,但要维持ip隧道会降低一些效率。 直接将数据包返回给客户端,所以RS默认网关不能是DIP,必须是公网上某个路由器的地址。 需要RS的系统支持隧道。 不支持端口映射。 无法隐藏真实回应的ip。

DR(Direct Routing)

file
file

步骤: DR模式下,LVS只需要将网络帧的MAC地址修改为某一台RS的MAC,该包就会被转发到相应的RS处理,此时的源IP和目标IP都没变,LVS只是做了一下移花接木。RS收到LVS转发来的包时,链路层发现MAC是自己的,到上面的网络层,发现IP(虚拟的)也是自己的,于是这个包被合法地接受,RS感知不到前面有LVS的存在。而当RS返回响应时,只要直接向源IP(即用户的IP)返回即可,不再经过LVS。

数据包地址转换过程: S:CIP D:VIP -> Director -> S:CIP D:RIP -> Real Server -> S:VIP D:CIP

file
file

特点: 因为只改写进来的网络包的mac地址,不管理出去的,也没有ip隧道,所以性能最好。 不需要和Lvs在一个网段,但需要RS有一块网卡和Lvs连接在同一物理网段上。 无法隐藏ip地址。 不支持端口映射。 RS不能将网关指向DIP。 直接将数据包返回给客户端,所以Real Server默认网关不能是DIP,必须是公网上某个路由器的地址; RIP 为公网地址,管理员可以远程连接Real Server来查看工作状态; 一旦Director 宕机,可以通过修改DNS记录将A记录指向RIP 继续向外提供服务;

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一.简介
  • 二.结构
  • 三.负载均衡
    • 简介
      • NAT(Network Address Translation)
        • TUN(IP Tunneling)
          • DR(Direct Routing)
          相关产品与服务
          NAT 网关
          NAT 网关(NAT Gateway)提供 IP 地址转换服务,为腾讯云内资源提供高性能的 Internet 访问服务。通过 NAT 网关,在腾讯云上的资源可以更安全的访问 Internet,保护私有网络信息不直接暴露公网;您也可以通过 NAT 网关实现海量的公网访问,最大支持1000万以上的并发连接数;NAT 网关还支持 IP 级流量管控,可实时查看流量数据,帮助您快速定位异常流量,排查网络故障。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档