如何在Linux上配置高可用的容器网络

来源:程序开发作者:高宇头衔:草根站长
导读:本期聚焦于小伙伴创作的《如何在Linux上配置高可用的容器网络》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《如何在Linux上配置高可用的容器网络》有用,将其分享出去将是对创作者最好的鼓励。

在Linux系统中配置高可用的容器网络,核心目标是消除网络层面的单点故障,当主节点出现故障时,备用节点能自动接管网络流量,保证容器服务不中断。整个方案基于keepalived实现虚拟IP的漂移,结合docker的自定义网络让容器绑定到虚拟IP上,实现网络高可用。

如何在Linux上配置高可用的容器网络

环境准备

需要准备两台Linux服务器,系统版本建议为CentOS 7及以上或者Ubuntu 18.04及以上,两台服务器需要处于同一局域网内,且网络互通。同时需要提前安装好docker和keepalived服务,以下是两台服务器的示例信息:

节点角色IP地址虚拟IP
主节点192.168.1.10192.168.1.100
备用节点192.168.1.11

安装依赖服务

安装docker

两台节点都需要安装docker,以CentOS系统为例,执行以下命令完成安装:

# 安装依赖包
yum install -y yum-utils device-mapper-persistent-data lvm2
# 添加docker仓库
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 安装docker
yum install -y docker-ce docker-ce-cli containerd.io
# 启动docker并设置开机自启
systemctl start docker
systemctl enable docker

安装keepalived

同样两台节点都执行安装命令:

yum install -y keepalived

配置keepalived实现虚拟IP漂移

主节点配置

编辑主节点的keepalived配置文件/etc/keepalived/keepalived.conf,内容如下:

global_defs {
   router_id node_1  # 节点唯一标识
}

vrrp_instance VI_1 {
    state MASTER  # 主节点角色
    interface eth0  # 绑定的网卡名称,根据实际网卡调整
    virtual_router_id 51  # 虚拟路由ID,主备节点需一致
    priority 100  # 优先级,主节点高于备用节点
    advert_int 1  # 心跳检查间隔,单位秒

    authentication {
        auth_type PASS
        auth_pass 123456  # 认证密码,主备节点需一致
    }

    virtual_ipaddress {
        192.168.1.100/24  # 配置的虚拟IP
    }
}

备用节点配置

编辑备用节点的keepalived配置文件,内容如下:

global_defs {
   router_id node_2  # 节点唯一标识
}

vrrp_instance VI_1 {
    state BACKUP  # 备用节点角色
    interface eth0  # 绑定的网卡名称,根据实际网卡调整
    virtual_router_id 51  # 虚拟路由ID,主备节点需一致
    priority 90  # 优先级,低于主节点
    advert_int 1  # 心跳检查间隔,单位秒

    authentication {
        auth_type PASS
        auth_pass 123456  # 认证密码,主备节点需一致
    }

    virtual_ipaddress {
        192.168.1.100/24  # 配置的虚拟IP
    }
}

启动keepalived服务

两台节点都执行以下命令启动服务并设置开机自启:

systemctl start keepalived
systemctl enable keepalived

启动后可以在主节点执行ip addr show eth0命令,查看是否成功绑定虚拟IP 192.168.1.100。此时如果关闭主节点的keepalived服务,虚拟IP会自动漂移到备用节点,实现故障切换。

配置容器网络绑定虚拟IP

为了让容器使用高可用的虚拟IP,需要创建docker自定义网络,将容器接入该网络,并配置端口映射到虚拟IP上。

创建docker自定义网络

两台节点都执行以下命令创建自定义网络:

docker network create --driver=bridge --subnet=172.18.0.0/16 my_net

启动容器并绑定网络

以启动nginx容器为例,执行以下命令:

# 启动nginx容器,接入自定义网络
docker run -d --name nginx_server --network my_net -p 192.168.1.100:80:80 nginx:latest

此时访问虚拟IP 192.168.1.100的80端口,就能访问到nginx服务。当主节点故障,虚拟IP漂移到备用节点后,备用节点上同样运行着绑定该虚拟IP的容器,服务不会中断。

注意事项

  • 两台节点的网卡名称需要保持一致,或者根据实际网卡修改keepalived配置中的interface参数。
  • keepalived的优先级设置需要合理,主节点优先级要高于备用节点,避免脑裂问题。
  • 容器的端口映射需要明确指定绑定的IP为虚拟IP,否则默认绑定到所有网卡,可能导致切换异常。
  • 建议配置keepalived的健康检查脚本,监控docker服务或者容器状态,当服务异常时主动降低优先级,触发虚拟IP漂移。

健康检查配置示例

可以在keepalived配置中添加健康检查脚本,监控docker服务状态,以下是主节点的补充配置:

# 在vrrp_instance VI_1块中添加以下内容
track_script {
    check_docker  # 调用健康检查脚本
}

# 在global_defs之后添加脚本定义
vrrp_script check_docker {
    script "/usr/bin/systemctl is-active docker > /dev/null"  # 检查docker服务是否运行
    interval 2  # 检查间隔2秒
    weight -20  # 如果检查失败,优先级降低20
}

备用节点也添加相同的健康检查配置,这样当主节点的docker服务异常时,优先级会降低到低于备用节点,虚拟IP自动漂移到备用节点,实现更精准的故障切换。

Linux容器网络高可用keepaliveddocker修改时间:2026-07-18 13:18:35

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。