Skip to main content
NetApp Solutions
본 한국어 번역은 사용자 편의를 위해 제공되는 기계 번역입니다. 영어 버전과 한국어 버전이 서로 어긋나는 경우에는 언제나 영어 버전이 우선합니다.

AWS FSx ONTAP의 성능 개요 및 검증

기여자

NetApp NFS에 마운트된 스토리지 계층이 있는 Kafka 클러스터는 AWS FSx ONTAP의 성능을 벤치마킹했습니다. 벤치마킹 예는 다음 섹션에 설명되어 있습니다.

AWS FSx ONTAP의 Apache Kafka

NFS(Network File System)는 대량의 데이터를 저장하는 데 널리 사용되는 네트워크 파일 시스템입니다. 대부분의 조직에서 데이터는 Apache Kafka와 같은 스트리밍 애플리케이션에 의해 점점 더 많이 생성되고 있습니다. 이러한 워크로드는 최신 스토리지 기능을 갖춘 확장성, 짧은 지연 시간, 강력한 데이터 수집 아키텍처를 필요로 합니다. 실시간 분석을 지원하고 실행 가능한 통찰력을 제공하기 위해 우수한 설계 및 고성능 인프라가 필요합니다.

Kafka는 POSIX 호환 파일 시스템과 호환되며 파일 시스템에 의존하여 파일 작업을 처리하지만 NFSv3 파일 시스템에 데이터를 저장할 때 Kafka 브로커 NFS 클라이언트는 XFS 또는 ext4 같은 로컬 파일 시스템과 다르게 파일 작업을 해석할 수 있습니다. 일반적인 예로는 클러스터를 확장하고 파티션을 다시 할당할 때 Kafka 브로커가 실패하는 NFS의 이름이 있습니다. 이 당면 과제를 해결하기 위해 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

  • 3 x zookeers – T2.small

  • 브로커 서버 3대 – i3en.2xLarge

  • Grafana 1개 – c5n.2xLarge

  • 생산자/소비자 4대 — c5n.2xLarge *

모든 노드의 운영 체제

RHEL8.6

AWS FSx ONTAP

4GB/sec의 처리량과 160000 IOPS의 Multi-AZ

NetApp FSx ONTAP 설정

  1. 초기 테스트를 위해 2TB의 용량과 40000 IOP로 2GB/sec의 처리량을 지원하는 FSx ONTAP 파일 시스템을 개발했습니다.

    [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을 구축하고 있습니다. 필요에 따라 사용자 환경에서 명령을 추가로 사용자 지정해야 합니다. FSx ONTAP은 AWS 콘솔을 통해 추가로 구축하여 관리함으로써 적은 명령줄 입력으로도 더 쉽고 간소화된 배포 경험을 제공할 수 있습니다.

    FSx ONTAP의 문서, 테스트 지역(미국 동부1)에서 2GB/sec 처리량 파일 시스템에 대해 실현 가능한 최대 IOPS는 80,000 IOPS입니다. FSx ONTAP 파일 시스템의 총 최대 IOPS는 160,000 IOPS이며, 이를 위해서는 4GB/s의 처리량 구축이 필요합니다. 이 내용은 이 문서의 뒷부분에서 설명합니다.

    FSx ONTAP 성능 사양에 대한 자세한 내용은 다음 AWS FSx ONTAP 문서를 참조하십시오 https://docs.aws.amazon.com/fsx/latest/ONTAPGuide/performance.html.

    FSx "create-file-system"에 대한 자세한 명령줄 구문은 여기에서 찾을 수 있습니다. https://docs.aws.amazon.com/cli/latest/reference/fsx/create-file-system.html

    예를 들어 KMS 키를 지정하지 않을 때 사용되는 기본 AWS FSx 마스터 키가 아니라 특정 KMS 키를 지정할 수 있습니다.

  2. FSx ONTAP 파일 시스템을 생성하는 동안 다음과 같이 파일 시스템을 설명한 후 JSON 리턴에서 "수명 주기" 상태가 "사용 가능"으로 변경될 때까지 기다립니다.

    [root@ip-172-31-33-69 ~]# aws fsx describe-file-systems  --region us-east-1 --file-system-ids fs-02ff04bab5ce01c7c
  3. fsxadmin 사용자를 사용하여 FSx ONTAP SSH에 로그인하여 자격 증명을 검증합니다. fsxadmin은 생성 시 FSx ONTAP 파일 시스템의 기본 admin 계정입니다. 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. 자격 증명이 검증되면 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 멀티 테넌시를 제공합니다.

  5. 운영 스토리지 가상 머신을 구성한 후에는 SSH를 통해 새로 생성된 FSx ONTAP 파일 시스템에 접속하고 아래 샘플 명령을 사용하여 스토리지 가상 머신에 볼륨을 생성하고 이와 유사하게 이 검증을 위해 6개의 볼륨을 생성합니다. 당사의 검증을 기반으로 Kafka에 더 나은 성능을 제공할 수 있는 기본 구성 요소(8) 이하를 유지합니다.

    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

    FSx ONTAP에서 볼륨을 씬 프로비저닝할 수 있습니다. 이 예에서는 총 확장 볼륨 용량이 총 파일 시스템 용량을 초과하므로 다음 단계에서 보여 드릴 추가 프로비저닝 볼륨 용량을 잠금 해제하려면 전체 파일 시스템 용량을 확장해야 합니다.

  7. 다음으로, 추가 성능 및 용량을 위해 FSx ONTAP 처리량 용량을 2GB/sec에서 4GB/sec로, IOPS를 160,000으로, 용량을 5TB로 확장합니다

    [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. FSx ONTAP 볼륨은 Kafka 브로커의 nconnect 및 기본 opion으로 마운트됩니다

    다음 그림은 FSx ONTAP 기반 Kafka 클러스터의 최종 아키텍처를 보여줍니다.

    이 이미지는 FSx ONTAP 기반 Kafka 클러스터의 아키텍처를 보여줍니다.

    • 컴퓨팅. 3노드 Kafka 클러스터를 전용 서버에서 실행되는 3노드 zookeeper 앙상블과 함께 사용했습니다. 각 브로커에는 FSx ONTAP 인스턴스의 6개 볼륨에 대한 NFS 마운트 지점이 6개 있습니다.

    • 모니터링. 두 개의 노드를 사용하여 Prometheus-Grafana 조합을 사용했습니다. 워크로드를 생성하는데 이 Kafka 클러스터를 생성하고 사용할 수 있는 별도의 3노드 클러스터를 사용했습니다.

    • 스토리지. 6개의 2TB 볼륨이 마운트된 FSx ONTAP를 사용했습니다. 그런 다음, NFS 마운트를 사용하여 Kafka 브로커로 볼륨을 내보냈습니다. FSx ONTAP 볼륨은 16개의 nconnect 세션 및 Kafka 브로커의 기본 옵션으로 마운트됩니다.

Openmessage 벤치마킹 구성.

NetApp Cloud Volumes ONTAP에 사용된 것과 동일한 구성을 사용했으며 세부 정보는 다음과 같습니다.
link:kafka-nfs-performance-overview-and-validation-in-AWS.html#constructural-setup

테스트 방법

  1. Kafka 클러스터는 Terraform 및 Ansible을 사용하여 위에서 설명한 사양에 따라 프로비저닝되었습니다. Terraform은 Kafka 클러스터용 AWS 인스턴스를 사용하여 인프라를 구축하는 데 사용되며, Ansible은 Kafka 클러스터를 기반으로 합니다.

  2. 위에 설명된 워크로드 구성과 동기화 드라이버로 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 복제 계수 1 및 FSx ONTAP의 경우:

  • Sync 드라이버에서 일관되게 생성된 총 처리량: ~3218Mbps 및 최대 성능: ~3652Mbps.

  • 처리량 드라이버에서 일관되게 생성된 총 처리량: ~3679Mbps 및 최대 성능: ~3908Mbps.

복제 계수 3 및 FSx ONTAP를 사용하는 Kafka의 경우:

  • Sync 드라이버에서 일관되게 생성된 총 처리량: ~1252Mbps 및 최대 성능: ~1382Mbps.

  • 처리량 드라이버에서 일관되게 생성된 총 처리량: ~1218Mbps 및 최대 성능: ~1328Mbps.

Kafka 복제 요소 3에서 읽기 및 쓰기 작업은 FSx ONTAP에서 3번 수행되고, Kafka 복제 요소 1에서 읽기 및 쓰기 작업은 FSx ONTAP에서 한 번만 실행되므로 두 검증에서 최대 4GB/sec의 처리량을 달성할 수 있습니다.

Sync 드라이버는 로그가 디스크에 즉시 플러시될 때 일관된 처리량을 생성할 수 있는 반면, 처리량 드라이버는 로그가 대량으로 디스크에 커밋될 때 처리량 버스트를 생성합니다.

이러한 처리량 수치는 지정된 AWS 구성에 대해 생성됩니다. 더 높은 성능 요구 사항을 위해 더 나은 처리량 수치를 위해 인스턴스 유형을 확장하고 조정할 수 있습니다. 총 처리량 또는 총 속도는 생산자와 소비자 속도의 조합입니다.

이 이미지는 RF1 및 RF3을 사용한 Kafka의 성능을 보여줍니다

아래 차트는 Kafka 복제 요소 3의 2GB/sec FSx ONTAP 및 4GB/sec 성능을 보여줍니다. 복제 계수 3은 FSx ONTAP 스토리지에서 읽기 및 쓰기 작업을 세 번 수행합니다. 처리량 드라이버의 총 속도는 881MB/sec입니다. 2GB/sec FSx ONTAP 파일 시스템에서 약 2.64GB/sec의 Kafka 읽기 및 쓰기 작업을 수행하는 처리량 드라이버의 총 속도는 약 3.98GB/sec입니다. 기타 Kafka 성능은 FSx ONTAP 처리량에 따라 선형으로 확장 가능합니다.

이 이미지는 2GB/sec 및 4GB/sec의 스케일아웃 성능을 보여줍니다.

아래 차트는 EC2 인스턴스와 FSx ONTAP(Kafka 복제 요소:3) 간의 성능을 보여줍니다.

이 이미지는 RF3의 EC2와 FSx ONTAP의 성능을 비교한 것입니다.