欢迎喜欢实施运维及数据的小伙伴加入群进行谈论!
运维技术群:263859509
lvs 原理
LVS通过工作于内核的ipvs模块来实现功能,其主要工作于netfilter 的INPUT链上。
而用户需要对ipvs进行操作配置则需要使用ipvsadm这个工具。
ipvsadm主要用于设置lvs模型、调度方式以及指定后端主机。
lvs 有哪几种模式,工作过程原理是什么?
NAT TUN DR
NAT模式原理 :
这个是通过网络地址转换的方法来实现调度的。首先调度器(LB)接收到客户的请求数据包时(请求的目的IP为VIP),根据调度算法决定将请求发送给哪个后端的真实服务器(RS)。然后调度就把客户端发送的请求数据包的目标IP地址及端口改成后端真实服务器的IP地址(RIP),这样真实服务器(RS)就能够接收到客户的请求数据包了。真实服务器响应完请求后,查看默认路由(NAT模式下我们需要把RS的默认路由设置为LB服务器。)把响应后的数据包发送给LB,LB再接收到响应包后,把包的源地址改成虚拟地址(VIP)然后发送回给客户端。
TUN模式(隧道模式):
virtual server via ip tunneling模式:采用NAT模式时,由于请求和响应的报文必须通过调度器地址重写,当客户请求越来越多时,调度器处理能力将成为瓶颈。为了解决这个问题,调度器把请求的报文通过IP隧道转发到真实的服务器。真实的服务器将响应处理后的数据直接返回给客户端。这样调度器就只处理请求入站报文,由于一般网络服务应答数据比请求报文大很多,采用VS/TUN模式后,集群系统的最大吞吐量可以提高10倍。
DR模式(直接路由模式):
DR模式是通过改写请求报文的目标MAC地址,将请求发给真实服务器的,而真实服务器响应后的处理结果直接返回给客户端用户。同TUN模式一样,DR模式可以极大的提高集群系统的伸缩性。而且DR模式没有IP隧道的开销,对集群中的真实服务器也没有必要必须支持IP隧道协议的要求。但是要求调度器LB与真实服务器RS都有一块网卡连接到同一物理网段上,必须在同一个局域网环境。
最常用的模式是什么,有什么特点
DR
①通过调度器上修改数据包的目的MAC地址实现转发,注意,源IP地址仍然是CIP,
目的IP地址仍然是VIP
②请求的报文经过调度器,而RS相应处理处理后报文无需经过调度器LB,因此,并发访问量大时使用效率很高
③DR模式是通过MAC地址的改写机制实现转发,因此所有的RS节点和调度器LB只能在一个局域网中
④需要注意RS界面的VIP的绑定(lo:VIp/32 lol:VIP/32)和ARP的一致问题
⑤抑制ARP是不让RS(real server)相应CS(client server)的ARP请求
⑥RS节点默认网关不需要调度器的LB的DIP,而是直接IDC机房分配的上级路由器的IP(这是RS带有外网的
的Ip地址的情况),理论上讲,只要RS出网即可,不是必须配置外网的IP
工作中RS要配置外网的IP
⑦由于DR模式角度器仅仅进行了MAC地址的改写,因此调度器LB无法改变请求的报文的目的端口
⑧LB几乎支持所有的UNIX,linux系统,但是目前不支持winows系统,真实的节点可以是windows系统。
⑨总的来说DR模式效率很高,但是配置也比较麻烦,因此访问量不是很大的可以用haproxy/nginx取代,
日PV 1000-2000W或者并发请求1W以下都是可以考虑haproxy/nginx
10.直接对外访问的业务,例如:web服务做RS节点,RS最好用公网的IP地址,如果不直接对外的业务,
例如:mysql,存储系统的RS节点,最好只用内部的Ip地址。