通过隧道实现虚拟服务器(VS/TUN)和通过网络地址转换实现虚拟服务器(VS/NAT)

一  通过隧道实现虚拟服务器(VS/TUN):

  调度器把请求报文通过IP隧道(相当于ipip或ipsec)转发至真实服务器,而真实服务器将响应处理后直接返回给客户,这种调度器只处理请求的入站报文,一般网络服务应答数据比请求报文大很多,采用VS/TUN技术后,集群系统的最大吞吐量可以提高10倍。

      VS/TUN的体系结构:

通过隧道搭建虚拟服务器的实现:

1.使用指令modprobe ipip在server1、server2和server3端建立管道tunl0,ip link set up  dev tunl0开启管道设备。server2和server3作为真实主机,安装httpd服务并在默认发布目录下建立index.html文件写入内容用来进行负载均衡的结果测试。

2. ip addr add 172.25.254.100/24 dev tunl0在三台主机的tunl0管道设备添加ip172.25.254.100:

3.  server2和server3两台主机作为真实主机RS,在这两台主机端添加arotables策略, /etc/init.d/arptables_jf save保存策略:

server2端:

server3端:

4.  在三台服务器端设定net.ipv4.conf.tunl0.rp_filter为0:

     关于rp_filter,这是一个内核参数。如果说rp_filter被启用,则服务器在某个接口上接收到了某个数据包,则目的地址为该数据包源地址的返回包必须通过同样的接口发送出去,也就是用于返回数据包的路由项的出口接口如果和该接口不一致,则返回的数据包就直接被内核丢弃。此处应该设定这个内核参数为0表示关闭。

5.  在server1这台虚拟主机端添加ipvsadm策略:

6.  测试:

实现负载均衡:

二  通过网络地址实现虚拟服务器

     通过网络地址转换将一组服务器构成一个高性能的,高可用的虚拟服务器(路由器用的就是NAT)

   通过网络地址转换,调度器LB重写请求报文的目标地址,根据预设的调度算法,将请求分派给后端的真实服务器,真实服务器的响应报文处理后必须通过调度器,通过调度器时,报文的源地址被重写,再返回给客户,完成整个负载调度过程。

VS/NAT的实现:

1.  在服务器server1端添加两块网卡eth0和eth1,并配置eth0的ip为172.25.254.1,配置eth1的ip为192.168.17.1.eth0和eth1不在同一个网段。将server1作为虚拟主机VS。

2.  新增两个虚拟机server2和server3作为真实主机RS。两个真实主机的ip分别为172.25.254.2和172.25.254.3。

     将172.25.254.1即虚拟主机的ip作为serer2和server3主机的网关:

3.  在server2和server3两个真实主机端安装httpd服务并开启,在httpd服务的默认发布目录新建index.html文件,写入不同的信息用来测试负载均衡的访问。之后重启httpd服务。

4.  在server1端设定net.ipv4.ip_forward为1,来进行ip转换和数据包的路由转发。可以使用sysctl -w net.ipv4.ip_forward=1来临时修改ip_forward值为1,或者编辑/etc/sysctl.conf文件来永久修改ip_forward值。

5.  在server1端,添加ipvsadm策略:

ipvsadm -l查看策略:

需要注意的时ipvsadm在添加策略后,不需要重启服务,否则添加的策略会刷新,也就是失效。

6.  测试:

    在真机端解析192.168.17.1。(真机ip需要与192.168.17.1在同一个网段,或者一张网卡添加两个ip,其中一个在192.168.17网段)

在server1端查看到负载均衡的效果:

猜你喜欢

转载自blog.csdn.net/letter_A/article/details/81293682