孤独海岸线 发表于 2017-12-23 07:40:05

keepalived+nginx配置文件及检查nginx服务的脚本

  脚本一启动的速度要快一些哦,因为脚本二要判断两次以后才启动哎
  这两个一般配合keepalived使用
  脚本一:
  

#!/bin/bash  
#author:fansik
  
#description:check nginx service
  

  
run
=`ps -C nginx --no-header | wc -l`  

if [ $run -eq 0 ]  

then  /etc/rc.d/init.d/nginx start
sleep 3  
fi
  

  脚本二:
  

#!/bin/bash  
#author:fansik
  
#description:check nginx service
  

  
count
=0  
for (( k=0; k<2; k++ ))
  

do  check_code
=$( curl --connect-timeout 3 -sL -w "%{http_code}\\n" http://localhost/index.html -o /dev/null )  if [ "$check_code" != "200" ]; then
  count=$(expr $count + 1)
  sleep 3
  continue
  else
  count=0
  break
  fi
  
done
  
if [ "$count" != "0" ]; then
  /etc/init.d/nginx start
  exit 1
  
else
  exit 0
  
fi
  

  keepalived的配置文件/etc/init.d/keepalived.conf:主配置文件如下,从配置文件将MASTER改成BACKUP,双主模型的时候在添加一个vrrp_instance VI_1主里面变成BACKUP,从里面变成MASTER,virtual_router_id变一下
  

! Configuration File for keepalived  
global_defs {
  notification_email {
  root@localhost
  }
  notification_email_from fanjb@localhost
  smtp_server
127.0.0.1  smtp_connect_timeout
30  router_id LVS_DEVEL
  
}
  
vrrp_script chk_nginx {
  script
"/etc/keepalived/nginx1.sh"  interval
1  weight
-2  fall
2  rise
1  
}
  

  
vrrp_script chk_notify {
  script
"/etc/keepalived/chk_nginx.sh"  interval
1  weight
-2  
}
  
vrrp_instance VI_1 {
  state BACKUP
  interface eth0
  virtual_router_id
51  priority
99  advert_int
1  authentication {
  auth_type PASS
  auth_pass
1111  }
  virtual_ipaddress {
10.10.10.250  }
  track_script {
  chk_nginx
  chk_notify
  }   
  notify_master
"/etc/keepalived/notify.sh master"  notify_backup
"/etc/keepalived/notify.sh backup"  notify_fault
"/etc/keepalived/notify.sh fault"  
}
  

  通知脚本:/etc/keepalived/nodify.sh
  

#!/bin/bash  
#author:fansik
  
#description:check nging status
  

  
vip
=10.10.10.250  
contact
='root@localhost'  

  
notify() {
  mailsubject
="`hostname` to be $1:$vip floating"  mailbody
="`date '+%F %H:%M:%S'`: vrrp transition, `hostname` change to be $1"  echo $mailbody | mail -s "$mailsubject" $contact
  
}
  

  

case "$1" in  master)
  notify master
  exit
0  ;;      
  backup)
  notify backup
  exit
0  ;;      
  fault)
  notify fault
  exit
0  ;;      
*)echo "Usage:`basename $0` {master|backup|fault}"  exit
1  ;;      
  

esac  
页: [1]
查看完整版本: keepalived+nginx配置文件及检查nginx服务的脚本