HaProxy具有用于Spring Boot应用程序的负载均衡器



>我已经将 haproxy 配置为两个容器化 Spring 引导应用程序的负载均衡器

下面是示例 docker 撰写文件配置

version: '3.3'
services:
wechat-1:
image: xxxxxx/wechat-social-connector:2.0.0
container_name: wechat-1
ports:
- 81:8000
networks:
- web 
#depends_on:
#- wechat-2
wechat-2:
image: xxxxxxxxx/wechat-social-connector:2.0.0
container_name: wechat-2
ports:
- 82:8000
networks:
- web
haproxy:
build: ./haproxy
container_name: haproxy
ports:
- 80:80
networks:
- web
#depends_on:
#- wechat-1

networks:
web:

码头工人文件

FROM haproxy:2.1.4
COPY haproxy.cfg /usr/local/etc/haproxy/haproxy.cfg

HA 配置文件

global
debug
daemon
maxconn 2000
defaults
mode http
timeout connect 5000ms
timeout client  50000ms
timeout server  50000ms
frontend http-in
bind *:80
default_backend servers
backend servers
mode http
option httpchk
balance roundrobin
server wechat-1 wechat-1:81 check
server wechat-2 wechat-2:82 check

当我尝试使用端口号 80 访问我的端点时,我总是得到服务不可用。

从haproxy日志调试后注意到以下错误

Creating haproxy  ... done
Creating wechat-2 ... done
Creating wechat-1 ... done
Attaching to wechat-2, wechat-1, haproxy
haproxy     | Available polling systems :
haproxy     |       epoll : pref=300,  test result OK
haproxy     |        poll : pref=200,  test result OK
haproxy     |      select : pref=150,  test result FAILED
haproxy     | Total: 3 (2 usable), will use epoll.
haproxy     | 
haproxy     | Available filters :
haproxy     |   [SPOE] spoe
haproxy     |   [CACHE] cache
haproxy     |   [FCGI] fcgi-app
haproxy     |   [TRACE] trace
haproxy     |   [COMP] compression
haproxy     | Using epoll() as the polling mechanism.
haproxy     | [NOTICE] 144/185524 (1) : New worker #1 (8) forked
haproxy     | [WARNING] 144/185524 (8) : Server servers/wechat-1 is DOWN, reason: Layer4 connection problem, info: "Connection refused", check duration: 0ms. 1 active and 0 backup servers left. 0 sessions active, 0 requeued, 0 remaining in queue.
haproxy     | [WARNING] 144/185525 (8) : Server servers/wechat-2 is DOWN, reason: Layer4 connection problem, info: "Connection refused", check duration: 0ms. 0 active and 0 backup servers left. 0 sessions active, 0 requeued, 0 remaining in queue.
haproxy     | [ALERT] 144/185525 (8) : backend 'servers' has no server available!

从日志中,我了解Haproxy何时无法连接其他两个正常运行而没有任何问题的容器。 我厌倦了使用depends_on属性(暂时评论(仍然问题相同。

有人可以帮助我解决这个问题吗?

请尝试以下配置。haproxy.cfg变化不大

docker-compose.yaml

version: '3.3'
services:
wechat-1:
image: nginx
container_name: wechat-1
ports:
- 81:80
networks:
- web
depends_on:
- wechat-2
wechat-2:
image: nginx
container_name: wechat-2
ports:
- 82:80
networks:
- web
haproxy:
build: ./haproxy
container_name: haproxy
ports:
- 80:80
networks:
- web
depends_on:
- wechat-1
networks:
web:

Dockerfile

FROM haproxy
COPY haproxy.cfg /usr/local/etc/haproxy/haproxy.cfg

haproxy.cfg

global
debug
daemon
maxconn 2000
defaults
mode http
timeout connect 5000ms
timeout client  50000ms
timeout server  50000ms
frontend http-in
bind *:80
default_backend servers
backend servers
mode http
option forwardfor
balance roundrobin
server wechat-1 wechat-1:80 check
server wechat-2 wechat-2:80 check

HAPROXY 日志

Attaching to wechat-2, wechat-1, haproxy
haproxy     | Using epoll() as the polling mechanism.
haproxy     | Available polling systems :
haproxy     |       epoll : pref=300,  test result OK
haproxy     |        poll : pref=200,  test result OK
haproxy     |      select : pref=150,  test result FAILED
haproxy     | Total: 3 (2 usable), will use epoll.
haproxy     | 
haproxy     | Available filters :
haproxy     |   [SPOE] spoe
haproxy     |   [CACHE] cache
haproxy     |   [FCGI] fcgi-app
haproxy     |   [TRACE] trace
haproxy     |   [COMP] compression
haproxy     | [NOTICE] 144/204217 (1) : New worker #1 (6) forked

相关内容

最新更新