nginx ingress controller EWMA負載均衡策略工作原理及修改過程

1、概念

 

EWMA(Exponentially Weighted Moving Average)策略是 NGINX Ingress Controller 中的一種負載均衡算法,它用於決定請求應該由後端服務的哪個實例處理。

 

2、工作原理

 

EWMA 策略通過指數加權移動平均的方式計算每個後端服務實例的權重,並根據權重來分配請求。

 

它的工作原理如下:

 

1. 初始化權重:當 NGINX Ingress Controller 啓動或配置發生更改時,會初始化每個後端服務實例的權重。初始權重通常爲相等值。

 

2. 請求分配:當收到一個請求時,NGINX Ingress Controller 使用 EWMA 策略來選擇一個後端服務實例來處理該請求。

 

3. 權重計算:NGINX Ingress Controller 使用 EWMA 策略根據每個後端服務實例的權重來進行請求分配。權重計算基於指數加權移動平均的算法,其中舊的權重值以指數衰減的方式影響新的權重值。

 

  - 每個後端服務實例的權重會根據其過去的響應時間進行調整如果一個實例的響應時間較長,說明它的負載較重,權重會相應降低。

 

  - 權重計算也考慮了實例的健康狀況。如果一個實例被標記爲不可用或不健康,它的權重會降低甚至爲零,從而不會再接收到請求。

 

4. 請求轉發:根據計算得到的權重,NGINX Ingress Controller 將請求轉發給具有較高權重的後端服務實例。權重較高的實例將處理更多的請求。

 

通過使用 EWMA 策略,NGINX Ingress Controller 可以根據後端服務實例的性能和健康狀況來動態地分配請求,從而實現負載均衡。

 

這樣,可以確保請求被均勻地分發給可用且響應時間較短的後端服務實例,提高系統的可用性和性能。

 

3、現實問題

 

服務後端有多個實例的場景。某幾個實例的負載比較高,其他的實例比較空閒。

 

導致負載不均衡。

 

在目前的nginx ingress controller中,沒有最小連接數的解決方案。所以,考慮通過ewma的方式,根據響應的時間來決定下一次的請求是分配哪個實例上。

 

換句話說,也可以理解根據實例負載的方式進行分發。

 

期望:負載在多個實例之間進行相對均衡。

 

4、修改方法

 

在nginx ingress controller中,通過如下的方法,修改爲EWMA的負載均衡策略。

 

修改nginx ingress controller configmap:

 

查找對應的configmap

[root@nccztsjb-node-02 ~]# kubectl get configmap -n ingress-nginx | grep ingress-nginx
ingress-nginx                 19     58d
ingress-nginx-logrotate       1      58d
ingress-nginx-logrotate-env   1      58d
[root@nccztsjb-node-02 ~]# 

 

 

修改configmap

kubectl edit cm -n ingress-nginx ingress-nginx

 

 

加入如下的配置:

load-balance: "ewma"
 

加到如下的位置:

 

esc -> :wq

保存,退出。

 

重啓ingress controller服務

[root@nccztsjb-node-02 ~]# kubectl get po -n ingress-nginx 
NAME                             READY   STATUS    RESTARTS   AGE
nginx-ingress-controller-qs5

 

kubectl delete po -n ingress-nginx nginx-ingress-controller-qs546
 

當pod是running的時候,表示服務已經啓動OK,可以對外提供服務。

 

[root@nccztsjb-node-02 ~]# kubectl get po -n ingress-nginx 
NAME                             READY   STATUS    RESTARTS   AGE
nginx-ingress-controller-99589   2/2     Running   0          23s
[root@nccztsjb-node-02 ~]# 

 

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