QAT加速器裝置可以提升系統的加密處理能力,適用於高效能加解密能力的業務應用,例如Web伺服器、資料庫和其他需要大量安全通訊的服務,在確保資料安全的同時,減輕CPU的負擔,提升整體系統效能。 您可以在ACK託管叢集Pro版中部署ack-qat-deviceplugin組件,以便使用阿里雲第八代Intel Sapphire Rapids神龍節點上的QAT裝置為業務應用中的加解密、壓縮解壓縮等操作提速。
相關概念
Intel QuickAssist Technology(QAT)
英特爾® QAT是英特爾® 至強® 可擴充處理器上整合的工作負載加速器,可從CPU核心分擔關鍵的資料壓縮和解壓縮、加密和解密以及公開金鑰資料加密任務,並加速這些操作,從而協助提高CPU效能和效率,減少資料佔用空間。更多資訊,請參見intel官方文檔。
ack-qat-deviceplugin組件
ack-qat-deviceplugin組件基於龍蜥社區開源intel-accel-plugin-qat開發,便於您在ACK託管叢集Pro版中使用QAT,它可以將阿里雲第八代Intel Sapphire Rapids神龍節點上的QAT裝置,通過Kubernetes的Device Plugin機制,將QAT裝置作為特定資源按需分配給叢集中啟動並執行Nginx、Envoy等業務應用,加速加解密、壓縮解壓縮等操作並節省計算資源。
使用限制
執行個體規格:ecs.ebmg8i和ecs.ebmc8i系列裸金屬執行個體,本文以ecs.ebmg8i.48xlarge為例介紹。
說明ecs.ebmg8i和ecs.ebmc8i系列裸金屬執行個體僅在部分地區可購買使用,可售地區與庫存情況請查詢ECS執行個體規格可購買地區總覽。
作業系統:Alibaba Cloud Linux 3.2104 LTS 64位。
如果您已經在叢集中部署了其他QAT裝置的Device Plugin應用,請先將其卸載以免衝突。
前提條件
步驟一:配置節點加入指令碼
首次使用QAT裝置之前,您需要先使用以下指令碼更新核心參數並重啟節點。
為避免重複配置,建議您為ecs.ebmg8i和ecs.ebmc8i系列的執行個體建立專用節點池,並將以下指令碼內容配置到專用節點池的執行個體自訂資料中,請勿在執行個體預自訂資料中配置,否則,會導致節點加入失敗。更多資訊,請參見建立和管理節點池。
yum install kernel-0:5.10.134-16.1.al8.x86_64 -y
if [ $? -ne 0 ];then
echo "Error: yum update failed"
fi
yum install kernel-modules -y
if [ $? -ne 0 ];then
echo "Error: yum install kernel-modules failed"
fi
kernel_path=$(grubby --default-kernel)
kernel_args="intel_iommu=on iommu=pt"
grubby --update-kernel=$kernel_path --args=$kernel_args
reboot -f步驟二:通過Helm部署ack-qat-deviceplugin
執行以下命令,安裝ack-qat-deviceplugin。
helm install ack-qat-deviceplugin https://aliacs-app-catalog.oss-cn-hangzhou.aliyuncs.com/pre/charts-incubator/ack-qat-deviceplugin-0.1.2.tgz \ --set regionId="cn-beijing" \ --set setup.vf_per_pf="16" \ --set setup.enabled_mode="asym;dc"參數
是否可選
說明
預設值
regionId
可選
叢集所在地區,配置後使用內網鏡像。
無
setup.vf_per_pf
可選
每個PF可擴充出VF的數量,即硬體物理裝置上可擴充的虛擬化空間數量。取值:0~16。
16
setup.enabled_mode
可選
QAT裝置支援
sym、asym、dc三種驅動。更多驅動資訊,請參見sysfs-driver-qat。sym:用於加速對稱加解密。asym:用於加速非對稱加解密。dc:用於加速壓縮解壓縮。
最多可選擇支援2種驅動,驅動之間用英文半形分號(;)分隔。例如
aymc;dc表示用於加速非對稱加解密與壓縮解壓縮。asym;dc
執行以下命令,為需要部署ack-qat-deviceplugin的節點打上預設的Label。
kubectl label node cn-beijing.172.17.XX.XX "alibabacloud.com/type"="ebmg8i"組件安裝完後,等待幾分鐘,確認組件Pod狀態正常,即叢集的
kube-system下的ack-qat-deviceplugin狀態變為running後,執行以下命令查詢節點的可用VF資源。kubectl get nodes -o go-template='{{range .items}}{{.metadata.name}}{{"\n"}}{{range $k,$v:=.status.allocatable}}{{" "}}{{$k}}{{": "}}{{$v}}{{"\n"}}{{end}}{{end}}'預期輸出:
cn-beijing.172.17.XX.XX cpu: 189280m ephemeral-storage: 113783349470 hugepages-1Gi: 0 hugepages-2Mi: 0 memory: 1027672932Ki pods: 2133 qat.intel.com/cy2_dc2: 32預期輸出中
qat.intel.com/cy2_dc2: 32表示資源的數量為32,對於ecs.ebmg8i.48xlarge執行個體節點,應包含setup.vf_per_pf×2的資源數量,本例中setup.vf_per_pf預設值為16.qat.intel.com/cy{}_dc{}資源指1個QAT裝置包括的加解密(cy)與壓縮解壓縮(dc)的工作隊列數量。對於ecs.ebmg8i.48xlarge執行個體節點,1個QAT裝置包含2個加解密工作隊列,2個壓縮解壓縮工作隊列。
步驟三:部署應用並分配QAT裝置資源
本節以intel官方的boringSSL+Envoy demo為例,介紹如何使用QAT裝置為業務應用的TLS加解密提速。其中,BoringSSL為開源的安全加密庫;Envoy為通用的雲原生網關,用於支援微服務架構下服務間的通訊。
使用以下命令,建立認證並使用認證建立Secret。
openssl req -x509 -new -batch -nodes -subj '/CN=localhost' -keyout key.pem -out cert.pem kubectl create secret tls envoy-tls-secret --cert cert.pem --key key.pem參考以下樣本,以ConfigMap的方式建立Envoy設定檔,其中,Envoy需要開啟private_key_providers特性。
部署Envoy應用及服務,將上述Secret與ConfigMap作為Volumes配置到應用中。
Envoy鏡像需要使用支援Intel QAT裝置加速TLS、GZIP等功能的龍蜥社區envoy-accel鏡像。
其中單進程Envoy需要1個加解密和1個壓縮解壓縮裝置,因此設定
qat.intel.com/cy2_dc2資源的limit為1。驗證QAT裝置已完成加密解密操作。
使用以下命令,記錄訪問前QAT裝置的使用計數。
#登入Envoy部署節點。 cat /sys/kernel/debug/qat_4xxx_0000\:e8\:00.0/fw_counters預期輸出:
使用以下命令,通過認證訪問服務。
#Client端,即建立Secret時所在的機器上執行。 kubectl port-forward svc/helloenvoy 32296:9000 curl --cacert cert.pem https://localhost:32296 -v預期輸出:
使用以下命令,記錄訪問後QAT裝置的使用計數。
#登入Envoy部署節點。 cat /sys/kernel/debug/qat_4xxx_0000\:e8\:00.0/fw_counters預期輸出:
預期輸出表明,QAT使用計數已增加。