Skip to content

constant http request errors to external service domain even after modifying DNS record #36768

@fatedier

Description

@fatedier

Bug Description

There are already K8s services with port 80 and protocol HTTP.

Start a new test service written in golang and it will keep sending HTTP requests to xxx.com resolved to an error IP with no response.

Test service always gets 503 connection failure error because of 10s of connection timeout. Then resolve xxx.com to correct IP, I expect the test service can get 200 responses but not. It can't recover anymore.

However, it can be recovered if xxx.com is changed to xxx.com:8080 since the go client will get network errors like connection reset by peer instead of HTTP 503 code response. It can reconnect to a new correct IP.

istioctl proxy-config listeners shows there are 80 listeners and not for 8080.

0.0.0.0        80    Trans: raw_buffer; App: HTTP                                                                    Route: 80
0.0.0.0        80    ALL                                                                                             PassthroughCluster

For my scenario, there are many services that constantly call external services on port 80 with different hosts. Assume that one external service is down and DNS record is resolved to another IP, internal services will always get 503 HTTP response and can't recover anymore until restart itself(client using keepalive HTTP transport won't disconnect and create a new connection).

Without istio, internal service can recover after the DNS record is resolved to correct IP.

Version

Istio
client version: 1.12.1
control plane version: 1.12.1
data plane version: 1.12.1 (3 proxies)

K8s version 1.16.15

Additional Information

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    area/networkinglifecycle/automatically-closedIndicates a PR or issue that has been closed automatically.lifecycle/staleIndicates a PR or issue hasn't been manipulated by an Istio team member for a while

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions