renran421 发表于 2019-1-3 06:22:31

初识LVS(一)——LVS介绍和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五条路径上设置了检查规则
https://s2.运维网.com/wyfs02/M02/00/CD/wKiom1mdby7Ru61WAAAhTm6YXxo431.png
  各种守护进程(服务)是工作在用户空间对外提供服务,当接收到请求的主机就是用户访问的目标主机时,数据会先通过PREROUTING再经由INPUT进入到用户空间
https://s2.运维网.com/wyfs02/M01/9F/7D/wKioL1mdbySCM1NeAABIwYlWCrI616.png
  当守护进程处理完用户请求后,会通过OUTPUT和POSTROUTING将响应返还给请求者
https://s3.运维网.com/wyfs02/M02/9F/7D/wKioL1mdbyWAjOhOAABI_-ZGQXQ350.png
  如果接收到请求的主机发现目标主机不是他自身,则会通过PREOUTING、FORWARD、POSTROUTING将该请求转发出去
https://s3.运维网.com/wyfs02/M00/00/CD/wKiom1mdby_AlAxvAABJhCy46fg003.png
  2.LVS和iptables在很大程度上相互间不兼容,所以在使用LVS的时候请确保iptables服务处于关闭状态
  LVS的NAT模式介绍
  LVS在负载均衡架构中充当一个调度器(director)的角色,所有客户端访问的地址指向为LVS的公网IP地址,它再将接收到的请求根据算法分配给后端的服务器,整个架构为:
https://s3.运维网.com/wyfs02/M00/00/CD/wKiom1mdbzDyjwm-AACGTmH51-M068.png
  假设用户端的IP为CIP,LVS公网地址为VIP,内网服务器地址为RIP,LVS通过DIP与RIP进行通信,其中DIP和RIP为内网地址。用户请求数据流的轨迹为:
https://s5.运维网.com/wyfs02/M00/9F/7D/wKioL1mdbyagSF48AABjhb6EhGg494.png
  当用户发起一个请求时,请求从VIP接口流入,此时数据源地址是CIP;目标地址是VIP(步骤1),LVS接收到请求后拆掉mac地址封装后看到目标IP地址就是自己,按照正常流程会通过INPUT转入用户空间(步骤2),但此时工作在INPUT链上的LVS会强行将数据转到POSTROUTING上(步骤3),并根据LVS的算法选择后端具体的服务器,以选择服务器1为例,通过DNAT后转发给服务器1(步骤4),此时源地址CIP,目标地址变成了RIP1。
  服务器回复用户数据流的轨迹为:
https://s5.运维网.com/wyfs02/M01/00/CD/wKiom1mdbzGRtxNbAABg0AR6b1k194.png
  当服务器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需要开启核心转发功能
  操作步骤
  网络拓扑
  网络结构如下图所示:
https://s5.运维网.com/wyfs02/M02/9F/7D/wKioL1mdbyez1LIPAAByc-HUXsk708.png
  LVS负载均衡器和web服务器系统版本均为CentOS6.8,LVS负载均衡器有2张网卡,安装ipvsadm作为director,web服务器安装httpd提供页面服务,此处便于演示效果让2台web服务器页面不一致,安装步骤省却。
  LVS NAT模式配置步骤
  1.使用sysctl命令开启director的核心转发功能
https://s5.运维网.com/wyfs02/M01/00/CD/wKiom1mdbzHCVrVwAAAJEJhexOY790.png
  或者在/etc/sysctl.conf配置文件中修改
https://s5.运维网.com/wyfs02/M00/9F/7D/wKioL1mdbyegoDQWAAASvb3byG0392.png
  2.确认核心转发功能起开启
https://s5.运维网.com/wyfs02/M02/00/CD/wKiom1mdbzLB_mdSAAAOLVo7ErM658.png
  3.指定LVS的director服务器,并选择调度模式;指定realserver服务器并设置数据转发类型,如果想做端口映射RIP后面可以跟转发的端口号
https://s5.运维网.com/wyfs02/M01/9F/7D/wKioL1mdbyiTToURAAAb2rtalZU754.png
  4.查看设置是否生效
https://s4.运维网.com/wyfs02/M00/00/CD/wKiom1mdbzOhQIgIAAAtdg5ft5E435.png
  5.保存ipvsadm当前配置,指定一个保存文件,便于清理后从该文件恢复配置
https://s4.运维网.com/wyfs02/M02/9F/7D/wKioL1mdbynCnATGAABctJTYllo466.png
  6.确认web服务器的网关指向DIP
https://s2.运维网.com/wyfs02/M01/00/CD/wKiom1mdbzSxhmD9AAArMx5TKGA338.png
  7.在客户端使用浏览器访问172.16.20.10后多刷新几次,验证效果,至此操作完成
https://s2.运维网.com/wyfs02/M00/9F/7D/wKioL1mdbyqC74kWAAAxlQnxeX4634.png
  

  




页: [1]
查看完整版本: 初识LVS(一)——LVS介绍和LVS的NAT工作模式