- iptables -t mangle -A PREROUTING -p tcp -d 192.168.4.183/32 --dport 27000 -j MARK --set-mark 27000
- iptables -t mangle -A PREROUTING -p tcp -d 192.168.4.183/32 --dport 1027 -j MARK --set-mark 27000
- ipvsadm -A -f 27000 -s wlc -p 30
- ipvsadm -a -f 27000 -r 192.168.4.187:0 -g -w 1000
- ipvsadm -a -f 27000 -r 192.168.4.186:0 -g -w 1000
- ipvsadm -a -f 27000 -r 192.168.4.185:0 -g -w 1000
- #!/bin/bash
- REAL_SERVER1=192.168.4.185
- REAL_SERVER2=192.168.4.186
- REAL_SERVER3=192.168.4.187
- # CONN_SERVER1=`ipvsadm -lcn | grep $REAL_SERVER1:1027 |wc -l`
- # echo $CONN_SERVER1
- # WEIGHT_SERVER1=`ipvsadm |grep 192.168.4.185 | awk '{print $4}' `
- # echo WEIGHT_SERVER1 IS $WEIGHT_SERVER1
- REAL_SERVER=("192.168.4.185" "192.168.4.186" "192.168.4.187")
- echo "now it has ${#REAL_SERVER[*]} real servers such as:" ${REAL_SERVER[*]}
- j=0
- for i in ${REAL_SERVER[*]}
- do
- CONN_SERVER[$j]=`/sbin/ipvsadm -lcn | grep $i:1027 |wc -l`
- WEIGHT_SERVER[$j]=`/sbin/ipvsadm |grep $i | awk '{print $4}' `
- echo "i am" $i
- echo "CONN_SERVER[$j]" ${CONN_SERVER[$j]}
- echo "WEIGHT_SERVER[$j]" ${WEIGHT_SERVER[$j]}
- if (( ${CONN_SERVER[$j]} ==0 )); then
- if !(( ${WEIGHT_SERVER[$j]} == 1000 )); then
- #echo aa ${WEIGHT_SERVER[$j]}
- /sbin/ipvsadm -e -f 27000 -r $i -w 1000 -g
- echo the weight of $i has been changed to 1000
- fi
- else
- if !(( ${WEIGHT_SERVER[$j]} == 1)); then
- # echo bb ${WEIGHT_SERVER[$j]}
- /sbin/ipvsadm -e -f 27000 -r $i -w 1 -g
- echo the weight of $i has been changed to 1
- fi
- fi
- let j++
- done