扫码阅读
手机扫码阅读

SELinux 导致 Keepalived 检测脚本无法执行

356 2024-07-20

我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。

查看原文:SELinux 导致 Keepalived 检测脚本无法执行
文章来源:
咸鱼运维杂谈
扫码关注公众号

本文讨论了Keepalived检测脚本无法执行的问题,并提供了详细的排查和解决方法。

前言

Keepalived中的vrrp_script模块用于定义VRRP的自定义脚本检查,与track_script模块配合使用,实现对集群服务资源的监控。当检测到故障时,Keepalived会触发状态转移以保证服务的高可用性。

问题

作者遇到一个粉丝反馈的问题,其Keepalived的检测脚本执行失败,返回状态码1,但手动执行却正常。

排查

作者首先查看了日志文件/var/log/messages,发现提示“scripts are being executed but script_security not enabled”,意味着Keepalived想要执行脚本但受到安全限制。进一步查看了系统审计日志/var/log/audit/audit.log,发现是SELinux拒绝了Keepalived进程执行check.sh脚本访问/usr/bin/ping文件。

解决

作者提出五种解决方案:

  • 关闭SELinux。
  • (失败)尝试修改check.sh的安全上下文与Keepalived一致。
  • 修改check.sh的安全上下文为keepalived_unconfined_script_exec_t。
  • 将脚本转移到/usr/libexec/keepalived目录,该目录的安全上下文适合Keepalived执行脚本。
  • 在Keepalived全局配置中添加enable_script_security字段,以非root身份运行脚本。

文章最后作者提到对SELinux的理解,以及邀请懂的小伙伴解答一些疑问,并附上了参考资料链接。

想要了解更多内容?

查看原文:SELinux 导致 Keepalived 检测脚本无法执行
文章来源:
咸鱼运维杂谈
扫码关注公众号