#!/bin/sh /etc/rc.common CFG_FILE=/etc/haproxy.cfg stop(){ logger -t alex stopping haproxy echo "stopping haproxy" /etc/init.d/haproxy disable /etc/init.d/haproxy stop [ -f /etc/haproxy_backup ] && { cp /etc/haproxy_backup /etc/init.d/haproxy } iptables -t nat -D OUTPUT -j HAPROXY &> /dev/null iptables -t nat -F HAPROXY &> /dev/null sleep 1 iptables -t nat -X HAPROXY &> /dev/null } start(){ echo "starting haproxy" logger -t restarting haproxy echo global > $CFG_FILE cat >> $CFG_FILE </dev/null` local server_name=`uci get haproxy.@main_server[$COUNTER].server_name 2>/dev/null` local server_port=`uci get haproxy.@main_server[$COUNTER].server_port 2>/dev/null` local server_weight=`uci get haproxy.@main_server[$COUNTER].server_weight 2>/dev/null` local validate=`uci get haproxy.@main_server[$COUNTER].validate 2>/dev/null` if [ -z "$server_ip" ] || [ -z "$server_name" ] || [ -z "$server_port" ] || [ -z "$server_weight" ]; then echo break break fi echo the main server $COUNTER $server_ip $server_name $server_port $server_weight [ "$validate" = 1 ] && { echo server $server_name $server_ip:$server_port weight $server_weight maxconn 1024 check resolvers mydns inter 1500 rise 3 fall 3 >> $CFG_FILE } iptables -t nat -A HAPROXY -p tcp -d $server_ip -j ACCEPT COUNTER=$(($COUNTER+1)) done COUNTER=0 #添加备用服务器 while true do local server_ip=`uci get haproxy.@backup_server[$COUNTER].server_ip 2>/dev/null` local server_name=`uci get haproxy.@backup_server[$COUNTER].server_name 2>/dev/null` local server_port=`uci get haproxy.@backup_server[$COUNTER].server_port 2>/dev/null` local validate=`uci get haproxy.@backup_server[$COUNTER].validate 2>/dev/null` if [ -z "$server_ip" ] || [ -z "$server_name" ] || [ -z "$server_port" ]; then echo break break fi echo the backup server $COUNTER $server_ip $server_name $server_port [ "$validate" = 1 ] && { echo server $server_name $server_ip:$server_port weight 10 check resolvers mydns backup inter 1500 rise 3 fall 3 >> $CFG_FILE } iptables -t nat -A HAPROXY -p tcp -d $server_ip -j ACCEPT COUNTER=$(($COUNTER+1)) done iptables -t nat -I OUTPUT -j HAPROXY /etc/init.d/haproxy enable /etc/init.d/haproxy restart cp /etc/init.d/haproxy /etc/haproxy_backup cp /etc/haproxy_start /etc/init.d/haproxy } restart(){ echo luci for haproxy sleep 1s local vt_enabled=`uci get haproxy.@arguments[0].enabled 2>/dev/null` logger -t haproxy is initializing enabled is $vt_enabled echo $vt_enabled if [ "$vt_enabled" = 1 ]; then [ -f /etc/haproxy_backup ] && { cp /etc/haproxy_backup /etc/init.d/haproxy } iptables -t nat -D OUTPUT -j HAPROXY &> /dev/null iptables -t nat -F HAPROXY &> /dev/null sleep 1 iptables -t nat -X HAPROXY &> /dev/null start; else stop; fi }