扫码阅读
手机扫码阅读
SELinux 导致 Keepalived 检测脚本无法执行
273 2024-07-20
我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。
文章来源:
咸鱼运维杂谈
扫码关注公众号
本文讨论了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的理解,以及邀请懂的小伙伴解答一些疑问,并附上了参考资料链接。
想要了解更多内容?
文章来源:
咸鱼运维杂谈
扫码关注公众号
咸鱼运维杂谈的其他文章
加入社区微信群
与行业大咖零距离交流学习
软件研发质量管理体系建设
白皮书上线