【发布时间】:2021-10-13 06:47:47
【问题描述】:
我有一个非常简单的环境,有一个客户端、一个服务器和一个 envoy 代理,每个都运行在一个单独的 docker 上,通过 http 进行通信。
当我使用 docker-compose 设置它时,它可以工作。
但是,当我手动设置泊坞窗和网络时(使用docker network create、设置别名等),当客户端尝试向服务器发送请求时,我收到“503 - 上游没有健康”消息。 curl 到网络别名的工作来自特使容器。知道使用 docker-compose 和手动设置网络和容器有什么区别吗?
envoy.yaml:
static_resources:
listeners:
- address:
socket_address:
address: 0.0.0.0
port_value: 10000
filter_chains:
- filters:
- name: envoy.filters.network.http_connection_manager
typed_config:
"@type": type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager
codec_type: auto
stat_prefix: ingress_http
route_config:
name: local_route
virtual_hosts:
- name: backend
domains: ["*"]
routes:
- match: { prefix: "/" }
route: { cluster: service }
http_filters:
- name: envoy.filters.http.router
typed_config: {}
clusters:
- name: service
connect_timeout: 0.25s
type: STRICT_DNS
lb_policy: round_robin
load_assignment:
cluster_name: service
endpoints:
- lb_endpoints:
- endpoint:
address:
socket_address:
address: server-stub
port_value: 5000
admin:
access_log_path: "/tmp/envoy.log"
address:
socket_address:
address: 0.0.0.0
port_value: 9901
有效的 docker-compose 文件(但我不想使用 docker-compose,我正在使用单独设置每个 docker 的脚本):
version: "3.8"
services:
envoy:
image: envoyproxy/envoy:v1.16-latest
ports:
- "10000:10000"
- "9901:9901"
volumes:
- ./envoy.yaml:/etc/envoy/envoy.yaml
server-stub:
build:
context: .
dockerfile: Dockerfile
ports:
- "5000:5000"
【问题讨论】:
-
你能分享你的撰写文件吗?
-
我已经用 docker compose 更新了问题,虽然我不想使用它,但我有脚本来设置具有许多其他配置的 docker,我需要使用这些脚本来设置每个docker 分开,然后将它们连接到网络上。