LVS之NAT模式简单示例

时间:2021-08-08 03:05:48

LVS简介
LVS(Linux Virtual Server),即Linux上虚拟的服务器集群系统。其实LVS就是一个前端的负载调度器,它在软件层次上实现了负载均衡,将接收到的请求均衡地转移至多个不同的服务器上运行,用较低的成本实现了将一组服务器构建成高性能、高可用的服务器集群。
LVS由两部分组成ipvsadm和ipvs,ipvsadm工作于用户空间,用于编写集群服务。ipvs工作于内核空间。ipvsadm定义的集群服务交由ipvs来具体实现。到达Director的数据包首先会经过PREROUTING,而后经过路由发现其目标地址为本地某接口的地址,因此,接着就会将数据包发往INPUT(LOCAL_IN HOOK)。此时,正在运行内核中的ipvs(始终监控着LOCAL_IN HOOK)进程会发现目标地址是VIP的数据包请求的是一个集群服务,于是,此数据包的本来到达本机(Director)目标行程被改变为经由POSTROUTING HOOK发往RealServer。

  • Director Server # 调度器,即实现负载均衡的地方
  • Real Server # 正真能够提供服务的服务器
  • VIP # Director上用于接收用户请求的IP
  • DIP # Director上用于和Real Server交互的IP
  • RIP # Real Server上的IP
  • CIP # Client IP

NAT模式全称是 Network Address Translation,通过网络地址转换,调度器重写请求报文的目标地址,根据预设的调度算法,将请求分派给后端的真实服务器;真实服务器的响应报文通过调度器时,报文的源地址被重写,再返回给客户,完成整个负载调度过程。
LVS之NAT模式简单示例
本文演示一个简单的示例:LVS的NAT模式的配置和测试,该模式下LVS服务器很可能成为系统性能瓶颈(请求和返回都要经过LVS服务器),实验前做好如下准备:

  • 所有的后端服务器和LVS服务器(调度器)要在同一个网段内
  • 后端服务器IP是私有地址,仅用于集群节点之间进行通信
  • LVS服务器同时处理请求和应答数据包
  • 后端服务器的网关要指向LVS服务器的IP
  • 可以实现端口映射
  • 后端服务器可以是任意操作系统

配置环境:
Director server:
eth0:10.33.1.129(对外提供服务的IP)
eth1:192.168.126.130
Real Server:
Real server1: eth0: 192.168.126.9
Real server2: eth0: 192.168.126.7
网络topology图如下:
Real server1和Real server2的网关要指向Director server的eth1:192.168.126.130,需要注意的是服务器都要关闭防火墙
LVS之NAT模式简单示例
Director需要做NAT和负载调度:
客服端访问10.33.1.129,Director需要做DNAT(将目的地址改为real server的IP),将请求分发到Real server,
Real server处理完成后,请求返回到Director,Director需要先做SNAT(将源的地址改为10.33.1.129),然后返回给客户端。

查看内核中与ipvs相关功能

[root@DQ ~]# grep -i "ipvs" /boot/config-2.6.32-431.el6.i686 

LVS之NAT模式简单示例
需要安装ipvsadm命令行工具
LVS之NAT模式简单示例
将Director server,Real server1,Real server2的网络适配器设置为仅主机模式
开启Real server1,Real server2的Web服务,并确保确保Director server的eth1和Real server1,Real server2之间可以互相通信
Real server1
LVS之NAT模式简单示例
LVS之NAT模式简单示例
Real server2
LVS之NAT模式简单示例
LVS之NAT模式简单示例
Director
LVS之NAT模式简单示例
LVS之NAT模式简单示例
LVS之NAT模式简单示例
设置lvs策略
第1行是添加一条新的虚拟IP记录,同时指定采用轮询算法。
第2,3行是在新加虚拟IP记录中添加两条新的Real Server记录,并且指定LVS的工作模式为NAT模式。
-g(gateway):直接路由DR模式
-i(internet):隧道,TUN模式
-m(masq):伪装,NAT模式
在NAT模式下确保启用系统的包转发功能,从而使系统充当路由器
LVS之NAT模式简单示例
物理机访问Director,刷新网页测试负载均衡效果,可以发现返回的内容由Real server1和Real server2轮流提供
LVS之NAT模式简单示例
LVS之NAT模式简单示例
查看调度状况
ipvsadm -L
-n以数字方式查看集群的信息
–rate显示速率
–stats统计数据包近来出去的个数和字节数
LVS之NAT模式简单示例
修改LVS算法为Weight Round Robin

[root@Director ~]# ipvsadm -E -t 10.33.1.129:80 -s wrr
[root@Director ~]# ipvsadm -e -t 10.33.1.129:80 -r 192.168.126.7 -m -w 3
[root@Director ~]# ipvsadm -e -t 10.33.1.129:80 -r 192.168.126.9 -m -w 1

查看加权轮询调度算法的效果,可以发现返回的内容由Real server1和Real server2轮询提供比例大致为3:1
LVS之NAT模式简单示例