diff --git a/envoy/admin/v3/clusters.proto b/envoy/admin/v3/clusters.proto index 8eeaec20..7a5e83c9 100644 --- a/envoy/admin/v3/clusters.proto +++ b/envoy/admin/v3/clusters.proto @@ -139,7 +139,7 @@ message HostStatus { } // Health status for a host. -// [#next-free-field: 7] +// [#next-free-field: 9] message HostHealthStatus { option (udpa.annotations.versioning).previous_message_type = "envoy.admin.v2alpha.HostHealthStatus"; @@ -160,6 +160,13 @@ message HostHealthStatus { // The host has not yet been health checked. bool pending_active_hc = 6; + // The host should be excluded from panic, spillover, etc. calculations because it was explicitly + // taken out of rotation via protocol signal and is not meant to be routed to. + bool excluded_via_immediate_hc_fail = 7; + + // The host failed active HC due to timeout. + bool active_hc_timeout = 8; + // Health status as reported by EDS. Note: only HEALTHY and UNHEALTHY are currently supported // here. // [#comment:TODO(mrice32): pipe through remaining EDS health status possibilities.] diff --git a/envoy/admin/v4alpha/clusters.proto b/envoy/admin/v4alpha/clusters.proto index 10d92097..cc452557 100644 --- a/envoy/admin/v4alpha/clusters.proto +++ b/envoy/admin/v4alpha/clusters.proto @@ -139,7 +139,7 @@ message HostStatus { } // Health status for a host. -// [#next-free-field: 7] +// [#next-free-field: 9] message HostHealthStatus { option (udpa.annotations.versioning).previous_message_type = "envoy.admin.v3.HostHealthStatus"; @@ -159,6 +159,13 @@ message HostHealthStatus { // The host has not yet been health checked. bool pending_active_hc = 6; + // The host should be excluded from panic, spillover, etc. calculations because it was explicitly + // taken out of rotation via protocol signal and is not meant to be routed to. + bool excluded_via_immediate_hc_fail = 7; + + // The host failed active HC due to timeout. + bool active_hc_timeout = 8; + // Health status as reported by EDS. Note: only HEALTHY and UNHEALTHY are currently supported // here. // [#comment:TODO(mrice32): pipe through remaining EDS health status possibilities.] diff --git a/envoy/config/cluster/v3/cluster.proto b/envoy/config/cluster/v3/cluster.proto index 90cd990a..9ef32799 100644 --- a/envoy/config/cluster/v3/cluster.proto +++ b/envoy/config/cluster/v3/cluster.proto @@ -536,25 +536,9 @@ message Cluster { // https://github.com/envoyproxy/envoy/pull/3941. google.protobuf.Duration update_merge_window = 4; - // If set to true, Envoy will not consider new hosts when computing load balancing weights until - // they have been health checked for the first time. This will have no effect unless - // active health checking is also configured. - // - // Ignoring a host means that for any load balancing calculations that adjust weights based - // on the ratio of eligible hosts and total hosts (priority spillover, locality weighting and - // panic mode) Envoy will exclude these hosts in the denominator. - // - // For example, with hosts in two priorities P0 and P1, where P0 looks like - // {healthy, unhealthy (new), unhealthy (new)} - // and where P1 looks like - // {healthy, healthy} - // all traffic will still hit P0, as 1 / (3 - 2) = 1. - // - // Enabling this will allow scaling up the number of hosts for a given cluster without entering - // panic mode or triggering priority spillover, assuming the hosts pass the first health check. - // - // If panic mode is triggered, new hosts are still eligible for traffic; they simply do not - // contribute to the calculation when deciding whether panic mode is enabled or not. + // If set to true, Envoy will :ref:`exclude ` new hosts + // when computing load balancing weights until they have been health checked for the first time. + // This will have no effect unless active health checking is also configured. bool ignore_new_hosts_until_first_hc = 5; // If set to `true`, the cluster manager will drain all existing diff --git a/envoy/config/cluster/v4alpha/cluster.proto b/envoy/config/cluster/v4alpha/cluster.proto index 2d8aa436..0b1fd62b 100644 --- a/envoy/config/cluster/v4alpha/cluster.proto +++ b/envoy/config/cluster/v4alpha/cluster.proto @@ -540,25 +540,9 @@ message Cluster { // https://github.com/envoyproxy/envoy/pull/3941. google.protobuf.Duration update_merge_window = 4; - // If set to true, Envoy will not consider new hosts when computing load balancing weights until - // they have been health checked for the first time. This will have no effect unless - // active health checking is also configured. - // - // Ignoring a host means that for any load balancing calculations that adjust weights based - // on the ratio of eligible hosts and total hosts (priority spillover, locality weighting and - // panic mode) Envoy will exclude these hosts in the denominator. - // - // For example, with hosts in two priorities P0 and P1, where P0 looks like - // {healthy, unhealthy (new), unhealthy (new)} - // and where P1 looks like - // {healthy, healthy} - // all traffic will still hit P0, as 1 / (3 - 2) = 1. - // - // Enabling this will allow scaling up the number of hosts for a given cluster without entering - // panic mode or triggering priority spillover, assuming the hosts pass the first health check. - // - // If panic mode is triggered, new hosts are still eligible for traffic; they simply do not - // contribute to the calculation when deciding whether panic mode is enabled or not. + // If set to true, Envoy will :ref:`exclude ` new hosts + // when computing load balancing weights until they have been health checked for the first time. + // This will have no effect unless active health checking is also configured. bool ignore_new_hosts_until_first_hc = 5; // If set to `true`, the cluster manager will drain all existing diff --git a/envoy/data/core/v3/health_check_event.proto b/envoy/data/core/v3/health_check_event.proto index 2b0f9d88..66624938 100644 --- a/envoy/data/core/v3/health_check_event.proto +++ b/envoy/data/core/v3/health_check_event.proto @@ -22,6 +22,7 @@ enum HealthCheckFailureType { ACTIVE = 0; PASSIVE = 1; NETWORK = 2; + NETWORK_TIMEOUT = 3; } enum HealthCheckerType {