基于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.www58058.com/5515

(0)
馬行空馬行空
上一篇 2015-06-30
下一篇 2015-06-30

相關推薦

  • Mariadb數據庫復制系列(二):主主復制

       實驗二:MySQL雙主復制架構的實現 雙主的實現方式與主/從類似,僅是兩個主機即使主節點,又是對方的從節點雙主模型容易造成數據的不一致性,因此要慎用! 1、實驗環境 2、在兩個節點上安裝mariadb-server服務 3、修改兩個節點的服務器配置文件 4、兩個節點上各自啟動服務,各授權一個具有復制權限的用戶 5、查看兩個節點的二進制日志的狀態 6、在…

    Linux干貨 2016-11-24
  • 編譯安裝httpd-2.4.9及新特性詳解

    前言 前面我們講解了httpd在CentOS6上(httpd-2.2)的相關功能配置,而CentOS7上采用了httpd-2.4的版本,那么httpd-2.4增加了哪些特性呢?接下來讓我們在CentOS6.6上手動編譯安裝一下httpd-2.4.9,看一下和httpd-2.2有什么不同,順便補充說一下httpd的其它功能。 環境及新特性介紹 環境介紹 系統環…

    Linux干貨 2015-04-15
  • 第六周 N21 總有刁民想害朕

    請詳細總結vim編輯器的使用并完成以下練習題 1、復制/etc/rc.d/rc.sysinit文件至/tmp目錄,將/tmp/rc.sysinit文件中的以至少一個空白字符開頭的行的行首加#;    %s/\(^[[:space:]]\)/#\1/ 2、復制/boot/grub/grub.conf至/tmp目錄中,刪除/tmp/grub.…

    Linux干貨 2016-08-08
  • Linux網絡簡單設置

     修改IP地址:臨時修改IP地址(centenos 7以前版本)ifconfig eth0 x.x.x.x netmask x.x.x.x                   修改…

    Linux干貨 2017-08-19
  • 數據分析≠Hadoop+NoSQL,不妨先看完善現有技術的10條捷徑

    讓業務搭乘大數據技術確實是件非常有吸引力的事情,而Apache Hadoop讓這個誘惑來的更加的猛烈。Hadoop是個大規??蓴U展數據存儲平臺,構成了大多數大數據項目基礎。Hadoop是強大的,然而卻需要公司投入大量的學習精力及其它的資源。 如果得到正確的應用,Hadoop確實能從根本上提升你公司的業務,然而這條Hadoop的應用之路卻充滿了荊棘。另一個方面…

    Linux干貨 2015-02-25
  • MySQL/MariaDB DML操作之Select

    前言 上文我們已經講解了MySQL/MariaDB的基礎知識和DDL相關操作,接下來我們來說一下MySQL/MariaDB的DML操作,因select查詢較復雜也較重要,所以本文主要是對select查詢的詳解。 DML操作 DML之select 投影查詢 select col_name,[col_name1,…] from …

    Linux干貨 2015-05-07
欧美性久久久久