Skip to main content
NetApp Solutions
本繁體中文版使用機器翻譯,譯文僅供參考,若與英文版本牴觸,應以英文版本為準。

AWS FSX for NetApp ONTAP 的效能概觀與驗證

貢獻者

NetApp NFS 上安裝儲存層的 Kafka 叢集、是 AWS FSX for NetApp ONTAP 效能的基準測試。基準測試範例將於下列各節中說明。

AWS FSX for NetApp 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 中普遍提供變更、並從目前的適用於 NetApp ONTAP 版本 ONTAP 9.12.1 的 FSX 中獲得支援。

Amazon FSX for NetApp ONTAP 可在雲端中提供完全託管、可擴充且高效能的 NFS 檔案系統。適用於 NetApp ONTAP 的 FSX 上的 Kafka 資料可擴充以處理大量資料、並確保容錯能力。NFS 可為重要且敏感的資料集提供集中化的儲存管理與資料保護。

這些增強功能可讓 AWS 客戶在 AWS 運算服務上執行 Kafka 工作負載時、善用適用於 NetApp ONTAP 的 FSX 。這些效益包括:
* 降低 CPU 使用率、以縮短 I/O 等待時間
* 更快的 Kafka 代理程式恢復時間。
* 可靠性與效率。
* 擴充性與效能。
* 多可用性區域可用度。
* 資料保護。

AWS FSX for NetApp ONTAP 的效能概觀與驗證

安裝在NetApp NFS上的儲存層Kafka叢集、是以AWS雲端效能為基準。基準測試範例將於下列各節中說明。

AWS FSX for NetApp ONTAP 中的 Kafka

採用 AWS FSX for NetApp ONTAP 的 Kafka 叢集、在 AWS 雲端中以效能為基準。以下各節將說明此基準測試。

架構設定

下表顯示使用 AWS FSX for NetApp ONTAP 的 Kafka 叢集環境組態。

平台元件 環境組態

Kafka 3.2.3

  • 3個zookeepers–T2.small

  • 3個代理伺服器–i3en.2xLarge

  • 1 x Grafana–c5n.2xLarge

  • 4個製造商/消費者- c5n.2xLarge *

所有節點上的作業系統

RHEL8.6.

AWS FSX for NetApp ONTAP

具有 4GB/ 秒處理量和 160000 IOPS 的多 AZ

NetApp FSX for NetApp ONTAP 設定

  1. 在我們的初始測試中、我們為 NetApp ONTAP 檔案系統建立了 FSX 、容量為 2TB 、傳輸量為每秒 2GB 的 40000 IOPs 。

    [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 部署適用於 NetApp ONTAP 的 FSX 。您必須視需要在環境中進一步自訂命令。此外、也可透過 AWS 主控台部署和管理適用於 NetApp ONTAP 的 FSX 、以減少命令列輸入、提供更輕鬆、更精簡的部署體驗。

    FSX for NetApp ONTAP 的文件資料、我們測試區域(美國東部 -1 )每秒 2 GB 處理量檔案系統的最高 IOPS 為 8 、 000 IOPS 。NetApp ONTAP 檔案系統的 FSX 總 IOPS 為 16 、 000 IOPS 、需要每秒 4 GB 的處理量部署、我們將在本文件稍後說明。

    如需適用於 NetApp ONTAP 效能規格的 FSX 詳細資訊、請隨時造訪 AWS FSX for NetApp 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 主要金鑰。

  2. 為 NetApp ONTAP 檔案系統建立 FSX 時、請等到 JSON 將檔案系統描述如下之後、「生命週期」狀態變更為「可用」:

    [root@ip-172-31-33-69 ~]# aws fsx describe-file-systems  --region us-east-1 --file-system-ids fs-02ff04bab5ce01c7c
  3. 與 fsxadmin 使用者登入適用於 NetApp ONTAP SSH 的 FSX 、以驗證認證:
    Fsxadmin 是建立時適用於 NetApp ONTAP 檔案系統之 FSX 的預設管理帳戶。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.
  4. 認證通過驗證後、請在適用於 NetApp ONTAP 檔案系統的 FSX 上建立儲存虛擬機器

    [root@ip-172-31-33-69 ~]# aws fsx --region us-east-1 create-storage-virtual-machine --name svmkafkatest --file-system-id fs-02ff04bab5ce01c7c

    儲存虛擬機器( SVM )是一部隔離式檔案伺服器、具有自己的管理認證和端點、可用於管理和存取適用於 NetApp ONTAP 磁碟區的 FSX 中的資料、並提供適用於 NetApp ONTAP 多租戶的 FSX 。

  5. 設定主要儲存虛擬機器之後、請將 SSH 移至新建立的 NetApp ONTAP 檔案系統 FSX 、並使用以下範例命令在儲存虛擬機器中建立 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
  6. 我們的磁碟區需要額外的容量來進行測試。將磁碟區的大小延伸至 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

    在適用於 NetApp ONTAP 的 FSX 中、磁碟區可以精簡配置。在我們的範例中、擴充磁碟區總容量超過檔案系統總容量、因此我們需要擴充檔案系統總容量、才能解除鎖定額外的資源配置磁碟區容量、我們將在下一步中示範。

  7. 接下來、為了提升效能與容量、我們將 NetApp ONTAP 處理量容量的 FSX 從每秒 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

  8. NetApp ONTAP 磁碟區的 FSX 會在 Kafka Brokers 中使用 nconnect 和預設選項進行掛載

    下圖顯示我們的 FSX for NetApp ONTAP 卡夫卡叢集的最終架構:

    此影像顯示 FSxN 型 Kafka 叢集的架構。

    • 運算:我們使用三節點的 Kafka 叢集、在專用伺服器上執行三節點的 zookeeper 群集。每個代理程式都有六個 NFS 掛載點、可連接至 FSX for NetApp ONTAP 執行個體上的六個磁碟區。

    • 監控。我們使用兩個節點作為 Prometheus-Grafana 組合。為了產生工作負載、我們使用了一個獨立的三節點叢集、可以產生和使用這個Kafka叢集。

    • 儲存設備。我們使用適用於 NetApp ONTAP 的 FSX 搭配六個 2TB 磁碟區。然後使用 NFS 掛載將該 Volume 匯出至 Kafka 代理程式。 NetApp ONTAP 磁碟區的 FSX 會在 Kafka 代理程式中以 16 個 nconnect 工作階段和預設選項掛載。

OpenMessage 基準測試組態。

測試方法

  1. Kafka 叢集是根據上述規格、使用 terraform 和 Ansible 來進行佈建。Terraform 用於使用適用於 Kafka 叢集的 AWS 執行個體來建置基礎架構、 Ansible 則在其上建置 Kafka 叢集。

  2. 使用上述工作負載組態和Sync驅動程式觸發OMB工作負載。

    sudo bin/benchmark –drivers driver-kafka/kafka-sync.yaml workloads/1-topic-100-partitions-1kb.yaml
  3. 另一個工作負載是透過具有相同工作負載組態的處理量驅動程式觸發。

    sudo bin/benchmark –drivers driver-kafka/kafka-throughput.yaml workloads/1-topic-100-partitions-1kb.yaml

觀察

使用兩種不同類型的驅動程式來產生工作負載、以基準測試在NFS上執行的Kafka執行個體效能。驅動程式之間的差異在於記錄排清內容。

對於 Kafka Replication factor 1 和適用於 NetApp ONTAP 的 FSX :

  • 同步驅動程式一致產生的總處理量:約 3218 Mbps 、尖峰效能約 3652 Mbps 。

  • 輸送量驅動程式一致產生的總處理量:約 3679 Mbps 、尖峰效能約 3908 Mbps 。

適用於具有複寫係數 3 的 Kafka 和適用於 NetApp ONTAP 的 FSX :

  • 同步驅動程式一致產生的總處理量:約 1252 Mbps 、尖峰效能約 1382 Mbps 。

  • 輸送量驅動程式一致產生的總處理量:約 1218 Mbps 、尖峰效能約 1328 Mbps 。

在 Kafka 複寫係數 3 中、 NetApp ONTAP 的 FSX 執行讀寫作業三次、在 Kafka 複寫係數 1 中、 NetApp ONTAP 的讀寫作業是在 FSX 上執行一次、因此在兩次驗證中、 我們能夠達到每秒 4GB 的最大處理量。

同步處理驅動程式可在記錄立即排入磁碟時產生一致的處理量、而處理量驅動程式則會在大量將記錄提交至磁碟時產生大量處理量。

這些處理量編號是針對指定的AWS組態所產生。為了達到更高的效能需求、可以進一步擴充和調整執行個體類型、以獲得更好的處理量。總處理量或總處理率是生產者和使用者速率的組合。

此影像顯示 Kafka 搭配 RF1 和 RF3 的效能

下表顯示 NetApp ONTAP 的 2GB/ 秒 FSX 和 Kafka 複寫係數 3 的 4GB/ 秒效能。複寫因素 3 會在 NetApp ONTAP 儲存設備的 FSX 上執行三次讀寫作業。處理量驅動程式的總速率是 881 MB/s 、在 NetApp ONTAP 檔案系統的 2GB/ 秒 FSX 上執行讀寫 Kafka 作業約 2.64 GB/ 秒、處理量驅動程式的總速率是 1328 MB/ 秒、可讀寫 Kafka 作業約 3.98 GB/ 秒。卡夫卡的效能是線性的、可根據 NetApp ONTAP 處理量的 FSX 進行擴充。

此影像顯示每秒 2 GB 和 4 GB/ 秒的橫向擴充效能。

下表顯示 EC2 執行個體與 NetApp ONTAP 的 FSX 之間的效能( Kafka 複寫係數: 3 )

此影像顯示 RF3 中 EC2 與 FSxN 的效能比較。