MYDNS沒有自動檢測主機是否存活的功能,隨手寫了一個SHELL來實現這個功能
首先,給mysql中的rr表加一個active的字段,emun 1 或 0 1表示啓動,0表示禁用
再修改/etc/mydns.conf
zone-cache-size = 1024 # Maximum number of elements stored in the zone cache
zone-cache-expire = 60 # Number of seconds after which cached zones expires
reply-cache-size = 1024 # Maximum number of elements stored in the reply cache
reply-cache-expire = 10 # Number of seconds after which cached replies expire
儘量緩存的時間小點,這樣修改過的域名,很會快生效,可能也會對MYSQL有一定的影響!
腳本如下:
--------check.sh--------------------------------
#!/bin/bash
#auther:akin520
#blog: http://badb0y.cublog.cn and http://badb0y.blog.51cto.com
#set mysql config
MYSQL_BIN=/usr/local/mysql/bin
MYSQL_HOST=localhost
MYSQL_USER=root
MYSQL_PWD=root
stty erase ^h
mysql_ip=`$MYSQL_BIN/mysql -h $MYSQL_HOST -u $MYSQL_USER -p$MYSQL_PWD -e "select * from mydns.rr where type='A';"|awk 'NR>1 {print $5}'`
for x in $mysql_ip
do
ping -c1 -W1 $x
result=$?
if [[ $result -eq 0 ]]
then
echo "server $x active!"
$MYSQL_BIN/mysql -h $MYSQL_HOST -u $MYSQL_USER -p$MYSQL_PWD -e "UPDATE mydns.rr SET active=\"1\" WHERE DATA=\""$x"\";"
else
echo "server $x down!"
$MYSQL_BIN/mysql -h $MYSQL_HOST -u $MYSQL_USER -p$MYSQL_PWD -e "UPDATE mydns.rr SET active=\"0\" WHERE DATA=\""$x"\";"
fi
done
只是一個簡單的PING做檢測,速度太慢!如果誰有更快的方便,,一定要告訴我噢,和和!