AWS FSX ONTAP 中的效能概觀與驗證
NetApp NFS 上安裝儲存層的 Kafka 叢集、是 AWS FSX ONTAP 中效能的基準測試。基準測試範例將於下列各節中說明。
AWS FSX ONTAP 中的 Apache Kafka
網路檔案系統( NFS )是廣泛使用的網路檔案系統、用於儲存大量資料。在大多數組織中、像 Apache Kafka 這樣的串流應用程式越來越多地產生資料。這些工作負載需要擴充性、低延遲、以及具備現代化儲存功能的健全資料擷取架構。為了實現即時分析並提供可據以行動的洞見、需要設計完善且效能優異的基礎架構。
Kafka by 的設計可搭配 POSIX 相容的檔案系統使用、並仰賴檔案系統來處理檔案作業、但在 NFSv3 檔案系統上儲存資料時、 Kafka Broker NFS 用戶端可以與本地檔案系統(例如 XFS 或 ext4 )不同地解譯檔案作業。常見的例子是 NFS 愚蠢重新命名、導致 Kafka Brokers 在擴充叢集和重新分配分割區時失敗。為了因應這項挑戰、 NetApp 已更新開放原始碼 Linux NFS 用戶端、現在已在 RHEL8.7 、 RHEL9.1 中普遍提供變更、並從目前的 FSX ONTAP 版本 ONTAP 9 12.1. 中獲得支援。
Amazon FSX ONTAP 可在雲端中提供完全託管、可擴充且高效能的 NFS 檔案系統。FSX ONTAP 上的 Kafka 資料可擴充以處理大量資料、並確保容錯能力。NFS 可為重要且敏感的資料集提供集中化的儲存管理與資料保護。
這些增強功能可讓 AWS 客戶在 AWS 運算服務上執行 Kafka 工作負載時、善用 FSX ONTAP 。這些優點包括: * 降低 CPU 使用率以縮短 I/O 等待時間 * 加快 Kafka 代理程式恢復時間。* 可靠性與效率。* 擴充性與效能。* 多可用性區域可用度。* 資料保護。
AWS FSX ONTAP 中的效能概觀與驗證
安裝在NetApp NFS上的儲存層Kafka叢集、是以AWS雲端效能為基準。基準測試範例將於下列各節中說明。
AWS FSX ONTAP 中的 Kafka
採用 AWS FSX ONTAP 的 Kafka 叢集、在 AWS 雲端中以效能為基準。以下各節將說明此基準測試。
架構設定
下表顯示使用 AWS FSX ONTAP 的 Kafka 叢集環境組態。
平台元件 | 環境組態 |
---|---|
Kafka 3.2.3 |
|
所有節點上的作業系統 |
RHEL8.6. |
AWS FSX ONTAP 功能 |
具有 4GB/ 秒處理量和 160000 IOPS 的多 AZ |
NetApp FSX ONTAP 設定
-
在我們的初始測試中、我們建立了 FSX ONTAP 檔案系統、容量為 2TB 、傳輸量為每秒 2GB 、 IOP 為 40000 個。
[root@ip-172-31-33-69 ~]# aws fsx create-file-system --region us-east-2 --storage-capacity 2048 --subnet-ids <desired subnet 1> subnet-<desired subnet 2> --file-system-type ONTAP --ontap-configuration DeploymentType=MULTI_AZ_HA_1,ThroughputCapacity=2048,PreferredSubnetId=<desired primary subnet>,FsxAdminPassword=<new password>,DiskIopsConfiguration="{Mode=USER_PROVISIONED,Iops=40000"}
在我們的範例中、我們透過 AWS CLI 部署 FSX ONTAP 。您必須視需要在環境中進一步自訂命令。此外、也可透過 AWS 主控台部署和管理 FSX ONTAP 、以更少的命令列輸入、提供更輕鬆、更精簡的部署體驗。
在 FSX ONTAP 中的文件中、我們測試區域(美國東部 -1 )每秒 2 GB 處理量檔案系統的最高 IOPS 為 8 、 000 IOPS 。FSX ONTAP 檔案系統的 IOPS 上限為 16 、 000 IOPS 、需要每秒 4 GB 的處理量部署、我們將在本文件稍後的部分中說明。
如需有關 FSX ONTAP 效能規格的詳細資訊、請隨時造訪 AWS FSX ONTAP 文件、網址為: https://docs.aws.amazon.com/fsx/latest/ONTAPGuide/performance.html。
您可以在這裡找到適用於 FSX 「 cree-file-system 」的詳細命令列語法: https://docs.aws.amazon.com/cli/latest/reference/fsx/create-file-system.html
例如、您可以指定特定的 KMS 金鑰、而非指定 KMS 金鑰時所使用的預設 AWS FSX 主要金鑰。
-
建立 FSX ONTAP 檔案系統時、請等到 JSON 將檔案系統描述如下之後、「生命週期」狀態變更為「可用」:
[root@ip-172-31-33-69 ~]# aws fsx describe-file-systems --region us-east-1 --file-system-ids fs-02ff04bab5ce01c7c
-
使用 fsxadmin 使用者登入 FSX ONTAP SSH 來驗證認證: Fsxadmin 是建立 FSX ONTAP 檔案系統時的預設管理帳戶。fsxadmin 的密碼是我們在步驟 1 中完成的第一次在 AWS 主控台或 AWS CLI 中建立檔案系統時所設定的密碼。
[root@ip-172-31-33-69 ~]# ssh fsxadmin@198.19.250.244 The authenticity of host '198.19.250.244 (198.19.250.244)' can't be established. ED25519 key fingerprint is SHA256:mgCyRXJfWRc2d/jOjFbMBsUcYOWjxoIky0ltHvVDL/Y. This key is not known by any other names Are you sure you want to continue connecting (yes/no/[fingerprint])? yes Warning: Permanently added '198.19.250.244' (ED25519) to the list of known hosts. (fsxadmin@198.19.250.244) Password: This is your first recorded login.
-
認證通過驗證後、請在 FSX ONTAP 檔案系統上建立儲存虛擬機器
[root@ip-172-31-33-69 ~]# aws fsx --region us-east-1 create-storage-virtual-machine --name svmkafkatest --file-system-id fs-02ff04bab5ce01c7c
儲存虛擬機器( SVM )是一部隔離式檔案伺服器、具有自己的管理認證和端點、可用於管理和存取 FSX ONTAP 磁碟區中的資料、並提供 FSX ONTAP 多租戶共享。
-
設定主要儲存虛擬機器後、請將 SSH 移至新建立的 FSX ONTAP 檔案系統、並使用以下範例命令在儲存虛擬機器中建立 Volume 、同樣地、我們也會建立 6 個磁碟區來進行此驗證。根據我們的驗證結果、保留預設成分( 8 )或以下成分、以提供更好的 Kafka 效能。
FsxId02ff04bab5ce01c7c::*> volume create -volume kafkafsxN1 -state online -policy default -unix-permissions ---rwxr-xr-x -junction-active true -type RW -snapshot-policy none -junction-path /kafkafsxN1 -aggr-list aggr1
-
我們的磁碟區需要額外的容量來進行測試。將磁碟區的大小延伸至 2TB 、並安裝在連接路徑上。
FsxId02ff04bab5ce01c7c::*> volume size -volume kafkafsxN1 -new-size +2TB vol size: Volume "svmkafkatest:kafkafsxN1" size set to 2.10t. FsxId02ff04bab5ce01c7c::*> volume size -volume kafkafsxN2 -new-size +2TB vol size: Volume "svmkafkatest:kafkafsxN2" size set to 2.10t. FsxId02ff04bab5ce01c7c::*> volume size -volume kafkafsxN3 -new-size +2TB vol size: Volume "svmkafkatest:kafkafsxN3" size set to 2.10t. FsxId02ff04bab5ce01c7c::*> volume size -volume kafkafsxN4 -new-size +2TB vol size: Volume "svmkafkatest:kafkafsxN4" size set to 2.10t. FsxId02ff04bab5ce01c7c::*> volume size -volume kafkafsxN5 -new-size +2TB vol size: Volume "svmkafkatest:kafkafsxN5" size set to 2.10t. FsxId02ff04bab5ce01c7c::*> volume size -volume kafkafsxN6 -new-size +2TB vol size: Volume "svmkafkatest:kafkafsxN6" size set to 2.10t. FsxId02ff04bab5ce01c7c::*> volume show -vserver svmkafkatest -volume * Vserver Volume Aggregate State Type Size Available Used% --------- ------------ ------------ ---------- ---- ---------- ---------- ----- svmkafkatest kafkafsxN1 - online RW 2.10TB 1.99TB 0% svmkafkatest kafkafsxN2 - online RW 2.10TB 1.99TB 0% svmkafkatest kafkafsxN3 - online RW 2.10TB 1.99TB 0% svmkafkatest kafkafsxN4 - online RW 2.10TB 1.99TB 0% svmkafkatest kafkafsxN5 - online RW 2.10TB 1.99TB 0% svmkafkatest kafkafsxN6 - online RW 2.10TB 1.99TB 0% svmkafkatest svmkafkatest_root aggr1 online RW 1GB 968.1MB 0% 7 entries were displayed. FsxId02ff04bab5ce01c7c::*> volume mount -volume kafkafsxN1 -junction-path /kafkafsxN1 FsxId02ff04bab5ce01c7c::*> volume mount -volume kafkafsxN2 -junction-path /kafkafsxN2 FsxId02ff04bab5ce01c7c::*> volume mount -volume kafkafsxN3 -junction-path /kafkafsxN3 FsxId02ff04bab5ce01c7c::*> volume mount -volume kafkafsxN4 -junction-path /kafkafsxN4 FsxId02ff04bab5ce01c7c::*> volume mount -volume kafkafsxN5 -junction-path /kafkafsxN5 FsxId02ff04bab5ce01c7c::*> volume mount -volume kafkafsxN6 -junction-path /kafkafsxN6
在 FSX ONTAP 中、磁碟區可以精簡配置。在我們的範例中、擴充磁碟區總容量超過檔案系統總容量、因此我們需要擴充檔案系統總容量、才能解除鎖定額外的資源配置磁碟區容量、我們將在下一步中示範。
-
接下來、為了提升效能與容量、我們將 FSX ONTAP 處理量容量從每秒 2 GB 擴充至每秒 4 GB 、 IOPS 擴充至 160000 、容量則擴充至 5 TB
[root@ip-172-31-33-69 ~]# aws fsx update-file-system --region us-east-1 --storage-capacity 5120 --ontap-configuration 'ThroughputCapacity=4096,DiskIopsConfiguration={Mode=USER_PROVISIONED,Iops=160000}' --file-system-id fs-02ff04bab5ce01c7c
您可以在這裡找到適用於 FSX 「 update-file-system 」的詳細命令列語法:
https://docs.aws.amazon.com/cli/latest/reference/fsx/update-file-system.html -
在 Kafka Brokers 中、使用 nconnect 和預設選項來裝載 FSX ONTAP 磁碟區
下圖顯示我們的 FSX ONTAP 型 Kafka 叢集最終架構:
-
運算:我們使用三節點的 Kafka 叢集、在專用伺服器上執行三節點的 zookeeper 群集。每個代理程式在 FSX ONTAP 執行個體上有六個 NFS 掛載點至六個磁碟區。
-
監控。我們使用兩個節點作為 Prometheus-Grafana 組合。為了產生工作負載、我們使用了一個獨立的三節點叢集、可以產生和使用這個Kafka叢集。
-
儲存設備。我們使用的是裝入六個 2TB 磁碟區的 FSX ONTAP 。然後使用 NFS 掛載將該 Volume 匯出至 Kafka 代理程式。 FSX ONTAP 磁碟區會在 Kafka Brokers 中以 16 個 nconnect 工作階段和預設選項掛載。
-
OpenMessage 基準測試組態。
我們使用的組態與 NetApp Cloud Volumes ONTAP 相同、其詳細資料如下:
連結: Kafka-NFS-- 效能概觀與驗證 -in-AWS.html#架 構設定
測試方法
-
Kafka 叢集是根據上述規格、使用 terraform 和 Ansible 來進行佈建。Terraform 用於使用適用於 Kafka 叢集的 AWS 執行個體來建置基礎架構、 Ansible 則在其上建置 Kafka 叢集。
-
使用上述工作負載組態和Sync驅動程式觸發OMB工作負載。
sudo bin/benchmark –drivers driver-kafka/kafka-sync.yaml workloads/1-topic-100-partitions-1kb.yaml
-
另一個工作負載是透過具有相同工作負載組態的處理量驅動程式觸發。
sudo bin/benchmark –drivers driver-kafka/kafka-throughput.yaml workloads/1-topic-100-partitions-1kb.yaml
觀察
使用兩種不同類型的驅動程式來產生工作負載、以基準測試在NFS上執行的Kafka執行個體效能。驅動程式之間的差異在於記錄排清內容。
對於 Kafka Replication factor 1 和 FSX ONTAP :
-
同步驅動程式一致產生的總處理量:約 3218 Mbps 、尖峰效能約 3652 Mbps 。
-
輸送量驅動程式一致產生的總處理量:約 3679 Mbps 、尖峰效能約 3908 Mbps 。
適用於具有複寫係數 3 和 FSX ONTAP 的 Kafka :
-
同步驅動程式一致產生的總處理量:約 1252 Mbps 、尖峰效能約 1382 Mbps 。
-
輸送量驅動程式一致產生的總處理量:約 1218 Mbps 、尖峰效能約 1328 Mbps 。
在 Kafka 複寫係數 3 中、 FSX ONTAP 的讀寫作業發生三次、在 Kafka 複寫係數 1 中、讀寫作業是在 FSX ONTAP 上執行一次、因此在兩次驗證中、我們都能達到每秒 4GB 的最大處理量。
同步處理驅動程式可在記錄立即排入磁碟時產生一致的處理量、而處理量驅動程式則會在大量將記錄提交至磁碟時產生大量處理量。
這些處理量編號是針對指定的AWS組態所產生。為了達到更高的效能需求、可以進一步擴充和調整執行個體類型、以獲得更好的處理量。總處理量或總處理率是生產者和使用者速率的組合。
下表顯示每秒 2 GB 的 FSX ONTAP 和每秒 4 GB 的 Kafka 複寫係數 3 效能。複寫因素 3 會在 FSX ONTAP 儲存設備上執行三次讀寫作業。處理量驅動程式的總速率為每秒 881 MB 、在 2GB/ 秒的 FSX ONTAP 檔案系統上讀寫 Kafka 作業約為每秒 2.64 GB 、處理量驅動程式的總速率為每秒 1328 MB 、可讀寫 Kafka 作業約每秒 3.98 GB 。卡夫卡的效能是線性的、可根據 FSX ONTAP 處理量進行擴充。
下表顯示 EC2 執行個體與 FSX ONTAP 之間的效能( Kafka 複寫係數: 3 )