LVS-DR集群构建

设置端口标记的规则

1
2
3
4
5
#!/bin/bash
VIP=$1
IPTABLES=/sbin/iptables
$IPTABLES -t mangle -A PREROUTING -p tcp -d $VIP --dport 80 -j MARK --set-mark 100
$IPTABLES -t mangle -A PREROUTING -p tcp -d $VIP --dport 443 -j MARK --set-mark 100

ARP防火墙设置

1
2
3
4
5
6
7
8
9
10
11
#!/bin/bash
VIP=192.168.0.100
RIP=192.168.0.x
DGW=172.25.0.254
DGWMAC=52:54:00:00:00:fe
arptables -F
arptables -A IN -d $VIP -j DROP
arptables -A OUT -s $VIP -j mangle --mangle-ip-s $RIP
/sbin/ifconfig eth0:1 $VIP broadcast $VIP netmask 255.255.255.0 up
arp -s $DGW  $DGWMAC
/sbin/route add default gw $DGW

检测脚本

1
2
3
4
5
6
7
#!/bin/bash
/usr/bin/links -dump 1 $1 >/dev/null 2>&1
if [ 0 -eq $? ] ; then
    echo ok
else
    echo fail
fi

主配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
[root@lvs-f30 ~]# cat /etc/sysconfig/ha/lvs.cf
serial_no = 25
primary = 172.25.30.14
primary_private = 192.168.122.246
service = lvs
backup_active = 1
backup = 172.25.30.15
backup_private = 192.168.122.247
heartbeat = 1
heartbeat_port = 539
keepalive = 6
deadtime = 18
network = direct
debug_level = NONE
monitor_links = 0
syncdaemon = 0
syncd_iface = eth0

virtual http {
     active = 1
     address = 172.25.30.100 eth0:1
     vip_nmask = 255.255.255.0
     fwmark = 100
     port = 80
     send = "GET / HTTP/1.0\r\n\r\n"
     expect = "ok"
     use_regex = 0
     send_program = "/bin/testlink %h"
     load_monitor = none
     scheduler = wlc
     protocol = tcp
     timeout = 6
     reentry = 15
     quiesce_server = 0

     server node1 {
         address = 192.168.122.224
         active = 1
         port = 80
         weight = 1
     }

     server node2 {
         address = 192.168.122.245
         active = 1
         port = 80
         weight = 1
     }
}

virtual https {
     active = 1
     address = 172.25.30.100 eth0:1
     vip_nmask = 255.255.255.0
     fwmark = 100
     port = 443
     send = "GET / HTTP/1.0\r\n\r\n"
     expect = "HTTP"
     use_regex = 0
     load_monitor = none
     scheduler = wlc
     protocol = tcp
     timeout = 6
     reentry = 15
     quiesce_server = 0

     server node1 {
         address = 192.168.122.224
         active = 1
         port = 443
         weight = 1
     }

     server node2 {
         address = 192.168.122.245
         active = 1
         port = 443
         weight = 1
     }
}