溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Istio 流量治理功能原理與實(shí)戰(zhàn)

發(fā)布時(shí)間:2020-06-10 10:01:58 來源:網(wǎng)絡(luò) 閱讀:639 作者:CCE華為云 欄目:云計(jì)算

一、負(fù)載均衡算法原理與實(shí)戰(zhàn)

負(fù)載均衡算法(load balancing algorithm),定義了幾種基本的流量分發(fā)方式,在Istio中共有4種標(biāo)準(zhǔn)負(fù)載均衡算法。

?Round_Robin: 輪詢算法,顧名思義請(qǐng)求將會(huì)依次發(fā)給每一個(gè)實(shí)例,來共同分擔(dān)所有的請(qǐng)求。

?Random: 隨機(jī)算法,將所有的請(qǐng)求隨機(jī)分發(fā)給健康的實(shí)例

?Least_Conn: 最小連接數(shù),在所有健康的實(shí)例中任選兩個(gè),將請(qǐng)求發(fā)給連接數(shù)較小的那一個(gè)實(shí)例。

接下來,我們將根據(jù)以上幾個(gè)算法結(jié)合APM(應(yīng)用性能管理)的監(jiān)控拓?fù)鋱D來實(shí)戰(zhàn)下。

·實(shí)戰(zhàn)環(huán)境·

華為云開啟了Istio服務(wù)網(wǎng)格的CCE集群

官方最佳時(shí)間Bookinfo應(yīng)用,并且給Reviews配置了五個(gè)實(shí)例

開通APM測(cè)試服務(wù)(免費(fèi))

我們知道如果用戶不進(jìn)行任何配置,負(fù)載均衡算法默認(rèn)是輪詢算法,所以我們現(xiàn)將負(fù)載均衡算法設(shè)為隨機(jī)(Random)。

步驟 1
在云容器引擎界面點(diǎn)擊應(yīng)用管理,選擇流量治理。

步驟 2
右側(cè)出現(xiàn)拓?fù)鋱D,在上面的選項(xiàng)欄中選擇集群,命名空間,應(yīng)用。然后點(diǎn)擊我們想配置的組件,這里是 reviews,右側(cè)則會(huì)出現(xiàn)流量治理的界面。

步驟 3
在負(fù)載均衡算法中,由Round_Robin 改為random。

步驟 4
在左側(cè)導(dǎo)航欄中選擇流量治理下面的流量監(jiān)控,再選擇相應(yīng)的集群,命名空間,應(yīng)用。多訪問幾次,或者后臺(tái)寫腳本一直curl productpage,可以從拓?fù)鋱D中觀察數(shù)據(jù)。

步驟 5
當(dāng)有流量時(shí),鼠標(biāo)右鍵點(diǎn)擊reviews組件,選擇展開選項(xiàng)這時(shí)我們可以看到所有實(shí)例的被分發(fā)情況。

實(shí)例編號(hào) 1 2 3 4 5
訪問次數(shù) 62 38 39 42 52
其余負(fù)載均衡算法基本一樣,我們?cè)诓襟E上不做贅述,直接展示結(jié)果。
輪詢算法:

實(shí)例編號(hào) 1 2 3 4 5
訪問次數(shù) 47 47 48 46 47

二、會(huì)話保持原理與實(shí)戰(zhàn)

會(huì)話保持(Session Affinity)是通過設(shè)定的某個(gè)指標(biāo)來計(jì)算,將哈希值相同的請(qǐng)求分發(fā)至某個(gè)固定的實(shí)例來處理?,F(xiàn)在支持基于HTTP頭部設(shè)定指標(biāo)和Cookie鍵值設(shè)定指標(biāo)。

我們當(dāng)前還在輪詢算法中,所以所有請(qǐng)求會(huì)均勻的分配給所有實(shí)例,設(shè)置會(huì)話保持基于HTTP請(qǐng)求頭部,并且設(shè)為Cookie。我們后臺(tái)curl的請(qǐng)求cookie設(shè)為了一個(gè)固定值,理論上來講所有的請(qǐng)求都會(huì)分發(fā)至同一個(gè)pod。

我們依然采用流量監(jiān)控,展開reviews組件來觀察分發(fā)情況。

所有的請(qǐng)求都分發(fā)至了第二個(gè)實(shí)例,因?yàn)閏ookie一致所以保持了這個(gè)會(huì)話鏈接。

三、故障注入原理與實(shí)戰(zhàn)

故障注入(Fault Injection)為開發(fā)和測(cè)試人員主動(dòng)向系統(tǒng)中引入故障,來觀察系統(tǒng)在非正常狀態(tài)下的行為,是一種可靠性,穩(wěn)定性的驗(yàn)證手段。Istio也支持了非侵入式的注入故障,分為時(shí)延故障和中斷故障。

故障注入的步驟大致相同在流量治理頁面的下方,選擇時(shí)延故障,并且輸入觸發(fā)百分比和延時(shí)時(shí)間。然后再打開productpage 手動(dòng)刷新幾次,能明顯感覺到延遲有了變化,當(dāng)然也可以打開F12調(diào)試界面,觀察網(wǎng)絡(luò)請(qǐng)求狀況,不難發(fā)現(xiàn)productpage請(qǐng)求耗時(shí)都在2秒上下。

這時(shí)候我們打開流量監(jiān)控界面觀察下發(fā)現(xiàn)productpage與reviews受到了明顯的影響。紅色表示請(qǐng)求狀態(tài)極差,虛線表示是由時(shí)延造成的。

接下來我們來測(cè)試并且使用中斷故障,我們對(duì)details配置中斷故障,中斷返回碼設(shè)為501。

配置完后,我們?cè)偃ナ謩?dòng)訪問幾次productpage來觀察下結(jié)果。

發(fā)現(xiàn)現(xiàn)在的右側(cè)details已經(jīng)報(bào)了error

我們回到流量監(jiān)控圖,可以看到組件之間的訪問情況。在給ratings配置了中斷故障后,原本調(diào)用ratings組件的reviews組件,已經(jīng)無法和ratings通信了。

本文以華為云istio服務(wù)結(jié)合APM服務(wù)為大家演示了流量治理中的主要功能。希望大家在今后的開發(fā)和測(cè)試中可以利用istio靈活的非侵入的治理功能提高開發(fā)和測(cè)試的效率。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI