在大規模微服務場景下,當您需要快速高效地處理大量并發HTTPS請求時,可以啟用Multi-Buffer加速Envoy代理對TLS(Transport Layer Security)的處理,提升數據包的加解密速度,減少網絡延遲,提升整個系統的并發處理能力和通信安全性。
前提條件
已創建ASM商業版(企業版或者旗艦版)實例,且實例為1.10及以上版本。具體操作,請參見創建ASM實例。
已創建ACK集群,且集群節點的實例規格族需要支持Multi-Buffer CPU機型Intel Ice Lake。具體操作,請參見創建Kubernetes托管版集群。
關于實例規格的詳細介紹,請參見實例規格族。
規格族系列
實例規格族
g7系列
存儲增強通用型實例規格族g7se
通用型實例規格族g7
安全增強通用型實例規格族g7t
c7系列
計算型實例規格族c7
RDMA增強型實例規格族c7re
存儲增強計算型實例規格族c7se
安全增強計算型實例規格族c7t
r7系列
內存型實例規格族r7p
存儲增強內存型實例規格族r7se
內存型實例規格族r7
安全增強內存型實例規格族r7t
其他
內存增強型實例規格族re7p
GPU虛擬化型實例規格族vgn7i-vws
GPU計算型實例規格族gn7i
GPU計算型彈性裸金屬服務器實例規格族ebmgn7i
計算型超級計算集群實例規格族sccc7
通用型超級計算集群實例規格族sccg7
已添加集群到ASM實例。具體操作,請參見添加集群到ASM實例。
背景信息
隨著網絡安全技術的發展,TLS已經成為網絡通信的基石。一個TLS會話的處理過程總體上可分為握手階段和數據傳輸階段。握手階段最重要的任務是使用非對稱加密技術協商出一個會話密鑰,然后在數據傳輸階段,使用該會話密鑰對數據執行對稱加密操作,再進行數據傳輸。
在微服務場景下,Envoy無論是作為Ingress Gateway還是作為微服務的代理,都需要處理大量的TLS請求,尤其在握手階段執行非對稱加解密的操作時,需要消耗大量的CPU資源,在大規模微服務場景下這可能會成為一個瓶頸。ASM結合Intel的Multi-Buffer加解密技術,可以加速Envoy中TLS的處理過程。
Multi-Buffer加解密技術使用Intel CPU AVX-512指令同時處理多個獨立的緩沖區,即可以在一個執行周期內同時執行多個加解密的操作,成倍的提升加解密的執行效率。Multi-Buffer技術不需要額外的硬件,只需要CPU包含特定的指令集。目前阿里云在Ice Lake處理器中已經包含了最新的AVX-512指令集。
操作步驟
方式一:全局開啟
登錄ASM控制臺,在左側導航欄,選擇 。
在網格管理頁面,單擊目標實例名稱,然后在左側導航欄,選擇 。
在基本信息頁面右側,單擊功能設置。
在功能設置更新面板,選中啟用基于MultiBuffer的TLS加解密性能優化,然后單擊確定。
如果您使用通用型實例規格族g7作為Kubernertes節點,啟用Multi-Buffer功能后,每秒查詢率(QPS)將提升75%的性能;如果您使用的是彈性裸金屬節點,提升的性能將更高。
方式二:網關實例級別開啟
未創建ASM網關
登錄ASM控制臺,在左側導航欄,選擇 。
在網格管理頁面,單擊目標實例名稱,然后在左側導航欄,選擇 。
在入口網關頁面,單擊創建,在創建頁面的高級選項區域,選中啟用基于MultiBuffer的TLS加解密性能優化,進行相關配置,然后單擊創建。
關于配置項的詳細說明,請參見創建入口網關。
配置項
說明
支持的節點親和性標簽選擇
根據節點標簽匹配性能優化的節點。
輪詢延時(毫秒)
該配置項通常不需要您手動調整。
Multibuffer的原理是同時處理多個加解密操作。例如Multibuffer可以同時處理8個加解密操作,若請求數量不足8個,則會等待一段時間,直到請求達到8個才會進行處理。如果請求量比較大,很快就能滿足8個的處理條件;如果請求量比較小,可能很長時間都滿足不了8個的處理條件。此時如果您指定了輪詢延遲,當超過這個時間時,即使沒有滿足8個的處理條件,Multibuffer也會批量對已經有的請求進行加解密,減少等待時間。
已創建ASM網關
登錄ASM控制臺,在左側導航欄,選擇 。
在網格管理頁面,單擊目標實例名稱,然后在左側導航欄,選擇 。
在入口網關頁面,單擊目標網關名稱,在
頁面的高級選項區域,單擊性能優化右側的圖標,選中啟用基于MultiBuffer的TLS加解密性能優化,進行相關配置,然后單擊確認。關于配置項的詳細說明,請參見創建入口網關。
配置項
說明
支持的節點親和性標簽選擇
根據節點標簽匹配性能優化的節點。
輪詢延時(毫秒)
該配置項通常不需要您手動調整。
Multibuffer的原理是同時處理多個加解密操作。例如Multibuffer可以同時處理8個加解密操作,若請求數量不足8個,則會等待一段時間,直到請求達到8個才會進行處理。如果請求量比較大,很快就能滿足8個的處理條件;如果請求量比較小,可能很長時間都滿足不了8個的處理條件。此時如果您指定了輪詢延遲,當超過這個時間時,即使沒有滿足8個的處理條件,Multibuffer也會批量對已經有的請求進行加解密,減少等待時間。
方式三:Pod級別開啟
使用該方式需要ASM為1.14.3及以上版本。關于升級實例的具體操作,請參見升級ASM實例。
確保Pod會被調度到支持Multi-Buffer的節點上。
為Pod配置一個特殊的annotations。
annotations示例如下:
proxy.istio.io/config: | privateKeyProvider: cryptomb: pollDelay: 10ms
重啟Pod使配置生效。
FAQ
控制面啟用了MultiBuffer功能,但數據面Kubernetes集群下的節點不是Intel Ice Lake的機型,有什么影響?
Envoy會輸出告警日志,且MultiBuffer功能將不會生效。
ASM 1.10及以上的企業版或旗艦版提供了開啟TLS加速時的自適應判斷能力,若業務或者網關Pod被調度到的Node節點為非Intel Ice Lake機型,則不會下發對應的加速配置,TLS加速不會生效。
如何添加支持MultiBuffer的節點到集群中,并啟用MultiBuffer?
在Kubernetes集群添加新的節點,且節點的實例規格需要支持Multi-Buffer CPU機型Intel Ice Lake。具體操作,請參見添加已有節點。
在新添加的節點上設置
multibuffer-support:true
標簽。具體操作,請參見管理節點標簽。在ASM網關的YAML配置中添加以下內容。具體操作,請參見ASM網關CRD說明。
通過增加節點親和性,使Gateway實例調度到新添加的支持Multi-Buffer功能的節點上。
affinity: nodeAffinity: preferredDuringSchedulingIgnoredDuringExecution: - preference: matchExpressions: - key: feature.node.kubernetes.io/mb-feature-enabled operator: In values: - 'true' weight: 1
在ASM企業版或旗艦版實例中啟用MultiBuffer功能。具體操作,請參見上文啟用MultiBuffer。
啟用MultiBuffer功能后,該集群新添加的節點即可使用MultiBuffer功能,加速TLS處理過程。
相關文檔
ASM提供了服務發現范圍配置、Sidecar資源推薦和自適應配置推送優化功能,幫助您優化控制平面的配置推送效率與Sidecar的配置大小。更多信息,請參見配置推送優化概述。