基于iptables mangle的lvs && lvs的持久连接

一、lvs-dr类型:也称direct routing,简称为g(gatewaying);配置lvs-dr基于iptables mangle的实现方式

 实验图:

1.png

 地址规划:

   VIP: 172.16.2.100

   DIP: 172.16.2.13

   RIP1:172.16.2.12

   RIP2:172.16.2.14

 配置步骤

 (1)同步时间,以Director为时间服务器,RS以Director为时间服务器,同步时间

[root@Director ~]# date 
Sun Jun 21 13:24:02 CST 2015

[root@RS1 htdocs]# date
Sun Jun 21 13:24:06 CST 2015

[root@RS2 html]# date
Sun Jun 21 13:24:08 CST 2015

 (2)修改RS的内核参数,禁止响应路由器查询VIP的arp请求

[root@RS1 ~]# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce 
[root@RS1 ~]# echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce 
[root@RS1 ~]# echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore 
[root@RS1 ~]# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
[root@RS2 ~]# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce 
[root@RS2 ~]# echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce 
[root@RS2 ~]# echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore 
[root@RS2 ~]# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore

 (3)修改Director的防火墙规则,开启转发功能

[root@Director ~]# iptables -F;iptables -F -t nat
[root@Director ~]# vim /etc/sysctl.conf 
    net.ipv4.ip_forward = 1  
[root@Director ~]# sysctl -p

 (4)在Director、RS服务器上配置VIP地址

[root@Director ~]# ifconfig eth1:0 172.16.2.100 broadcast 172.16.2.100 netmask 255.255.255.255
[root@Director ~]# ifconfig 
eth1      Link encap:Ethernet  HWaddr 00:0C:29:5A:4F:52  
          inet addr:172.16.2.13  Bcast:172.16.2.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fe5a:4f52/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:34718 errors:0 dropped:0 overruns:0 frame:0
          TX packets:12253 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:14209969 (13.5 MiB)  TX bytes:1351338 (1.2 MiB)

eth1:0    Link encap:Ethernet  HWaddr 00:0C:29:5A:4F:52  
          inet addr:172.16.2.100  Bcast:172.16.2.100  Mask:255.255.255.255
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:80 errors:0 dropped:0 overruns:0 frame:0
          TX packets:80 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:7266 (7.0 KiB)  TX bytes:7266 (7.0 KiB)
[root@RS1 ~]# ifconfig lo:0 172.16.2.100 broadcast 172.16.2.100 netmask 255.255.255.255
[root@RS1 ~]# ifconfig
eth1      Link encap:Ethernet  HWaddr 00:0C:29:0E:C4:33  
          inet addr:172.16.2.12  Bcast:172.16.2.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fe0e:c433/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:9328 errors:0 dropped:0 overruns:0 frame:0
          TX packets:3795 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:8278339 (7.8 MiB)  TX bytes:337391 (329.4 KiB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:59 errors:0 dropped:0 overruns:0 frame:0
          TX packets:59 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:5699 (5.5 KiB)  TX bytes:5699 (5.5 KiB)

lo:0      Link encap:Local Loopback  
          inet addr:172.16.2.100  Mask:255.255.255.255
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
[root@RS2 ~]# ifconfig lo:0 172.16.2.100 broadcast 172.16.2.100 netmask 255.255.255.255
[root@RS2 ~]# ifconfig 
eth1      Link encap:Ethernet  HWaddr 00:0C:29:F8:D4:92  
          inet addr:172.16.2.14  Bcast:172.16.2.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fef8:d492/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:161326 errors:0 dropped:0 overruns:0 frame:0
          TX packets:132169 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:25610678 (24.4 MiB)  TX bytes:16331857 (15.5 MiB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:1935 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1935 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:197004 (192.3 KiB)  TX bytes:197004 (192.3 KiB)

lo:0      Link encap:Local Loopback  
          inet addr:172.16.2.100  Mask:255.255.255.255
          UP LOOPBACK RUNNING  MTU:65536  Metric:1

 (5)在Director、RS上添加去往172.16.2.100的主机路由(目的是RS构建响应报文的时候以VIP为源IP封装数据包)

[root@Director ~]# route add -host 172.16.2.100 dev eth1:0
[root@Director ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
172.16.2.100    0.0.0.0         255.255.255.255       UH   0   0      0 eth1
172.16.2.0     0.0.0.0         255.255.255.0        U    0   0      0 eth1
0.0.0.0      172.16.2.1          0.0.0.0         UG   0   0      0 eth1
[root@RS1 ~]# route  add -host 172.16.2.100 dev lo:0
[root@RS1 ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
172.16.2.100    0.0.0.0         255.255.255.255      UH   0   0      0 lo
172.16.2.0     0.0.0.0         255.255.255.0       U    0   0      0 eth1
0.0.0.0      172.16.2.1        0.0.0.0          UG   0   0      0 eth1
[root@RS2 ~]# route add  -host 172.16.2.100 dev lo:0
[root@RS2 ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
172.16.2.100    0.0.0.0         255.255.255.255      UH   0   0     0   lo
172.16.2.0     0.0.0.0         255.255.255.0        U    0   0     0  eth1
0.0.0.0       172.16.2.1       0.0.0.0           UG   0   0     0  eth1

 (6)在Director上利用iptables将http流量打标记

root@Director ~]# iptables -t mangle -A PREROUTING -d 172.16.2.100 -p tcp --dport 80 -j MARK --set-mark 6

[root@Director ~]# iptables -L -n -t mangle
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         
MARK       tcp  --  0.0.0.0/0            172.16.2.100        tcp dpt:80 MARK set 0x6

 (7)在Director上创建基于防火墙标记的集群

[root@Director ~]# ipvsadm -A -f 6 -s rr

 (8)在Director上创建的iptables防护墙标记集群添加RS

[root@Director ~]# ipvsadm -a -f 6 -r 172.16.2.12 -g -w 1
[root@Director ~]# ipvsadm -a -f 6 -r 172.16.2.14 -g -w 1
[root@Director ~]# ipvsadm -L -n
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
FWM  6 rr
  -> 172.16.2.12:0                Route   1      0          0         
  -> 172.16.2.14:0                Route   1      0          0

 (9)打开浏览器,输入地址:http://172.16.2.100,刷新页面查看变化;

  7.png  6.png

二、lvs的持久连接:

  1)lvs的持久连接目的:

    无论使用何种调度方法,持久连接都能保证在指定的时间段内,将来自同一个IP的请求始终定向至同一个RS

  

  2)lvs的持久连接类型:

    PCC: 每客户端持久连接

     在持久连接时长内,来自同一个的CIP对VIP的请求,无论请求什么服务,都统统转发至第一次挑选出的RS;定义TCP或UDP集群服务时,其端口为0;

   PPC: 每端口持久连接

     单端口持久调度;分属于不同的端口,不会跨端口调度

   PFM: 每FWM持久连接

     单FWM调度;分属于不同的FWM,不会跨FWM调度

  3)实现方法:只有在创建服务集群时添加-p选项,其他过程都与lvs-dr一样,没有变化

    PCC实现方法:

[root@Director ~]# ipvsadm -A -t 172.16.2.100 -s rr -p 300 \\添加会话保持时间为300s,单位是秒

    PPC实现方法:

[root@Director ~]# ipvsadm -A -t 172.16.2.100:80 -s rr -p 300

   PFM实现方法:

[root@Director ~]# ipvsadm -A -f 6 -s rr -p 300

原创文章,作者:马行空,如若转载,请注明出处:http://www.178linux.com/5515

(0)
上一篇 2015-06-30 16:55
下一篇 2015-06-30 16:59

相关推荐

  • LINUX初次见面

    LINUX的文件系统 在Linux的眼睛中,一切都为文件,这也是Linux的中心哲学思想。正因如此造就了一个性能稳定,功能强大,效率高的操作系统。Linux有自己的层级标准,它定义了每个系统分区的用途,和所需要的最小构成文件目录。由不同的文件来完成不同的功能造就了一个Linux的完整生态。 linux的文件系统格式比较丰富,它的核心系统能支持十多种文件系统类…

    2017-05-18
  • 逻辑卷管理器LVM使用简介

    逻辑卷管理器(LVM) 原理图如下: 先准备一个分区/dev/sdb1,注意也存在ID问题,选择8e。 1.先把磁盘变成物理卷 在做这步前可以先看下系统中存在的物理卷,没有就什么都不会显示。 把我们准备好的两个磁盘变成物理卷,注意我那使用旧的格式化的分区磁盘,可能会出现上面有文件系统或者卷标类型的问题,所以尽量使用新磁盘做实验。如果出现这种情况,可以使用dd…

    2017-05-02
  • RAID,pv,vg,lv的实验

    首先在虚拟机中添加5块硬盘,以备实验使用,此实验以sdc,sdd,sde,sdf,sdg硬盘为例:     添加硬盘:(不用重新启动虚拟机读取新添加磁盘)             ~]# echo “- – -” > /sys/class…

    Linux干货 2017-03-19
  • 6、vim编辑和查找和特殊权限

    http://note.youdao.com/yws/public/redirect/share?id=dd29f6f6ad717181cdd6d01bbf8db554&type=false

    Linux干货 2016-08-08
  • Tomcat

    简介 Tomcat是由Apache软件基金会下属的Jakarta项目开发的一个Servlet容器,按照Sun Microsystems提供的技术规范,实现了对Servlet和JavaServer Page(JSP)的支持,并提供了作为Web服务器的一些特有功能,如Tomcat管理和控制平台、安全域管理和Tomcat阀等。由于Tomcat本身也内含了一个HTT…

    2017-05-25
  • tomcat

    tomcat 简述 tomcat的结构 tomcat配置 总结与问题 简述 什么是tomcat? tomcat是一个java2ee的web容器的残缺实现,提供了serverlet,asp转换等组件。 tomcat的功能? tomcat能够将asp文件通过转换,转换为serverlet格式,这样子就可以被java识别运行并将结果转为asp响应,并且tomcat…

    2016-06-24