понедельник, 20 июля 2009 г.

Балансировка нагрузки

До некоторого времени использовали Round-robin но иногда перекосы всетаки упирали какую нибуть циску в потолок, для проверки перекосов за 10 минут с перекуром был скреативен след скриптик. Запихиваем в cron с необходимой переодичностью и получаем щастье.

#!/bin/bash

#date
DATE=`date "+%d.%m.%Y %H:%M:%S"`

#IP adress pool cisco
CISCO_IP1=192.168.1.1
CISCO_IP2=192.168.1.2


#max count VPN session
MAXVPN_C1=1500
MAXVPN_C2=1500

#path to snmpwalk
PTSNMPW=/usr/local/bin/snmpwalk

#path to bind
PTBIND=/etc/init.d/bind

#path to zone file
PTZONEF=/var/lib/bind/zone/pptp.example.ru.db

#snmp community
COMMUN=public

#MIB
MIB=1.3.6.1.4.1.9.10.24.1.1.4.1.2.3

#main zone
MAINZONE=/var/lib/bind/zone/example.ru.named

#cisco zone file name
CZONE=pptp.exampe.ru.db

#log
LOG=/var/log/cisco_reload.log

#main
COUNT=`$PTSNMPW -v 2c $CISCO_IP1 -c $COMMUN $MIB | cut -d ' ' -f4`

if [ "$COUNT" -le "$MAXVPN_C1" ]
then
echo "login IN A $CISCO_IP1" > $PTZONEF
else
echo "$DATE - reloading CISCO 1 complited" >> $LOG
echo ";CISCO1 reloading" > $PTZONEF
fi

COUNT=`$PTSNMPW -v 2c $CISCO_IP2 -c $COMMUN $MIB | cut -d ' ' -f4`

if [ "$COUNT" -le "$MAXVPN_C2" ]
then
echo "login IN A $CISCO_IP2" >> $PTZONEF
else
echo "$DATE - reloading CISCO 2 complited" >> $LOG
fi

INCLTEST=`cat $MAINZONE | grep -c $CZONE`
if [ "$INCLTEST" -eq 0 ]
then echo "\$include \"$CZONE\"" >> $MAINZONE
fi

$PTBIND reload
echo "$DATE - work complited!" >> $LOG

Комментариев нет:

Отправить комментарий