grpc-web
grpc-web copied to clipboard
503 Service Unavailable "Http response at 400 or 500 level"
I am trying to run a simple demo application for react and grpc implementation. I am getting this error . My client is running on port 8080 and server is running on port 9090.
This is the envoy.yaml file I am using
admin:
access_log_path: /tmp/admin_access.log
address:
socket_address: { address: 0.0.0.0, port_value: 9901 }
static_resources:
listeners:
- name: listener_0
address:
socket_address: { address: 0.0.0.0, port_value: 8080 }
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: local_service
domains: ["*"]
routes:
- match: { prefix: "/" }
route:
cluster: random_service
timeout: 0s
max_stream_duration:
grpc_timeout_header_max: 0s
cors:
allow_origin_string_match:
- prefix: "*"
allow_methods: GET, PUT, DELETE, POST, OPTIONS
allow_headers: keep-alive,user-agent,cache-control,content-type,content-transfer-encoding,custom-header-1,x-accept-content-transfer-encoding,x-accept-response-streaming,x-user-agent,x-grpc-web,grpc-timeout
max_age: "1728000"
expose_headers: custom-header-1,grpc-status,grpc-message
http_filters:
- name: envoy.filters.http.cors
- name: envoy.filters.http.grpc_web
- name: envoy.filters.http.router
clusters:
- name: random_service
connect_timeout: 0.25s
type: logical_dns
http2_protocol_options: {}
lb_policy: round_robin
load_assignment:
cluster_name: random_service
endpoints:
- lb_endpoints:
- endpoint:
address:
socket_address:
address: host.docker.internal
port_value: 9090
I am getting this error:
POST http://localhost:8080/randomPackage.Random/ChatInitiate 503 (Service Unavailable)
Uncaught {code: 14, message: "Http response at 400 or 500 level", metadata: {…}}
Thanks for the report :)
The 503 error seems to indicate that the random_service backend is not reachable.
Maybe you could try comparing your Docker setup with our Echo App setup (and its envoy config) and see what's different?
One thing i noticed that you're using host.docker.internal
which idk if is working for you. For that maybe you could refer to the HelloWorld example proxy configuration and see if that works for you.
Hope that helps :)
I had the same issue. For anyone coming here from Google, my issue was that Docker wasn't exposing the ports that I needed to my local machine. Changing the run script from:
docker build -t envoy . && docker run -d --network=host envoy
to
docker build -t envoy . && docker run -d -p 9091:9091 -p 8080:8080 envoy
worked for me
@shanifdhanani Thanks for sharing! Yes that's right, the -p
flags is required on Mac & Windows).
Some further instructions on how to run the echo demo app can be found here too. (P.S. I think the -p 8080:8080
flag would suffice since Envoy is ran on port 8080.)