clearent/keepalived该镜像为Docker化的Keepalived,旨在为多主机容器部署提供简单的高可用性(HA)解决方案。Keepalived通过管理一个或多个虚拟IP(VIP)的故障转移,确保即使某台主机发生故障,VIP也能始终可用。特别适用于Rancher环境中的HAProxy前端,同时也支持需要HA和IP地址故障转移的各类监听服务(如Apache、Nginx等)。
HAProxy等监听服务默认无法绑定到主机网络栈中不存在的地址。由于Keepalived仅在单台主机上托管特定VIP,其他主机上的服务将无法绑定VIP地址,可能导致服务启动失败及Keepalived健康检查异常。解决此问题有两种方案:
将服务配置为绑定所有网络接口,例如:
bind :80bind *:80bind 0.0.0.0:80通过设置内核参数net.ipv4.ip_nonlocal_bind=1允许服务绑定不存在的地址。
大多数Linux发行版(Debian、RHEL等)
/etc/sysctl.conf文件,添加以下内容:
net.ipv4.ip_nonlocal_bind=1
bash[sudo] sysctl -p
RancherOS
若使用默认控制台:
若不存在/opt/rancher/bin/start.sh启动文件,编辑/var/lib/rancher/conf/cloud-config.d/user_config.yml,添加以下内容创建启动文件:
yamlwrite_files: - encoding: b64 content: IyEvYmluL3NoCnN5c2N0bCAtcApleGl0Cg== owner: root:root path: /opt/rancher/bin/start.sh permissions: '0744'
若已存在该文件,添加sysctl -p命令到文件中。
在/var/lib/rancher/conf/cloud-config.d/user_config.yml末尾添加以下内容创建/etc/sysctl.conf:
yamlwrite_files: - encoding: b64 content: bmV0LmlwdjQuY29uZi5hbGwuYXJwX2FjY2VwdCA9IDEgCm5ldC5pcHY0LmlwX25vbmxvY2FsX2JpbmQgPSAxIApuZXQuaXB2NC5jb25mLmFsbC5wcm9tb3RlX3NlY29uZGFyaWVzID0gMQo= owner: root:root path: /etc/sysctl.conf permissions: '0644'
重启系统使配置生效。
CoreOS
执行以下命令:
bash/bin/sh -c "/usr/sbin/sysctl -w net.ipv4.ip_nonlocal_bind=1"
或添加到oneshot类型的systemd单元文件中执行。
其他Linux发行版可能有不同配置方法,请参考对应系统文档。
CHECK_IP=anyCHECK_IP与VIRTUAL_IP的值相同| 环境变量 | 说明 | 示例值 |
|---|---|---|
| VIRTUAL_IP | 虚拟IP地址 | 192.168.1.100 |
| CHECK_IP | 健康检查IP("any"表示仅检查端口) | "any" 或 192.168.1.100 |
| CHECK_PORT | 健康检查端口 | 80 |
本项目源于Rancher论坛的讨论([***] Iveson (@sjiveson) 提供,感谢@fabiorauber对文档改进的贡献。


manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务