liuyuhui_gdtyj 发表于 2018-08-09 14:19

keepalived检测脚本时不能启动nginx

本帖最后由 liuyuhui_gdtyj 于 2018-08-09 14:30 编辑

使用nginx做负载均衡,keepalived做高可用。做一个检查nginx脚本,如果停止了先尝试重启,如果仍然失败,则结束keepalived。下面代码并未写结束keepalived,只是写echo输出,测试脚本问题在哪里。
主要代码如下:
vrrp_script chk_nginx {    script "/etc/keepalived/check_nginx_pid.sh"    interval 3}
vrrp_instance VI_1 {......    track_script {      chk_nginx    }}
检测nginx脚本如下:# cat /etc/keepalived/check_nginx_pid.sh #!/bin/bashA=`ps -C nginx --no-header |wc -l`if [ $A -eq 0 ];then      echo "nginx is not running,now start it ..." >> /tmp/echo.log      /usr/sbin/nginx &>> /tmp/echo.log      sleep 1      B=`ps -C nginx --no-header |wc -l`      if [ $B -eq 0 ];then            echo "Oh,start nginx faild" >> /tmp/echo.log      else            echo "OK,start nginx success" >> /tmp/echo.log      fielse      echo "OK,the nginx is running." >> /tmp/echo.log
fi
然后给脚本执行权限:
# ll /etc/keepalived/check_nginx_pid.sh
-rwxr-xr-x. 1 root root 432 Aug9 13:51 /etc/keepalived/check_nginx_pid.sh

#killall nginx    #先关闭nginx进程,下面开始测试
# ps -C nginx --no-header
结果为空
# /etc/keepalived/check_nginx_pid.sh
# ps -C nginx --no-header
15002 ?      00:00:00 nginx
15004 ?      00:00:00 nginx
可以看到,手动执行这个脚本没任何问题,但启动keepalived去自动执行这个脚本,到/usr/sbin/nginx就报没有权限,/tmp/echo.log内容如下:
nginx is not running,now start it ...
/etc/keepalived/check_nginx_pid.sh: line 5: /usr/sbin/nginx: Permission denied
Oh,start nginx faild


请问这个权限问题keepalived要怎么解决?




页: [1]
查看完整版本: keepalived检测脚本时不能启动nginx