Lvs Nat
1、NAT模式-网络地址转换
Virtualserver via Network address translation(VS/NAT)
这个是通过网络地址转换的方法来实现调度的。首先调度器(LB)接收到客户的请求数据包时(请求的目的IP为VIP),根据调度算法决定将请求发送给哪个后端的真实服务器(RS)。然后调度就把客户端发送的请求数据包的目标IP地址及端口改成后端真实服务器的IP地址(RIP),这样真实服务器(RS)就能够接收到客户的请求数据包了。真实服务器响应完请求后,查看默认路由(NAT模式下我们需要把RS的默认路由设置为LB服务器。)把响应后的数据包发送给LB,LB再接收到响应包后,把包的源地址改成虚拟地址(VIP)然后发送回给客户端。
调度过程IP包详细图:
原理图简述:
1)客户端请求数据,目标IP为VIP
2)请求数据到达LB服务器,LB根据调度算法将目的地址修改为RIP地址及对应端口(此RIP地址是根据调度算法得出的。)并在连接HASH表中记录下这个连接。
3)数据包从LB服务器到达RS服务器webserver,然后webserver进行响应。Webserver的网关必须是LB,然后将数据返回给LB服务器。
4)收到RS的返回后的数据,根据连接HASH表修改源地址VIP&目标地址CIP,及对应端口80.然后数据就从LB出发到达客户端。
5)客户端收到的就只能看到VIP\DIP信息。
将realserver中的网关指向DIP
由于在nat模式下,进出数据包都要经过director,所以realserver的网关必须要指向director的DIP。
在192.168.10.11中执行:
添加默认的网关
route add default gw 192.168.10.10
#ipvsadm配置管理lvs帮助
ipvsadm --help
-C --clear 清空之前全部的规则
-A --add-service 添加一个Virtual service
-E --edit-service 编辑一个Virtual service
-a --add-server 添加一个real server
-t service-address 指定服务的ip地址及端口
-s --scheduler 调度算法
-w --weight 配置权重(轮询)
-m --masquerading 配置NAT模式
-g --gatewaying 配置直接路由模式(默认)
-i --ipip 配置tun模式(ip隧道模式)
--set tcp tcpfin udp 设置连接超时时间
配置VS(192.168.255.101)
echo 1 > /porc/sys/net/ipv4/ip_forward # 开启内核网卡转发
ipvsadm -C # 清空之前的转换表
ipvsadm -At 10.0.0.1:80 -s rr # 指定带有调度算法转换的服务器
ipvsadm -at 10.0.0.1:80 -r 10.114.0.15:80 -m # 增加一台真实服务器,-m是nat模式
ipvaadm -at 10.0.0.1:80 -r 10.114.0.16:80 -m # 增加一台真实服务器,-m是nat模式
配置RS1(192.168.255.102)
为了方便测试,在 rs1、rs2 中配置 nginx,模拟 web 服务集群
yum -y install nginx
service nginx start
cd /usr/share/nginx/html/
echo '
RS1:192.168.255.102:80
' > index.html配置RS2(192.168.255.103)
yum -y install nginx
service nginx start
cd /usr/share/nginx/html/
echo '
RS2:192.168.255.103:80
' > index.html负载均衡测试
在 VS(192.168.255.101) 中测试:
curl 10.0.0.1
RS1:192.168.255.102:80
curl 10.0.0.1
RS2:192.168.255.103:80
curl 10.0.0.1
RS1:192.168.255.102:80
curl 10.0.0.1
RS2:192.168.255.103:80
发现在 RS1/2 之间轮询,说明负载均衡配置成功!
LVS NAT 工作模式
通过网络地址转换,调度器重写请求报文的目标地址,根据预设的调度算法,将请求分派给后端的真实服务器,真实服务器的响应报文通过调度器时,报文的源地址被重写,再返回给客户,完成整个负载调度过程。
LVS 的 NAT 模式部署
NAT 工作模式下请求和响应流量都经过 LVS 服务器,LVS 服务器有内网和外网两块网卡,VIP 配置在外网卡上,
- LVS服务器: eth0 112.2.21.88,eth1 10.10.24.1,网关 112.2.21.1
- RS1服务器: eth0 10.10.24.21 网关 10.10.24.1
- RS2服务器: eth0 10.10.24.22 网关 10.10.24.1
- RS3服务器: eth0 10.10.24.23 网关 10.10.24.1
配置 LVS 服务器
开启网卡间路由转发
$ echo 1 > /proc/sys/net/ipv4/ip_forward
配置内网和外网 IP 地址
$ ip link set eth0 up
$ ip addr add 112.2.21.88/30 dev eth0
$ ip route add default via 112.2.21.1
$ ip link set eth1 up
$ ip addr add 10.10.24.1/24 dev eth1
添加 LVS 虚拟服务器和后端节点
$ ipvsadm -A -t 112.2.21.88:80 -s rr
$ ipvsadm -a -t 112.2.21.88:80 -r 10.10.24.21:80 -m
$ ipvsadm -a -t 112.2.21.88:80 -r 10.10.24.22:80 -m
$ ipvsadm -a -t 112.2.21.88:80 -r 10.10.24.23:80 -m
查看配置结果
$ ipvsadm -ln
配置 RS1 服务器
$ ip link set eth0 up
$ ip addr add 10.10.24.21/24 dev eth0
$ ip route add default via 10.10.24.1
配置 RS2 服务器
$ ip link set eth0 up
$ ip addr add 10.10.24.22/24 dev eth0
$ ip route add default via 10.10.24.1
配置 RS3 服务器
$ ip link set eth0 up
$ ip addr add 10.10.24.23/24 dev eth0
$ ip route add default via 10.10.24.1