KONG 配置負載均衡

配置說明:

1.Service Object

2.Route Object

3.Consumer Object

4.Plugin Object

5.Upstream Object

6.Target Object

 

routes 是kong的路徑匹配規則,通過routes,kong知道這個請求應該轉發給哪個service;

service 通過host知道上游服務在哪裏,其path屬性是上游服務的路徑;

upstream是上游服務,僅有一個名字屬性;upstream 必須要配置health check ,要不,其中一個target掛掉了,kong依然把流量轉發過去;有health check 的話,kong會自動切換流量。

target 是上游服務對應的物理服務地址,負載均衡就放到這裏。

# upstreams
curl -i -X PATCH --url http://localhost:8001/upstreams --data 'name=tileserver' 
--data 'algorithm=round-robin' --data 'healthchecks.active.type=http' 
--data 'healthchecks.active.timeout=2' --data 'healthchecks.active.healthy.successes=2' 
--data 'healthchecks.active.healthy.interval=10' --data 'healthchecks.active.unhealthy.tcp_failures=1' 
--data 'healthchecks.active.unhealthy.timeouts=1' 
--data 'healthchecks.active.http_path=/data/pgis_poi/15/26692/14218.pbf' 
--data 'healthchecks.active.unhealthy.interval=3'

************
上面配置的是主動健康檢查,--data 'healthchecks.active.healthy.interval=10' 
代表10秒就發送一個請求,檢測一次,主動健康檢查佔用流量。


**************
Active health checks
Active health checks 就是主動探測他們的健康狀態。
當 upstream 實體啓用活動健康檢查時,Kong 將定期向 upstream 的每個 target 的配置路徑發出 HTTP 或 HTTPS 請求。
這允許 Kong 根據探測結果自動啓用和禁用 balancer 中的 target 。Active health checks 的週期性是可以被配置的,
當 target 是健康還是不健康。如果其中一個的interval值設置爲零,則在相應的場景中禁用檢查。如果兩者都爲零,則完全禁用活動健康檢查。

Passive health checks
Passive health checks 是否基於由 Kong 代理的請求(HTTP/HTTPS/TCP)執行檢查,而不生成額外的流量。
當 target 變得無響應時,被動健康檢查器將檢測到這一點,並將目標標記爲不健康。
Ring-balancer 將開始跳過這個 target ,因此不會有更多的流量被路由到它。
# target
curl -i -X POST --url http://localhost:8001/upstreams/tileserver/targets --data 'target=192.168.1.7:8083'


**************
targets 無法刪除,delete方法實際上是把它設置爲weight=0

**************
下面是更新語法

curl -i -X PATCH --url http://localhost:8001/upstreams/tileserver/targets/192.168.1.7:8083 
--data 'target=192.168.1.7:8083' --data 'weight=100'
curl -i -X PATCH --url http://localhost:8001/upstreams/tileserver/targets/192.168.1.7:8085 
--data 'target=192.168.1.7:8085' --data 'weight=100'
# services
curl -i -X PATCH --url http://localhost:8001/services/1/ --data 'name=1' 
--data 'protocol=http' --data 'host=tileserver' --data 'path=/data/1/'
curl -i -X PATCH --url http://localhost:8001/services/2/ --data 'name=2' 
--data 'protocol=http' --data 'host=tileserver' --data 'path=/data/2/'
curl -i -X PATCH --url http://localhost:8001/services/3/ --data 'name=3' 
--data 'protocol=http' --data 'host=tileserver' --data 'path=/data/3/'
curl -i -X PATCH --url http://localhost:8001/services/4/ --data 'name=4' 
--data 'protocol=http' --data 'host=tileserver' --data 'path=/data/4/'
curl -i -X PATCH --url http://localhost:8001/services/5/ --data 'name=5' 
--data 'protocol=http' --data 'host=tileserver' --data 'path=/data/5/'
# routes
curl -i -X PATCH --url http://localhost:8001/services/1/1/ --data 'name=1' 
--data 'protocols[]=http' --data 'paths[]=/data/1/' 
curl -i -X PATCH --url http://localhost:8001/services/2/2/ --data 'name=2' 
--data 'protocols[]=http' --data 'paths[]=/data/2/' 
curl -i -X PATCH --url http://localhost:8001/services/3/routes/3/ --data 'name=3' 
--data 'protocols[]=http' --data 'paths[]=/data/3/' 
curl -i -X PATCH --url http://localhost:8001/services/4/routes/4/ --data 'name=4' 
--data 'protocols[]=http' --data 'paths[]=/data/4/' 
curl -i -X PATCH --url http://localhost:8001/services/5/routes/5/ --data 'name=5' 
--data 'protocols[]=http' --data 'paths[]=/data/5/' 
# plugins
curl -i -X POST --url http://localhost:8001/services/1/plugins --data 'name=key-auth'
curl -i -X POST --url http://localhost:8001/services/2/plugins --data 'name=key-auth'
curl -i -X POST --url http://localhost:8001/services/3/plugins --data 'name=key-auth'
curl -i -X POST --url http://localhost:8001/services/4/plugins --data 'name=key-auth'
curl -i -X POST --url http://localhost:8001/services/5/plugins --data 'name=key-auth'
# consumers
curl -i -X POST --url http://localhost:8001/consumers --data 'username=agan' --data 'custom_id=001'
curl -i -X POST --url http://localhost:8001/consumers/agan/key-auth --data 'key=20200402'

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章