Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Partial Failure policy that routes affinitized requests to existing backends #2335

Closed
wasabii opened this issue Nov 21, 2023 · 4 comments
Closed
Labels
Type: Idea This issue is a high-level idea for discussion.

Comments

@wasabii
Copy link

wasabii commented Nov 21, 2023

It is a pretty common requirement (at least in my parts) to have stateful services using session affinity, where a partial failure mode of a node does not effect how affinitized requests are routed, until the service is fully failed.

For instance, imagine Blazor Server. You want affinitized connections. You want zero down time deployments. To do this requires that you stop routing new sessions to old node versions, but continue routing requests from existing sessions to nodes which are "shutting down". Until such time as the node detects it has no more active connections (either due to the users disconnecting, or timing out).

In IIS/ARR this was pretty easy: https://learn.microsoft.com/en-us/iis/extensions/configuring-application-request-routing-arr/http-load-balancing-using-application-request-routing#step-4---disallow-new-connections

Disallowing new connections on a server is a graceful way of taking the server out of the server farm environment. It is more meaningful when the client affinity feature is in use, because Application Request Routing will honor the existing sessions when disallowing new connections. That is, when a client is affinitized to the server that is disallowing new connections, the client will continue to be routed to the same server and, therefore, there is no impact on the client. However, no new clients will be routed to the server that is disallowing new connections.

It looks to me though that this requires maintaining more than Health/Unhealthy for a node though. But also a Disallow status of some kind.

@wasabii wasabii added the Type: Idea This issue is a high-level idea for discussion. label Nov 21, 2023
@Tratcher
Copy link
Member

This is similar to #2071 (Degraded health)

@wasabii
Copy link
Author

wasabii commented Nov 21, 2023

True. I had not noticed that one. It does not however mention affinity, which it should.

@karelz
Copy link
Member

karelz commented Nov 28, 2023

Affinity comment added to the issue #2071. Thanks!

@karelz
Copy link
Member

karelz commented Nov 28, 2023

Duplicate of #2071

@karelz karelz marked this as a duplicate of #2071 Nov 28, 2023
@karelz karelz closed this as not planned Won't fix, can't repro, duplicate, stale Nov 28, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Type: Idea This issue is a high-level idea for discussion.
Projects
None yet
Development

No branches or pull requests

3 participants