pub struct HttpHealthCheck {
pub consecutive_success: usize,
pub consecutive_failure: usize,
pub peer_template: HttpPeer,
pub reuse_connection: bool,
pub req: RequestHeader,
pub validator: Option<Box<dyn Fn(&ResponseHeader) -> Result<()> + Send + Sync>>,
pub port_override: Option<u16>,
pub health_changed_callback: Option<HealthObserveCallback>,
/* private fields */
}
Expand description
HTTP health check
This health check checks if it can receive the expected HTTP(s) response from the given backend.
Fields§
§consecutive_success: usize
Number of successful checks to flip from unhealthy to healthy.
consecutive_failure: usize
Number of failed checks to flip from healthy to unhealthy.
peer_template: HttpPeer
How to connect to the backend.
This field defines settings like the connect timeout and src IP to bind.
The SocketAddr of peer_template
is just a placeholder which will be replaced by the
actual address of the backend when the health check runs.
Set the scheme
field to use HTTPs.
reuse_connection: bool
Whether the underlying TCP/TLS connection can be reused across checks.
false
will make sure that every health check goes through TCP (and TLS) handshakes. Established connections sometimes hide the issue of firewalls and L4 LB.true
will try to reuse connections across checks, this is the more efficient and fast way to perform health checks.
req: RequestHeader
The request header to send to the backend
validator: Option<Box<dyn Fn(&ResponseHeader) -> Result<()> + Send + Sync>>
Optional field to define how to validate the response from the server.
If not set, any response with a 200 OK
is considered a successful check.
port_override: Option<u16>
Sometimes the health check endpoint lives one a different port than the actual backend. Setting this option allows the health check to perform on the given port of the backend IP.
health_changed_callback: Option<HealthObserveCallback>
A callback that is invoked when the healthy
status changes for a Backend.
Implementations§
Source§impl HttpHealthCheck
impl HttpHealthCheck
Sourcepub fn new(host: &str, tls: bool) -> Self
pub fn new(host: &str, tls: bool) -> Self
Create a new HttpHealthCheck with the following default settings
- connect timeout: 1 second
- read timeout: 1 second
- req: a GET to the
/
of the given host name - consecutive_success: 1
- consecutive_failure: 1
- reuse_connection: false
- validator:
None
, any 200 response is considered successful
Sourcepub fn set_connector(&mut self, connector: HttpConnector)
pub fn set_connector(&mut self, connector: HttpConnector)
Replace the internal http connector with the given HttpConnector