企业实战——Lvs负载均衡的NAT模式

1.基于NAT的LVS模式负载均衡

NAT(Network Address Translation)即网络地址转换,其作用是通过数据报头的修改,使得位于企业内部的私有IP地址可以访问外网,以及外部用用户可以访问位于公司内部的私有IP主机。VS/NAT工作模式拓扑结构如图2所示,LVS负载调度器可以使用两块网卡配置不同的IP地址,eth0设置为私钥IP与内部网络通过交换设备相互连接,eth1设备为外网IP与外部网络联通。
第一步,用户通过互联网DNS服务器解析到公司负载均衡设备上面的外网地址,相对于真实服务器而言,LVS外网IP又称VIP(Virtual IP Address),用户通过访问VIP,即可连接后端的真实服务器(Real Server),而这一切对用户而言都是透明的,用户以为自己访问的就是真实服务器,但他并不知道自己访问的VIP仅仅是一个调度器,也不清楚后端的真实服务器到底在哪里、有多少真实服务器。
第二步,用户将请求发送至124.126.147.168,此时LVS将根据预设的算法选择后端的一台真实服务器(192.168.0.1~192.168.0.3),将数据请求包转发给真实服务器,并且在转发之前LVS会修改数据包中的目标地址以及目标端口,目标地址与目标端口将被修改为选出的真实服务器IP地址以及相应的端口。
第三步,真实的服务器将响应数据包返回给LVS调度器,调度器在得到响应的数据包后会将源地址和源端口修改为VIP及调度器相应的端口,修改完成后,由调度器将响应数据包发送回终端用户,另外,由于LVS调度器有一个连接Hash表,该表中会记录连接请求及转发信息,当同一个连接的下一个数据包发送给调度器时,从该Hash表中可以直接找到之前的连接记录,并根据记录信息选出相同的真实服务器及端口信息。
1

2.准备:

实验使用的是6.5的虚拟机

server1(双网卡):eth0:172.25.20.1和eth1:172.25.1.1
server2:eth0:172.25.20.2
server3:eth0:172.25.20.3

真机:172.25.20.250,172.25.1.100
server1(172.25.1.100)作为调度器,将server2、server3作为后端服务器,真机作为客户端。

3.实现:

1.准备三台虚拟机,server1、server2、server3

[root@foundation20 ~]# cd /var/lib/libvirt/images/
[root@foundation20 images]# qemu-img create -f qcow2 -b westos.qcow2 server1
[root@foundation20 images]# qemu-img create -f qcow2 -b westos.qcow2 server2
[root@foundation20 images]# qemu-img create -f qcow2 -b westos.qcow2 server3

【1】
2.给server1(调度器)添加双网卡
【2】【3】
3.用真机连接三个虚拟机

[kiosk@foundation20 ~]$ ssh root@172.25.20.1

【4】

[kiosk@foundation20 ~]$ ssh root@172.25.20.2

【5】

[kiosk@foundation20 ~]$ ssh root@172.25.20.3

【6】
4.server1配置yum源并安装调度服务

[root@server1 yum.repos.d]# yum clean all
[root@server1 yum.repos.d]# yum repolist

【7】【8】
5.在调度器上设置调度策略

[root@server1 ~]# yum list ipvsadm
[root@server1 ~]# yum install -y ipvsadm.x86_64

【9】

[root@server1 ~]# ipvsadm -C
[root@server1 ~]# ipvsadm -A -t 172.25.1.1:80 -s rr
[root@server1 ~]# ipvsadm -a -t 172.25.1.1:80 -r 172.25.20.2:80 -m
[root@server1 ~]# ipvsadm -a -t 172.25.1.1:80 -r 172.25.20.3:80 -m
[root@server1 ~]# ipvsadm -l

【10】
6.开启路由机制server1、server2、server3
server1收到客户请求后,得到一个公网的IP,跟目的主机server2,server3不在一个网段。
如果想要将客户端来的数据包转发给后段服务器,那么必须对这个数据包进行IP转换,再进行数据包转发。
Linux系统默认禁止数据包转发,需要配置Linux系统的IP转发功能进行转发。

[root@server1 ~]# vim /etc/sysctl.conf 

【11】
7.设置好客户端的IP和网关

[root@foundation20 ~]# ip addr add 172.25.1.100/24 dev br0
[root@foundation20 ~]# ip addr show br0
[root@foundation20 ~]# route add default gw 172.25.20.1
[root@foundation20 ~]# route -n

【12】
8.测试

[root@foundation20 ~]# curl 172.25.1.1
[root@foundation20 ~]# curl 172.25.1.1
[root@foundation20 ~]# curl 172.25.1.1
[root@foundation20 ~]# curl 172.25.1.1
[root@foundation20 ~]# curl 172.25.1.1
[root@foundation20 ~]# curl 172.25.1.1

当客户端172.25.1.100访问调度器172.25.1.1的时候,会通过网关调度器的172.25.20.1,从而调度器帮客户端区172.25.20.2172.25.20.3上轮循拿资源
【13】【14】

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值