You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Podman环境下HAProxy容器无法连接后端服务器,报‘backend 'servers' has no server available!’错误求助

Podman环境下HAProxy容器无法连接后端服务器,报‘backend 'servers' has no server available!’错误求助

各位大佬好,遇到一个棘手的问题想请教:

TL;DR:我的容器环境在Docker下完全正常,之前用Podman也没问题,但现在切换回Podman后,HAProxy容器突然无法连接到后端的应用容器,报backend 'servers' has no server available!错误。本来以为Podman是Docker的兼容替代,现在这个情况实在搞不懂。

问题详细描述

我用HAProxy作为容器化环境的负载均衡器,HAProxy容器负责把流量转发到另一个独立的应用容器。这套配置正常运行了两周多,没有做任何改动的情况下,突然HAProxy就无法访问后端服务器了。

相关配置信息

HAProxy配置文件(haproxy.cfg)

global
    user haproxy
    group haproxy
    stats socket /var/run/haproxy.sock mode 660 level admin expose-fd listeners
    daemon

defaults
    timeout connect 10s
    timeout client 40s
    timeout tarpit 1m
    timeout server 120s

frontend app
    mode http
    bind *:80
    default_backend servers

backend servers
    mode http
    balance leastconn
    server app-001 app-001:5000 check

listen stats
    bind *:9999
    mode http
    stats enable
    stats uri /stats
    stats hide-version

容器启动命令

# 启动应用容器
podman run -d --rm --name app-001 --network my-network -v /path/dst/data:/data app-image

# 启动HAProxy容器
podman run -d --name haproxy-container --network my-network -p 80:80 -p 9999:9999 -v /path/dst/haproxy:/usr/local/etc/haproxy haproxy-image

容器镜像Dockerfile

  • HAProxy镜像Dockerfile
FROM docker.io/haproxytech/haproxy-alpine:latest
RUN touch /var/run/haproxy.sock && apk add socat && apk add curl
  • 应用镜像Dockerfile
FROM alpine
RUN apk update && apk add python3 && python -m ensurepip --upgrade && pip3 install Flask Flask_RESTful && mkdir data
COPY test_app.py .
CMD ["python","-m","test_app"]

测试应用代码(test_app.py)

from flask import Flask
from flask_restful import Resource, Api
from pathlib import Path

app = Flask(__name__)
api = Api(app)

data_path = Path.cwd() / 'data'

class Endpoint(Resource):
    def get(self):
        return list(map(lambda f: str(f.name), data_path.iterdir()))

api.add_resource(Endpoint, '/')

if __name__ == '__main__':
    app.run(host='0.0.0.0')

HAProxy容器日志输出

[NOTICE] (1): New worker (3) forked
[NOTICE] (1): Loading success.
[WARNING] (3): Server servers/app-001 is DOWN, reason: Layer4 timeout,
check duration: 2003ms. 0 active and 0 backup servers left. 0 sessions
active, 0 requeued, 0 remaining in queue.
[ALERT] (3): backend 'servers' has no server available!'

已尝试的排查步骤

  • 确认后端应用容器app-001单独运行时完全正常,能正常访问
  • 检查两个容器的网络配置,确认都在同一个Podman网络my-network下
  • 进入HAProxy容器尝试ping应用容器的IP,结果100%丢包
  • 反复检查haproxy.cfg配置,没有发现错误
  • 完全卸载重装Podman,问题依旧
  • 在另一台同版本(22.04)的机器上复现最小案例,还是出现同样问题
  • 换成Docker执行所有命令,一切正常,没有任何问题

最小复现步骤

当前目录结构:

dst/
├── Containerfiles/
│   ├── AppContainerfile
│   └── HAProxyContainerfile
├── data/
├── haproxy/
│   ├── haproxy.cfg
│   └── haproxy.sock
└── test_app.py

执行以下命令:

# 构建镜像
podman build -f Containerfiles/AppContainerfile -t app-image .
podman build -f Containerfiles/HaproxyContainerfile -t haproxy-image .

# 创建网络
podman network create my-network

# 启动容器
podman run -d --rm --name app-001 --network my-network -v /path/dst/data:/data app-image
podman run -d --name haproxy-container --network my-network -p 80:80 -p 9999:9999 -v /path/dst/haproxy:/usr/local/etc/haproxy haproxy-image

之前用Podman时这套流程完全正常,能通过80端口访问应用,HAProxy的9999/stats页面也能看到后端服务器是正常状态,但现在完全不行了。我怀疑问题可能出在Podman拉取docker.io/haproxytech/haproxy-alpine:latest这个基础镜像的方式上,但不确定具体原因。

希望各位大佬能帮忙分析下问题所在,以及怎么解决这个问题,非常感谢!

备注:内容来源于stack exchange,提问作者vshas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.22 11:53:11