LVS的NAT模式和TUN模式

**

一 LVS的NAT模式

这里写图片描述
注意:VS/NAT 的优点是服务器可以运行任何支持 TCP/IP 的操作系统,它只需要一个 IP 地址配置在调度器上,服务器组可以用私有的 IP 地址。缺点是它的伸缩能力有限, 当服务器结点数目升到 20 时,调度器本身有可能成为系统的新瓶颈,因为在 VS/NAT 中请求和响应报文都需要通过负载调度器。

1 LVS+ldiectord的环境
Load Balance 双网卡 eth0: 172.25.1.2/24(对内) eth1: 172.25.254.200/24 (对外)
Virtual IP: 172.25.254.1/24

Realserver1: 172.25.1.3
rw 172.25.1.2
Realserver1: 172.25.1.4
rw 172.25.1.2
ldirectord-3.9.5-3.1.x86_64.rpm 安装包
2 实验步骤
1)在调度器上打开地址转发功能
编辑 vim /etc/sysctl.conf

# Kernel sysctl configuration file for Red Hat Linux
#
# For binary values, 0 is disabled, 1 is enabled.  See sysctl(8) and
# sysctl.conf(5) for more details.

# Controls IP packet forwarding
net.ipv4.ip_forward = 1    #打开路由参数
........

测试 real server2可以ping通外网
这里写图片描述
2 )调度器安装ldirectord-3.9.5-3.1.x86_64.rpm
yum install ldirectord-3.9.5-3.1.x86_64.rpm -y
rpm -ql ldirectord
这里写图片描述
cp /usr/share/doc/ldirectord-3.9.5/ldirectord.cf /etc/ha.d/
vim /etc/ha.d/ldirectord.cf

# Sample for an http virtual service
virtual=172.25.254.1:80      #VIP
        real=172.25.1.3:80 masq  #masp表示NAT模式
        real=172.25.1.4:80 masq
        fallback=127.0.0.1:80 masq
        service=http
        scheduler=rr     #调度策略为轮询
        #persistent=600
        #netmask=255.255.255.255
        protocol=tcp
        checktype=negotiate
        checkport=80
        request="index.html"
        #receive="Test Page"
        #virtualhost=www.x.y.z

# Sample configuration for a fwmark based service For an explanation of
                                                                                                                     40,1           3%

/etc/init.d/ldirectord reload
/etc/init.d/ldirectord restart
3)查看调度器策略
这里写图片描述
4 ) 配置real server2 和 real server3
安装httpd服务配置默认发布文件
这里写图片描述
/etc/init.d/httpd start
这里写图片描述
/etc/init.d/httpd start
5)客户端测试
这里写图片描述
6)假如其中一个real server2宕机
这里写图片描述
这里写图片描述
这里就可以看出ldirectord有健康检查

二 LVS的TUN模式

**
这里写图片描述
注意:
VS/TUN 技术对服务器有要求,即所有的服务器必须支持 “ IP Tunneling” 或者 “ IP
Encapsulation”协议。目前,VS/TUN 的后端服务器主要运行 Linux 操作系统。
在 VS/TUN 的集群系统中,负载调度器只将请求调度到不同的后端服务器,后端服务器将应答的数据直接返回给用户。这样,负载调度器就可以处理大量的请求,它甚至可以调 度百台以上的服务器(同等规模的服务器),而它不会成为系统的瓶颈。即使负载调度器只有 100Mbps的全双工网卡,整个系统的最大吞吐量可超过 1Gbps。所以,VS/TUN 可以极大地增加负载调度器调度的服务器数量。VS/TUN 调度器可以调度上百台服务器,而它本身不会成为系统的瓶颈,可以 用来构建高性能的超级服务器。
1 实验环境
Load Balance:172.25.1.2/24
Virtual IP: 172.25.1.100/24
Realserver1: 172.25.1.3/24
tunl0: 172.25.1.100/16
Realserver2: 172.25.1.4/24
tunl0:172.25.1.100/16

2 实验步骤
1) 调度器上添加策略
ipvsadm -A -t 172.25.1.100:80 -s rr
ipvsadm -a -t 172.25.1.100:80 -r 172.25.1.3 -i
ipvsadm -a -t 172.25.1.100:80 -r 172.25.1.4 -i
ipvsadm -ln

这里写图片描述
2)Rs1配置
添加tunl0 ipip隧道
方法1
modprobe ipip
ip link set up tunl0
ip addr add 172.25.1.100/24 dev tunl0
arptables -L
/etc/init.d/arptables_jf start
方法2

[root@server2 network-scripts]# cat /etc/sysconfig/network-scripts/ifcfg-tunl0
NAME=tunl0
DEVICE=tunl0
IPADDR=172.25.1.100
PREIPX=24
ONBOOT=yes
[root@server2 network-scripts]# 

这里写图片描述
3 )编辑/etc/sysctl.conf 进行arp包传输
vim /etc/sysctl.conf

net.ipv4.ip_forward = 1
net.ipv4.conf.tunl0.arp_ignore = 1
net.ipv4.conf.tunl0.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.tunl0.rp_filter = 0
net.ipv4.conf.all.rp_filter = 0

4)打开httpd服务
这里写图片描述
5)RS2进行一样的配置

    注:
    arp_ignore=1 表示对于网络上发来的arp广播包,realserver的lo端口将会丢弃,因为如果做出应答,根据arp协议,相当于通告网络上其它主机VIP对应的Mac地址是realserver的Mac地址,而不是LB的Mac地址,这样客户端上就会绕过lvs,直接与后端的realserver通信,负载调度就失去了意义;
    arp_announce: realserver 一般至少两个端口 两个ip,eth0 有ip,lo:0也绑定了一个vip,根据arp协议,arp请求包中必须包含源主机的IP地址和Mac地址,对方收到请求包后,记录下该源地址和Mac地址,建立一对一的映射,那么对于这种多IP的情况,realserver发送arp请求报的时候该如何取舍,将哪个ip作为源地址?
    参数arp_anonunce 正好是用来解决这个问题的,arp_announce=2 官方表述为使用最适当的本地地址,其实就是将eth0上的ip作为源地址,如果将vip作为源地址,对方就会将vip与realserver的mac地址映射起来,导致请求包都发给realserver,而不经过lvs.

6)客户端测试
这里写图片描述

猜你喜欢

转载自blog.csdn.net/yangkaiorange/article/details/82735471