1
0
Fork 0

Rename health check URL parameter to path.

Also improve documentation.
This commit is contained in:
Timo Reimann 2017-03-14 01:22:08 +01:00 committed by Emile Vauge
parent f324983946
commit a507cb4835
No known key found for this signature in database
GPG key ID: D808B4C167352E59
4 changed files with 39 additions and 33 deletions

View file

@ -240,16 +240,22 @@ For example:
sticky = true sticky = true
``` ```
Healthcheck URL can be configured with a relative URL for `healthcheck.URL`. A health check can be configured in order to remove a backend from LB rotation
Interval between healthcheck can be configured by using `healthcheck.interval` as long as it keeps returning HTTP status codes other than 200 OK to HTTP GET
(default: 30s) requests periodically carried out by Traefik. The check is defined by a path
appended to the backend URL and an interval (given in a format understood by [time.ParseDuration](https://golang.org/pkg/time/#ParseDuration)) specifying how
often the health check should be executed (the default being 30 seconds). Each
backend must respond to the health check within 5 seconds.
A recovering backend returning 200 OK responses again is being returned to the
LB rotation pool.
For example: For example:
```toml ```toml
[backends] [backends]
[backends.backend1] [backends.backend1]
[backends.backend1.healthcheck] [backends.backend1.healthcheck]
URL = "/health" path = "/health"
interval = "10s" interval = "10s"
``` ```

View file

@ -25,7 +25,7 @@ func GetHealthCheck() *HealthCheck {
// BackendHealthCheck HealthCheck configuration for a backend // BackendHealthCheck HealthCheck configuration for a backend
type BackendHealthCheck struct { type BackendHealthCheck struct {
URL string Path string
Interval time.Duration Interval time.Duration
DisabledURLs []*url.URL DisabledURLs []*url.URL
requestTimeout time.Duration requestTimeout time.Duration
@ -124,7 +124,7 @@ func checkHealth(serverURL *url.URL, backend *BackendHealthCheck) bool {
client := http.Client{ client := http.Client{
Timeout: backend.requestTimeout, Timeout: backend.requestTimeout,
} }
resp, err := client.Get(serverURL.String() + backend.URL) resp, err := client.Get(serverURL.String() + backend.Path)
if err == nil { if err == nil {
defer resp.Body.Close() defer resp.Body.Close()
} }

View file

@ -667,7 +667,7 @@ func (server *Server) loadConfig(configurations configs, globalConfiguration Glo
interval = time.Second * 30 interval = time.Second * 30
} }
} }
backendsHealthcheck[frontend.Backend] = healthcheck.NewBackendHealthCheck(configuration.Backends[frontend.Backend].HealthCheck.URL, interval, rebalancer) backendsHealthcheck[frontend.Backend] = healthcheck.NewBackendHealthCheck(configuration.Backends[frontend.Backend].HealthCheck.Path, interval, rebalancer)
} }
} }
case types.Wrr: case types.Wrr:
@ -701,7 +701,7 @@ func (server *Server) loadConfig(configurations configs, globalConfiguration Glo
interval = time.Second * 30 interval = time.Second * 30
} }
} }
backendsHealthcheck[frontend.Backend] = healthcheck.NewBackendHealthCheck(configuration.Backends[frontend.Backend].HealthCheck.URL, interval, rr) backendsHealthcheck[frontend.Backend] = healthcheck.NewBackendHealthCheck(configuration.Backends[frontend.Backend].HealthCheck.Path, interval, rr)
} }
} }
maxConns := configuration.Backends[frontend.Backend].MaxConn maxConns := configuration.Backends[frontend.Backend].MaxConn

View file

@ -39,7 +39,7 @@ type CircuitBreaker struct {
// HealthCheck holds HealthCheck configuration // HealthCheck holds HealthCheck configuration
type HealthCheck struct { type HealthCheck struct {
URL string `json:"url,omitempty"` Path string `json:"path,omitempty"`
Interval string `json:"interval,omitempty"` Interval string `json:"interval,omitempty"`
} }