从您提供的错误日志来看,Keepalived 无法启动的原因可能涉及以下几个方面:
1. 配置文件中存在无效参数
- 错误提示:
unknown state 'master'
和unknown state 'slave'
- 问题分析:
Keepalived 的state
配置项仅接受两种值:MASTER
或BACKUP
(必须大写)。您配置中的master
和slave
(小写)不被识别,因此被强制设置为BACKUP
。
- 解决方案:
修改配置文件(如shardingsphere-proxy/conf
和vastdb集群/conf
),将state
的值改为大写:
state MASTER # 而不是 master state BACKUP # 而不是 slave
2. 认证密码长度超限
- 错误提示:
Truncating auth_pass to 8 characters
- 问题分析:
Keepalived 的auth_pass
密码长度限制为最多8个字符。如果配置的密码超过8位,会被自动截断(可能导致与其他节点认证失败)。
- 解决方案:
检查配置中的auth_pass
字段,确保密码不超过8个字符,并确认所有节点的密码一致。
3. 脚本安全权限未启用
- 错误提示:
SECURITY VIOLATION - scripts are being executed but script_security not enabled. There are insecure scripts.
- 问题分析:
配置中引用了自定义脚本(如健康检查脚本),但未在全局配置中启用script_security
选项,导致安全违规。
- 解决方案:
在 Keepalived 的全局配置部分(通常是/etc/keepalived/keepalived.conf
的顶部)添加:
global_defs { script_security }
4. 网络接口跟踪问题
- 错误提示:
Ignoring track_interface enp1s0 since own interface
- 问题分析:
此警告表示 Keepalived 检测到配置中尝试跟踪当前节点自身的接口(enp1s0),这是冗余的(通常用于跟踪对端接口)。但这不是致命错误,不会直接导致启动失败。
✅ 综合修复步骤
- 修正配置文件中的状态参数:确保所有
state
字段使用大写(MASTER/BACKUP)。 - 缩短认证密码:确保
auth_pass
不超过8个字符。 - 启用脚本安全权限:在全局配置中添加
script_security
。 - 重启 Keepalived:
systemctl restart keepalived
- 检查日志确认是否正常启动:
journalctl -u keepalived --since "5 minutes ago"
如果问题仍未解决,请提供完整的配置文件内容(注意隐藏敏感信息),以便进一步排查。
内容由零声教学AI助手提供,问题来源于学员提问