Визначення бенчмарків зовнішнього S3 Storage

Ця інструкція направлена на визначення бенчмарків зовнішнього S3 storage за допомогою інструменту warp, для аналізу отриманих результатів та порівняння по швидкодії з Ceph Object Storage, який використовується в Платформі за замовчуванням.

1. Для проведення та визначення бенчмарків зовнішнього S3 storage потрібно виконати наступне:

  1. Створити тестовий бакет (з назвою, наприклад s3-bench) у зовнішньому S3 з отриманням access-key та secret-key для доступу.

  2. Запустити под з інструментом warp у просторі імен default кластеру OKD:

    apiVersion: v1
    kind: Pod
    metadata:
      name: s3-benchmark
      namespace: default
    spec:
      containers:
        - name: benchmarker
          image: minio/warp:latest
          command: ["sh", "-c", "sleep 3600"]  # Keep container alive for 1 hour
          resources:
            requests:
              cpu: "1"
              memory: "1Gi"
            limits:
              cpu: "2"
              memory: "2Gi"
      tolerations:
        - key: node.ocs.openshift.io/storage
          operator: Equal
          value: 'true'
          effect: NoSchedule
  3. З термінала под s3-benchmark виконати наступний перелік команд warp:

    У разі використання на зовнішньому S3 storage самопідписаного SSL сертифікату треба зробити його довірчим.

    Для цього треба зробити:

    1. Завантажити сертифікат в под s3-benchmark за шляхом /usr/local/share/ca-certificates/ca.crt

    2. Встановити інструмент ca-certificates за допомогою команди: apk add --no-cache ca-certificates

    3. Виконати команду update-ca-certificates

    Або використовувати прапор --insecure додавши його до переліку прапорів команд warp, що наведені нижче.

    Запуск тесту в режимі PUT:

    ./warp put \
      --host=<<url зовнішнього S3>> \
      --access-key=<<bucket-access-key>> \
      --secret-key=<<bucket-secret-key>> \
      --bucket=<<назва тестового бакету>> \
      --obj.size=4MiB \
      --concurrent=16 \
      --duration=40s \
      --tls \
      --benchdata=write-test.csv.zst

    приклад для host: --host=s3.krrt-ncr.loc

    Запуск тесту в режимі GET:

    ./warp get \
      --host=<<url зовнішнього S3>> \
      --access-key=<<bucket-access-key>> \
      --secret-key=<<bucket-secret-key>> \
      --bucket=<<назва тестового бакету>> \
      --obj.size=4MiB \
      --concurrent=16 \
      --duration=40s \
      --tls \
      --benchdata=write-test.csv.zst

    Запуск тесту в режимі MIXED:

    ./warp mixed \
      --host=<<url зовнішнього S3>> \
      --access-key=<<bucket-access-key>> \
      --secret-key=<<bucket-secret-key>> \
      --bucket=<<назва тестового бакету>> \
      --obj.size=4MiB \
      --concurrent=16 \
      --duration=40s \
      --tls \
      --benchdata=write-test.csv.zst

    Прапор --obj.size (розмір об’єкта) можна змінювати за потреби в меншу або більшу сторону.

    Для кожного тесту, в кінці його виконання, буде наведено вивід з даними бенчмарків зовнішнього S3 storage, котрі треба зберегти для подальшого аналізу та порівнянь з даними бенчмарків Ceph Object Storage.

2. Для проведення та визначення бенчмарків Ceph Object Storage потрібно виконати наступне:

  1. Створити тестовий бакет (з назвою, наприклад s3-bench) у Ceph Object Storage Платформи у просторі імен default кластеру OKD:

    apiVersion: objectbucket.io/v1alpha1
    kind: ObjectBucketClaim
    metadata:
      name: s3-bench
      namespace: default
    spec:
      additionalConfig:
        bucketclass: registry-bucket-class
      generateBucketName: s3-bench
      storageClassName: registry-bucket
  2. Отримати access-key та secret-key для доступу до тестового бакету з secret s3-bench у просторі імен default кластеру OKD.

  3. Визначити повну назву тестового бакету з поля bucketName: з ресурсу obc створеного тестового бекету у п 2.1. Наприклад: s3-bench-93eeec16-b21d-457e-a731-6b6ba2c3cd34

  4. Використовувати под s3-benchmark, запущений у п 1.2, та з його термінала, виконати наступний перелік команд warp:

    Запуск тесту в режимі PUT:

    ./warp put --host=rook-ceph-rgw-mdtuddm.openshift-storage.svc:80 \
      --access-key=<<bucket-access-key>> \
      --secret-key=<<bucket-secret-key>> \
      --bucket=<<назва тестового бакету>> \
      --obj.size=4MiB \
      --concurrent=16 \
      --duration=40s \
      --benchdata=write-test.csv.zst

    Запуск тесту в режимі GET:

    ./warp get --host=rook-ceph-rgw-mdtuddm.openshift-storage.svc:80 \
      --access-key=<<bucket-access-key>> \
      --secret-key=<<bucket-secret-key>> \
      --bucket=<<назва тестового бакету>> \
      --obj.size=4MiB \
      --concurrent=16 \
      --duration=40s \
      --benchdata=write-test.csv.zst

    Запуск тесту в режимі MIXED:

    ./warp mixed --host=rook-ceph-rgw-mdtuddm.openshift-storage.svc:80 \
      --access-key=<<bucket-access-key>> \
      --secret-key=<<bucket-secret-key>> \
      --bucket=<<назва тестового бакету>> \
      --obj.size=4MiB \
      --concurrent=16 \
      --duration=40s \
      --benchdata=write-test.csv.zst

    Прапор --obj.size (розмір об’єкта) можна змінювати за потреби в меншу або більшу сторону.

    Для кожного тесту, в кінці його виконання, буде наведено вивід з даними бенчмарків Ceph Object Storage, котрі треба зберегти для подальшого аналізу і порівнянь з даними бенчмарків зовнішнього S3 storage.

3. Рекомендації щодо планування та проведення тестів, зазначених у розділах 1 та 2

  1. Планувати проведення декілька етапів тестування у різні дні тижня та різний час. Наприклад: у будні у дений (бізнес) час та вечорі (не бізнес час) та суботу/неділю.

  2. Після отримання результатів проведених тестів, зробити аналіз для прийняття рішення доцільності використання зовнішнього S3 storage як місце збереження даних в бакетах для реєстрів Платформи.