go-alived Deployment
本目录包含 go-alived 的部署文件和安装脚本。
Systemd Service
安装步骤
- 编译二进制文件
go build -o go-alived .
- 安装二进制文件
sudo cp go-alived /usr/local/bin/
sudo chmod +x /usr/local/bin/go-alived
- 创建配置目录
sudo mkdir -p /etc/go-alived
sudo mkdir -p /etc/go-alived/scripts
- 复制配置文件
sudo cp config.example.yaml /etc/go-alived/config.yaml
sudo vim /etc/go-alived/config.yaml # 根据实际环境修改配置
- 安装 systemd 服务
sudo cp deployment/go-alived.service /etc/systemd/system/
sudo systemctl daemon-reload
- 启动服务
# 启动服务
sudo systemctl start go-alived
# 查看状态
sudo systemctl status go-alived
# 查看日志
sudo journalctl -u go-alived -f
# 设置开机自启
sudo systemctl enable go-alived
服务管理命令
# 启动服务
sudo systemctl start go-alived
# 停止服务
sudo systemctl stop go-alived
# 重启服务
sudo systemctl restart go-alived
# 重载配置(发送 SIGHUP 信号)
sudo systemctl reload go-alived
# 查看服务状态
sudo systemctl status go-alived
# 查看实时日志
sudo journalctl -u go-alived -f
# 查看最近的日志
sudo journalctl -u go-alived -n 100
# 启用开机自启
sudo systemctl enable go-alived
# 禁用开机自启
sudo systemctl disable go-alived
Service 文件说明
主要配置项
- ExecStart: 服务启动命令,指向
/usr/local/bin/go-alived - ExecReload: 重载配置命令(发送 SIGHUP 信号)
- User/Group: 以 root 用户运行(需要 raw socket 和网络接口管理权限)
- Restart: 失败时自动重启,间隔 5 秒
安全设置
-
Capabilities:
CAP_NET_ADMIN: 管理网络接口(添加/删除 IP)CAP_NET_RAW: 创建原始 socket(VRRP 协议)CAP_NET_BIND_SERVICE: 绑定特权端口(可选)
-
Protection:
ProtectSystem=strict: 保护系统目录只读ProtectHome=true: 保护用户主目录PrivateTmp=true: 使用私有临时目录ReadWritePaths=/etc/go-alived: 仅允许写入配置目录
资源限制
LimitNOFILE=65535: 最大打开文件数LimitNPROC=512: 最大进程数
配置文件位置
默认配置文件位置:/etc/go-alived/config.yaml
推荐的目录结构:
/etc/go-alived/
├── config.yaml # 主配置文件
└── scripts/ # 脚本目录
├── notify_master.sh # Master 状态通知脚本
├── notify_backup.sh # Backup 状态通知脚本
├── notify_fault.sh # Fault 状态通知脚本
└── check_service.sh # 健康检查脚本
卸载
# 停止并禁用服务
sudo systemctl stop go-alived
sudo systemctl disable go-alived
# 删除服务文件
sudo rm /etc/systemd/system/go-alived.service
sudo systemctl daemon-reload
# 删除二进制文件
sudo rm /usr/local/bin/go-alived
# 删除配置文件(可选)
sudo rm -rf /etc/go-alived
故障排查
查看服务状态
sudo systemctl status go-alived
查看详细日志
sudo journalctl -u go-alived -n 100 --no-pager
测试配置文件
/usr/local/bin/go-alived --config /etc/go-alived/config.yaml --debug
常见问题
- 权限错误: 确保服务以 root 运行或具有 CAP_NET_ADMIN/CAP_NET_RAW 权限
- 网卡不存在: 检查配置文件中的 interface 是否正确
- 端口冲突: 确保没有其他 keepalived 或 VRRP 服务在运行
- VIP 添加失败: 检查网络配置和 IP 地址是否冲突