一、lvs-dr類型:也稱direct routing,簡稱為g(gatewaying);配置lvs-dr基于iptables mangle的實現方式
實驗圖:
地址規劃:
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,刷新頁面查看變化;
二、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