Lvs_TUN模式的搭建部署

一、实验原理

这里写图片描述
(1)原理详情:
<1>客户请求数据包,目标地址VIP(LB的IP地址)发送到LB上;
<2>LB接收到客户请求包,进行IP Tunnel封装,在原有的包头加上IP Tunnel的包头,然后发送给服务器;
<3>服务器根据IP Tunnel包头信息(此时就又一种逻辑上的隐形隧道,只有LB和服务器之间懂)收到请求包,然后解开IP Tunnel包头信息,得到客户的请求包并进行响应处理;
<4>响应处理完毕之后,服务器使用自己的出公网的线路,将这个响应数据包发送给客户端,源IP地址还是VIP地址。

(2)优点:
Director分配请求到不同的real server。real server处理请求后直接回应给用户,这样director负载均衡器仅处理客户机与服务器的一半连接。IP Tunneling技术极大地提高了director的调度处理能力,同时也极大地提高了系统能容纳的最大节点数,可以超过100个节点。real server可以在任何LAN或WAN上运行,这意味着允许地理上的分布,这在灾难恢复中有重要意义。
比起NAT技术,由于请求和响应都需要通过LB进行地址的改写,那么当客户端的请求越来越多的时候,LB的处理能力就会成为一个瓶颈。为了解决这个问题,LB通过
IP隧道,将客户端的请求通过IP隧道,发送给真实的服务器,服务器处理完请求之后,将响应请求的IP改为LB的IP,然后将响应报文发送给客户端。
注:DR方式是通过修改MAC,规模是一个交换网络。而TUN方式,是通过给数据包加上新的IP头部来实现。
二、实验部署
(1)实验环境


这里所有的主机都是rhel6.5,且selinux的状态为disabled,防火墙都是关闭状态;

server4    分发器
server2    RS
server3    RS

(2)实验过程
server4(分发器):
首先,yum源必须进行扩展(HighAvailability LoadBalancer ResilientStorage ScalableFileSystem )

[root@server1 ~]# yum install ipvsadm -y
[root@server4 ~]# ipvsadm -C ##清除策略
[root@server4 ~]# ipvsadm -A -t 172.25.45.100:80 -s rr ##rr 轮询算法
[root@server4 ~]# ipvsadm -a -t 172.25.45.100:80 -r 172.25.45.2:80 -i   ##-i  隧道模式
[root@server4 ~]# ipvsadm -a -t 172.25.45.100:80 -r 172.25.45.3:80 -i
[root@server1 ~]# ipvsadm -Ln  ##不解析查看策略内容
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  172.25.45.100:80 rr
  -> 172.25.45.2:80               Tunnel  1      0          0         
  -> 172.25.45.3:80               Tunnel  1      0          0         

[root@server4 ~]# ip addr add 172.25.45.100/24 dev eth0  ##eth0端口添加VIP
[root@server4 ~]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 52:54:00:9f:35:96 brd ff:ff:ff:ff:ff:ff
    inet 172.25.45.4/24 brd 172.25.45.255 scope global eth0
    inet 172.25.45.100/24 scope global eth0
    inet6 fe80::5054:ff:fe9f:3596/64 scope link 
       valid_lft forever preferred_lft forever

[root@server4 ~]# echo 1 > /proc/sys/net/ipv4/ip_forward  ##打开IP转发接口;

server3、server2(所有节点加载模块IP)

[root@server2 ~]# modprobe ipip  ##在加载好ipip模块建瓯就会由默认的tunl0隧道
[root@server2 ~]# ip link set up tunl0  ##开启设备
[root@server2 ~]# vim /etc/sysctl.conf  ##编辑内核参数

这里写图片描述
rp_filter : 忽略数据包的不合法性(接受端口和发送端口不一致),接受;

[root@server3 ~]# sysctl -p  ##使内核参数永久生效
[root@server3 network-scripts]# cp ifcfg-lo ifcfg-tunl0
[root@server3 network-scripts]# vim ifcfg-tunl0  ##文件方式

这里写图片描述

[root@server3 network-scripts]# /etc/init.d/network start
[root@server3 ~]# echo 0 > /proc/sys/net/ipv4/ip_forward  ##关闭arp转发
[root@server3 ~]# lsmod | grep ipip ##查看当前ipip模块
ipip                    8371  0 
tunnel4                 2943  1 ipip
[root@server3 ~]# cd /var/www/html
[root@server3 ~]# vim index.html
    bbs.westos.org 
[root@server3 network-scripts]# /etc/init.d/httpd start
##server2:
和server3相同,除了apache的默认发布文件:
[root@server2 ~]# cd /var/www/html
[root@server2 ~]# vim index.html
    www.westos.org - server2
[root@server2 ~]# /etc/init.d/httpd start

物理机:
负载均衡实现:
这里写图片描述


过程出现的问题:
客户端访问被拒,是因为/etc/sysctl.conf中编写的命令格式错误:
net.ipv4.conf.all.rp_filter=0 < 其中”=”左边没加空格 >
正确格式应为net.ipv4.conf.all.rp_filter =0
附:

排错思路:
首先确保网络通畅,再去看客户端访问时,调度器有没有响应;如果有,问题一定在客户端;如果没有响应,调度器配置有问题;

猜你喜欢

转载自blog.csdn.net/wangkana/article/details/81784992
今日推荐