Lvs(二):三种Director类型及配置方式
上一篇博文简单介绍了lvs的基础知识,本文介绍一下lvs的三种Director类型的特性和配置方式
lvs-nat:masquerading
工作模型:
工作流程:
1、客户端向Director请求服务,请求报文源地址为CIP,目标地址为VIP;
2、Director接收到请求报文,Director会认为Client请求的是一个后端集群服务,根据提前定义好的算法挑选出一个RS,Director对请求报文做DNAT,将目标DIP转换为RS的RIP,然后发往后端;
3、RS接收到请求进行相应,响应报文源地址为RIP,目标地址为CIP;
4、Director接收到响应报文,对响报文做SNAT,将源地址RIP转换为DIP,发送给Client
nat类型的特性:
1、RS应使用私有地址;RS的网关必须指向DIP;
2、请求和响应都要经过Director;高负载场景中,Director易成为性能瓶颈;
3、支持端口映射;
4、RS可以使用任意OS;
配置流程:
Real Server:
网络配置:
[root@node2 ~]# ifconfig eth0 192.168.0.2/24 up
[root@node2 ~]# route add default gw 192.168.0.1
[root@node3 ~]# ifconfig eth0 192.168.0.3/24 up
[root@node3 ~]# route add default gw 192.168.0.1
提供网页文件:
[root@node2 ~]# echo "node1.chencer.org" > /var/www/html/index.html
[root@node3 ~]# echo "node2.chencer.org" > /var/www/html/index.html
Director:
网络设置:
[root@node1 ~]# ifconfig eth0 172.16.0.1/16 up
[root@node1 ~]# ifconfig eth1 192.168.0.1/24 up
[root@node1 ~]# echo 1 > /proc/sys/net/ipv4/ip_forward
配置集群服务,并添加后端节点:
[root@node1 ~]# ipvsadm -A -t 172.16.0.1:80 -s rr
[root@node1 ~]# ipvsadm -a -t 172.16.0.1:80 -r 192.168.0.2 -m
[root@node1 ~]# ipvsadm -a -t 172.16.0.1:80 -r 192.168.0.3 –m
客户端访问VIP并刷新:
Lvs-dr:gatewaying (direct routing)
工作模型:
工作流程:
1、客户端向Director请求服务,请求报文源地址为CIP,目标地址为VIP;
2、Director接收到请求报文,Director会认为Client请求的是一个后端集群服务,然后对后端RS发起arp请求,根据提前定义好的算法选择一个RS,将目标mac需改为RS的mac发往后端;
3、RS接收到请求,请求报文源地址为CIP,目标地址为VIP,而VIP是自己的,于是进行响应;
4、RS响应请求,响应报文源地址为VIP,目标地址为CIP,响应请求不会经过Director,直接经过互联网发往Client;
dr类型的特性:
1、保证前端路由将目标地址为VIP的报文统统发往Directory,而不能是RS;
解决方案:
1)、静态地址绑定:在前端路由器上操作;
问题:未必有路由操作权限;
2)、aprtables;
3)、修改RS上内核参数,将RS上的VIP配置在lo接口的别名上,并限制其不能响应对VIP地址解析请求;
2、RS可以使用私有地址;但也可以使用公网地址,此时可通过互联网通过RIP对其直接访问;
3、RS跟Directory必须在同一物理网络中;
4、请求报文经由Director,但响应报文必须不能经过Director;
5、不支持端口映射;
6、RS可以是大多数常见的OS;
7、RS的网关绝不允许指向DIP;
内核参数:
arp_ignore:如何响应接收ARP地址请求;
0:默认,只有arp 广播请求,马上响应,并且响应所有本机网卡的mac地址
1:表示仅在请求的地址配置在请求报文的接口进行响应;
arp_announce:如何通告本地地址;
0:默认,只要主机接入网络,则自动通告所有为网卡mac地址
1:尽力不通告非直接连入网络的网卡mac地址
2:表示仅通过网络直连的接口的地址;
RS配置方法:
所有网卡:
arp_ignore 1
arp_announce 2
RIP,eth0:
arp_ignore 1
arp_annource 2
配置流程:
Real Server:
网络和内核配置:
[root@node2 ~]# ifconfig eth0 172.16.0.4/16 up
[root@node2 ~]# echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore
[root@node2 ~]# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
[root@node2 ~]# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
[root@node2 ~]# echo 2 > /proc/sys/net/ipv4/conf/eth0/arp_announce
[root@node2 ~]# ifconfig lo:0 172.16.0.2 netmask 255.255.255.255 broadcast 172.16.0.2 up
[root@node2 ~]# route add -host 172.16.0.2 dev lo:0
[root@node3 ~]# ifconfig eth0 172.16.0.5/16 up
[root@node3 ~]# echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore
[root@node3 ~]# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
[root@node3 ~]# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
[root@node3 ~]# echo 2 > /proc/sys/net/ipv4/conf/eth0/arp_announce
[root@node3 ~]# ifconfig lo:0 172.16.0.2 netmask 255.255.255.255 broadcast 172.16.0.2 up
[root@node3 ~]# route add -host 172.16.0.2 dev lo:0
提供网页文件:
[root@node2 ~]# echo "node1.chencer.org" > /var/www/html/index.html
[root@node3 ~]# echo "node2.chencer.org" > /var/www/html/index.html
Director:
网络设置:
[root@node1 ~]# ifconfig eth0 172.16.0.3/16 up
[root@node1 ~]# ifconfig eth0:0 172.16.0.2 netmask 255.255.255.255 broadcast 172.16.0.2 up
[root@node1 ~]# route add -host 172.16.0.2 dev eth0:0
配置集群服务,并添加后端节点:
[root@node1 ~]# ipvsadm -A -t 172.16.0.2:80 -s rr
[root@node1 ~]# ipvsadm -a -t 172.16.0.2:80 -r 172.16.0.4 -g
[root@node1 ~]# ipvsadm -a -t 172.16.0.2:80 -r 172.16.0.5 -g
客户端访问VIP并刷新:
Lvs-tun:ipip encapsulation (tunneling)
工作模型:
工作流程:tun模型,通常作为异地容灾策略;
tun类型的特性:
1、RIP、VIP、DIP全部是公网地址;
2、RS的网关不会也不可能指向DIP;
3、请求报文经由Director,但响应报文必须不能经过Director;
4、不支持端口映射;
5、RS的OS必须支持隧道功能;