trytete 发表于 2015-6-23 09:03:04

一步一步搭建LVS-DR模型LB集群(二)

LVS的持久连接:
持久连接即是不考虑LVS的转发方法,确保所有来自同一个用户的连接转发到同一个RealServer上
-p//表示此连接为持久连接
N//表示维持此持久连接的时间。默认6分钟。


持久连接的类型:
1.PCC(persistent client connector,持久用户连接)同一个用户所有的请求在超时范围之内都被定位到同一个RealServer上,这个时候在指定端口的时候使用的是0端口,就是所有的请求都转发出去。
2.PPC(persistent port connector)用户的所有请求在超时范围内按照端口定位到不同的RS上。
3.防火墙标记:把相关联的端口在防火墙上打上同样的标记,用户在访问两个相关联的服务的时候,就会定位到同一个RealServer上。


PCC实例
ipvsadm -A -t 192.168.1.110:0 -s rr -p 600PPC就是根据服务的不同,定向到不同的RealServer上,在Directory上多写几个ipvsadm指向,注意端口要区分开来就行了


防火墙标记的持久连接


iptables -t mangle -A PREROUTING -d 192.168.1.110 -p tcp --dport 80 -j MARK --set-mark 10把目的地为1982.168.1.110:80标记为10ipvsadm -A -f 10 -s rr -p 60//使用上面标记的10定义集群服务ipvsadm -a -f 10 -r 192.168.1.116 -g //为集群定义RealServeripvsadm -a -f 10 -r 192.168.1.117 -g简单的后台RS健康监测脚本


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
#!/bin/bash
#
VIP=192.168.1.110
CPORT=80
FAIL_BACK=127.0.0.1
FBSTATUS=0
RS=("192.168.1.116" "192.168.1.117")
RSTATUS=("1" "1")
RW=("2" "1")
RPORT=80
TYPE=g
add() {
ipvsadm -a -t $VIP:$CPORT -r $1:$RPORT -$TYPE -w $2
[ $? -eq 0 ] && return 0 || return 1
}
del() {
ipvsadm -d -t $VIP:$CPORT -r $1:$RPORT
[ $? -eq 0 ] && return 0 || return 1
}
while :; do
let COUNT=0
for I in ${RS[*]}; do
    if curl --connect-timeout 1 http://$I &> /dev/null; then
      if [ ${RSTATUS[$COUNT]} -eq 0 ]; then
         add $I ${RW[$COUNT]}
         [ $? -eq 0 ] && RSTATUS[$COUNT]=1
      fi
    else
      if [ ${RSTATUS[$COUNT]} -eq 1 ]; then
         del $I
         [ $? -eq 0 ] && RSTATUS[$COUNT]=0
      fi
    fi
    let COUNT++
done
sleep 5
done



页: [1]
查看完整版本: 一步一步搭建LVS-DR模型LB集群(二)