grpc-web icon indicating copy to clipboard operation
grpc-web copied to clipboard

503 Service Unavailable "Http response at 400 or 500 level"

Open anand-dotworld opened this issue 3 years ago • 5 comments

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: {…}}

anand-dotworld avatar Oct 25 '21 13:10 anand-dotworld

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 :)

sampajano avatar Oct 30 '21 06:10 sampajano

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 avatar Apr 08 '23 16:04 shanifdhanani

@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.)

sampajano avatar Apr 12 '23 21:04 sampajano