码迷,mamicode.com
首页 > 其他好文 > 详细

初识LVS(一)——LVS介绍和LVS的NAT工作模式

时间:2017-08-23 21:43:05      阅读:221      评论:0      收藏:0      [点我收藏+]

标签:lvs;nat

LVS介绍

集群按照类型划分可以分为:LB负载均衡型;HA高可用型;HP高性能型。LVS(linux virtual machine)是一款国人编写用于LB负载均衡型被收录进Linux内核的工具。LVS由ipvs和ipvsadmin组成,ipvs工作在netfilter框架上,而ipvsadm则是使用者在用户空间的命令行工具,通过调用ipvs的API管理集群服务。LVS支持TCP、UDP、AH, EST, AH_EST, SCTP等诸多协议,与haproxy(haproxy也可以以mod tcp模式工作在传输层)和nginx工作在应用层的工具不同,LVS工作在内核层,所以可以突破套接字文件65535的最大数量限制。由于LVS相比以前的iptables dnat负载均衡功能有了很大的改善,LVS在被收录进内核后使得iptables负载均衡功能不再作为重点进行开发。

准备知识

1.netfiletr是一个工作在内核空间的安全框架,在数据传输必经的PREROUTING、INPUT、OUTPUT、POSTROUTING、FORWARD五条路径上设置了检查规则

技术分享

各种守护进程(服务)是工作在用户空间对外提供服务,当接收到请求的主机就是用户访问的目标主机时,数据会先通过PREROUTING再经由INPUT进入到用户空间

技术分享

当守护进程处理完用户请求后,会通过OUTPUT和POSTROUTING将响应返还给请求者

技术分享

如果接收到请求的主机发现目标主机不是他自身,则会通过PREOUTING、FORWARD、POSTROUTING将该请求转发出去

技术分享

2.LVS和iptables在很大程度上相互间不兼容,所以在使用LVS的时候请确保iptables服务处于关闭状态

LVS的NAT模式介绍

LVS在负载均衡架构中充当一个调度器(director)的角色,所有客户端访问的地址指向为LVS的公网IP地址,它再将接收到的请求根据算法分配给后端的服务器,整个架构为:

技术分享

假设用户端的IP为CIP,LVS公网地址为VIP,内网服务器地址为RIP,LVS通过DIP与RIP进行通信,其中DIP和RIP为内网地址。用户请求数据流的轨迹为:

技术分享

当用户发起一个请求时,请求从VIP接口流入,此时数据源地址是CIP;目标地址是VIP(步骤1),LVS接收到请求后拆掉mac地址封装后看到目标IP地址就是自己,按照正常流程会通过INPUT转入用户空间(步骤2),但此时工作在INPUT链上的LVS会强行将数据转到POSTROUTING上(步骤3),并根据LVS的算法选择后端具体的服务器,以选择服务器1为例,通过DNAT后转发给服务器1(步骤4),此时源地址CIP,目标地址变成了RIP1。

服务器回复用户数据流的轨迹为:

技术分享

当服务器1响应用户的请求时,数据报文中源地址为RIP1;目标地址为CIP(步骤1),服务器1根据自身掩码和CIP地址做与运算后得知CIP与自己不在同一网段,于是将请求转交给网关处理,所以服务器1的网关要指向DIP。LVS负载均衡器接收到请求后发现目标地址并不是自己,于是经过FORWARD链进行转发,此时要求LVS负载均衡器开启核心转发功能,再经过SNAT转换后源地址改为VIP目标地址为CIP(步骤2),交还客户端。

总结

LVS-NAT模式下数据流路径:

请求时数据流的路径:PREROUTING-->INPUT-->POSTRONTING

响应时数据流的路径:PREROUTING-->FORWARD-->POSTROUTING

LVS-NAT特点:

1.请求和响应报文都要经由director转发;有些负载的场景中(如视频网站)director可能会成为系统瓶颈

2.由于请求和响应报文都需要经过directory,所以支持端口映射

3.RS应该和DIP应该使用私网地址,且RS的网关要指向DIP

4.RS可以使用任意OS

5.LVS在NAT模式,做单边地址转换,收请求时做DNAT目标地址转换,响应请求时做SNAT源地址转换

6.director需要开启核心转发功能

操作步骤

网络拓扑

网络结构如下图所示:

技术分享

LVS负载均衡器和web服务器系统版本均为CentOS6.8,LVS负载均衡器有2张网卡,安装ipvsadm作为director,web服务器安装httpd提供页面服务,此处便于演示效果让2台web服务器页面不一致,安装步骤省却。

LVS NAT模式配置步骤

1.使用sysctl命令开启director的核心转发功能

技术分享

或者在/etc/sysctl.conf配置文件中修改

技术分享

2.确认核心转发功能起开启

技术分享

3.指定LVS的director服务器,并选择调度模式;指定realserver服务器并设置数据转发类型,如果想做端口映射RIP后面可以跟转发的端口号

技术分享

4.查看设置是否生效

技术分享

5.保存ipvsadm当前配置,指定一个保存文件,便于清理后从该文件恢复配置

技术分享

6.确认web服务器的网关指向DIP

技术分享

7.在客户端使用浏览器访问172.16.20.10后多刷新几次,验证效果,至此操作完成

技术分享



本文出自 “兔样兔森破” 博客,请务必保留此出处http://arkling.blog.51cto.com/2844506/1958779

初识LVS(一)——LVS介绍和LVS的NAT工作模式

标签:lvs;nat

原文地址:http://arkling.blog.51cto.com/2844506/1958779

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!