
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
Docker化的Keepalived,旨在为多主机容器部署提供简单的高可用性(HA)。Keepalived提供一个或多个虚拟IP地址(VIP)的故障转移功能,确保即使主机发生故障,VIP也始终可用。该镜像特别设计用于Rancher环境中的HAProxy前端,但也适用于大多数需要HA和IP地址故障转移的多主机容器部署(如Apache、Nginx等监听服务)。
HAProxy(及大多数监听服务)不会绑定到主机网络栈中不存在的地址。由于Keepalived仅在单个主机上承载特定VIP,其他主机上的服务将无法绑定到VIP地址,可能导致服务失败。同时,这些主机上的Keepalived会通过检查VIP地址和指定服务端口上的监听器来执行健康检查,也可能因此失败。
为避免此问题,可采用以下两种方法:
方法一:配置服务绑定所有地址
将服务(如HAProxy)配置为不指定具体地址,从而绑定到所有地址,例如:
bind :80bind *:80bind 0.0.0.0:80方法二:启用非本地地址绑定
通过将内核参数net.ipv4.ip_nonlocal_bind设置为1,允许服务绑定到不存在的地址。
大多数Linux发行版
在Debian、RHEL及大多数Linux变体上,只需将net.ipv4.ip_nonlocal_bind=1添加到/etc/sysctl.conf文件末尾,然后执行sudo sysctl -p命令重新加载配置。
RancherOS v0.5.0及更高版本
编辑/var/lib/rancher/conf/cloud-config.d/user_config.yml文件,在适当位置添加:
yamlrancher: sysctl: net.ipv4.ip_nonlocal_bind: 1
RancherOS v0.4.5及更低版本
如果未使用默认控制台,请参考“大多数Linux发行版”部分。如果使用默认控制台:
若尚未创建/opt/rancher/bin/start.sh启动文件,编辑/var/lib/rancher/conf/cloud-config.d/user_config.yml文件,添加以下内容以创建包含sysctl -p命令的文件:
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
执行命令:/bin/sh -c "/usr/sbin/sysctl -w net.ipv4.ip_nonlocal_bind=1",或在单元文件中添加oneshot执行。
其他发行版可能有略微不同的命令或语法,请参考相应文档。
CHECK_IP环境变量设置为any。CHECK_IP环境变量设置为与VIRTUAL_IP相同的值。bashdocker run -d \ --name keepalived \ --net=host \ --cap-add=NET_ADMIN \ -e VIRTUAL_IP=192.168.1.100 \ -e CHECK_IP=any \ -e CHECK_PORT=80 \ yourusername/docker-keepalived
| 环境变量 | 描述 | 默认值 |
|---|---|---|
| VIRTUAL_IP | 要管理的虚拟IP地址 | 无 |
| CHECK_IP | 健康检查的IP地址,设为any表示仅检查端口 | 无 |
| CHECK_PORT | 健康检查的端口 | 无 |
本项目源于Rancher论坛上的讨论([***] Iveson(@sjiveson),包括上述非本地绑定的说明,其脚本是本项目的核心。同时感谢@fabiorauber提出问题,帮助改进文档。
注意:本项目仍在开发中,可能会不断变更,尚未准备好用于实际测试。
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务