本帖最后由 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脚本如下: [root@master ~]# cat /etc/keepalived/check_nginx_pid.sh #!/bin/bash A=`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 fi else echo "OK,the nginx is running." >> /tmp/echo.log
fi
然后给脚本执行权限:
[root@master ~]# ll /etc/keepalived/check_nginx_pid.sh
-rwxr-xr-x. 1 root root 432 Aug 9 13:51 /etc/keepalived/check_nginx_pid.sh
[root@master ~]#killall nginx #先关闭nginx进程,下面开始测试
[root@master ~]# ps -C nginx --no-header
结果为空
[root@master ~]# /etc/keepalived/check_nginx_pid.sh
[root@master ~]# 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要怎么解决?
|