介紹
upstream 就是一個虛擬的服務。可用於配置多個target目標服務時實現負載均衡的效果。
注意:service的host指的就是upstream的name。
同時upstream提供了一個health check方法,用於檢查target目標服務是否健康。以此控制啟用或禁用target目標服務
和upstream關聯的kong模塊:service ,target
主要參數:algorithm 負載算法:round-robin(默認), consistent-hashing
, or least-connections
healthchecks.active.http_path 健康檢查路徑:默認/,該地址是指在目標服務器上,適用於目標服務器的所有請求
命令
1、add upstream
方法 post
api:/upstreams
2,list upstream ,retrieve upstream
方法:get
api:/upstreams
/upstreams/upstream id or name
/targets/{target host:port or id}/upstream 關聯指定target目標服務的upstream
3,update upstream
方法:patch
api:/upstreams/{upstream name or id}
/targets/{target host:port or id}/upstream
4,create or update upstream
方法:put
api:/upstreams/{upstream name or id}
/targets/{target host:port or id}/upstream
5,delete
方法:delete
api:/upstreams/{upstream name or id}
/targets/{target host:port or id}/upstream
健康檢查 health check
kong會發起對配置在upstream上的所有target進行健康檢查,若檢查失敗,將會暫時移除不健康的target服務。
恢復之后會再次加入。具體參數可在upstream參數中配置。
檢查結果主要為一下四大類(官網介紹)
- If a Target fails to be activated in the balancer due to DNS issues, its status displays as
DNS_ERROR
. - When health checks are not enabled in the Upstream configuration, the health status for active Targets is displayed as
HEALTHCHECKS_OFF
. - When health checks are enabled and the Target is determined to be healthy, either automatically or manually, its status is displayed as
HEALTHY
. This means that this Target is currently included in this Upstream’s load balancer execution. - When a Target has been disabled by either active or passive health checks (circuit breakers) or manually, its status is displayed as
UNHEALTHY
. The load balancer is not directing any traffic to this Target via this Upstream.
上述HEALTHY 、HEALTHCHECKS_OFF情況,target目標可以被轉發請求,其他兩類不被負載轉發。
查看:get方法。api:/upstreams/{name or id}/health/
人生在世,雜事七八;飯要少吃,事要多知;抽個時間,總結一下;樂在分享,自在提升