HAProxy的从备到主推配置的脚本

HA,我一个Master	一个Slave	
Master的IP比Slave的IP少1
在Slave上更改了配置后


vi /etc/haproxy/haproxy.cfg
/opt/scripts/ha.sh check
/opt/scripts/ha.sh reload
/opt/scripts/ha.sh tomaster

#!/bin/sh
#
# haproxy
#
# chkconfig:   - 85 15
# description:  HAProxy is a free, very fast and reliable solution \
#               offering high availability, load balancing, and \
#               proxying for TCP and  HTTP-based applications
# processname: haproxy
# config:      /etc/haproxy/haproxy.cfg
# pidfile:     /var/run/haproxy.pid

# Source function library.
. /etc/rc.d/init.d/functions

# Source networking configuration.
. /etc/sysconfig/network

# Check that networking is up.
[ "$NETWORKING" = "no" ] && exit 0

exec="/usr/sbin/haproxy"
prog=$(basename $exec)


ippart1topart3=`ifconfig eth0 | sed -n '/inet addr/s/^[^:]*:\([0-9.]\{7,15\}\) .*/\1/p' | gawk -F. '{print $1"."$2"."$3"."}'`
ipslavepart4=`ifconfig eth0 | sed -n '/inet addr/s/^[^:]*:\([0-9.]\{7,15\}\) .*/\1/p' | gawk -F. '{print $4}'`
ipmasterpart4=$[$ipslavepart4-1]
HAProxyMaster=$ippart1topart3$ipmasterpart4
HAProxySlave=`ifconfig eth0 | sed -n '/inet addr/s/^[^:]*:\([0-9.]\{7,15\}\) .*/\1/p'`
CFGDir="/etc/haproxy"
DATE=`date +%Y%m%d%H%M%S`
BAKFile=$CFGDir/backup/haproxy.cfg-$HAProxySlave-$DATE

[ -e /etc/sysconfig/$prog ] && . /etc/sysconfig/$prog

lockfile=/var/lock/subsys/haproxy

check() {
    $exec -c -V -f /etc/$prog/$prog.cfg
}

start() {
    $exec -c -q -f /etc/$prog/$prog.cfg
    if [ $? -ne 0 ]; then
        echo "Errors in configuration file, check with $prog check."
        return 1
    fi

    echo -n $"Starting $prog: "
    # start it up here, usually something like "daemon $exec"
    daemon $exec -D -f /etc/$prog/$prog.cfg -p /var/run/$prog.pid
    retval=$?
    echo
    [ $retval -eq 0 ] && touch $lockfile
    return $retval
}

stop() {
    echo -n $"Stopping $prog: "
    # stop it here, often "killproc $prog"
    killproc $prog
    retval=$?
    echo
    [ $retval -eq 0 ] && rm -f $lockfile
    return $retval
}

restart() {
    $exec -c -q -f /etc/$prog/$prog.cfg
    if [ $? -ne 0 ]; then
        echo "Errors in configuration file, check with $prog check."
        return 1
    fi
    stop
    start
}

reload() {
    $exec -c -q -f /etc/$prog/$prog.cfg
    if [ $? -ne 0 ]; then
        echo "Errors in configuration file, check with $prog check."
        return 1
    fi
    echo -n $"Reloading $prog: "
    $exec -D -f /etc/$prog/$prog.cfg -p /var/run/$prog.pid -sf $(cat /var/run/$prog.pid)
    retval=$?
    echo
    return $retval
}

force_reload() {
    restart
}

fdr_status() {
    status $prog
}

backup() {
    \cp $CFGDir/haproxy.cfg $BAKFile
    if [ $? -eq 0 ]; then
        echo "Backuping to Local:$CFGDir/backup successful."
    else
        echo "Backuping to Local:$CFGDir/backup failure."
        return 1
    fi
    scp $BAKFile $HAProxyMaster:$CFGDir/backup
    if [ $? -eq 0 ]; then
        echo "Backuping to $HAProxyMaster:$CFGDir/backup successful"
    else
        echo "Backuping to $HAProxyMaster:$CFGDir/backup failure"
        return 1
    fi
}

tomaster() {
    scp $CFGDir/haproxy.cfg $HAProxyMaster:$CFGDir
    retval=$?
    [ $retval -eq 0 ] && ssh root@$HAProxyMaster '/etc/init.d/haproxy reload'
}

case "$1" in
    start|stop|restart|reload)
        $1
        ;;
    force-reload)
        force_reload
        ;;
    check)
        check
        ;;
    status)
        fdr_status
        ;;
    condrestart|try-restart)
        [ ! -f $lockfile ] || restart
        ;;
    backup)
        backup
        ;;
    tomaster)
        tomaster
        ;;
    *)
        echo $"Usage: $0 {backup|check|tomaster|start|stop|status|restart|try-restart|reload|force-reload}"
        exit 2
esac
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值