9.10. Kafka 및 Zoo Cryostat 스토리지 구성


AMQ Streams는 Kafka 및 Zoo Cryostat의 데이터 스토리지 옵션을 구성할 수 있는 유연성을 제공합니다.

지원되는 스토리지 유형은 다음과 같습니다.

  • ephemeral (개발에만 권장)
  • persistent
  • JBOD(Kafka만 해당; Zoo Cryostat에서는 사용할 수 없음)
  • 계층화된 스토리지(Early Access)

스토리지를 구성하려면 구성 요소의 사용자 지정 리소스에서 스토리지 속성을 지정합니다. 스토리지 유형은 storage.type 속성을 사용하여 설정됩니다. 노드 풀을 사용하는 경우 Kafka 클러스터에서 사용되는 각 노드 풀에 고유한 스토리지 구성을 지정할 수 있습니다. Kafka 리소스에서 사용할 수 있는 동일한 스토리지 속성도 Kafka NodePool 풀 리소스에서 사용할 수 있습니다.

계층화된 스토리지는 다양한 특성을 가진 스토리지 유형의 병렬 사용을 활용하여 데이터 관리에 더 많은 유연성을 제공합니다. 예를 들어 계층화된 스토리지는 다음을 포함할 수 있습니다.

  • 성능 향상 및 높은 비용 블록 스토리지
  • 성능 절감 및 비용 객체 스토리지

계층화된 스토리지는 Kafka의 초기 액세스 기능입니다. 계층화된 스토리지를 구성하려면 tieredStorage 속성을 지정합니다. 계층화된 스토리지는 Kafka 사용자 정의 리소스를 사용하여 클러스터 수준에서만 구성됩니다.

스토리지 관련 스키마 참조는 스토리지 구성 속성에 대한 자세한 정보를 제공합니다.

주의

Kafka 클러스터를 배포한 후에는 스토리지 유형을 변경할 수 없습니다.

9.10.1. 데이터 스토리지 고려 사항

AMQ Streams가 제대로 작동하려면 효율적인 데이터 스토리지 인프라가 필요합니다. 블록 스토리지를 사용하는 것이 좋습니다. AMQ Streams는 블록 스토리지에서만 사용할 수 있도록 테스트되었습니다. NFS와 같은 파일 스토리지는 테스트되지 않으며 작동한다고 보장할 수 없습니다.

블록 스토리지에 대해 다음 옵션 중 하나를 선택합니다.

참고

AMQ Streams에는 OpenShift 원시 블록 볼륨이 필요하지 않습니다.

9.10.1.1. 파일 시스템

Kafka는 메시지를 저장하기 위해 파일 시스템을 사용합니다. AMQ Streams는 Kafka와 함께 일반적으로 사용되는 XFS 및 ext4 파일 시스템과 호환됩니다. 파일 시스템을 선택하고 설정할 때 배포의 기본 아키텍처 및 요구 사항을 고려하십시오.

자세한 내용은 Kafka 문서 의 파일 시스템 선택을 참조하십시오.

9.10.1.2. 디스크 사용량

Apache Kafka 및 Zoo Cryostat에 대해 별도의 디스크를 사용합니다.

SSD(Solid-State Drive)는 필수는 아니지만 여러 주제로 데이터를 보내고 비동기적으로 수신하는 대규모 클러스터에서 Kafka의 성능을 향상시킬 수 있습니다. SSD는 Zoo Cryostat에서 특히 효과적이며 빠르고 짧은 대기 시간 데이터 액세스가 필요합니다.

참고

Kafka 및 Zoo Cryostat 둘 다 데이터 복제가 내장되어 있기 때문에 복제된 스토리지를 프로비저닝할 필요가 없습니다.

9.10.2. 임시 스토리지

임시 데이터 스토리지는 일시적인 것입니다. 노드의 모든 Pod는 로컬 임시 스토리지 공간을 공유합니다. 데이터를 사용하는 Pod가 실행 중인 동안 데이터가 유지됩니다. Pod가 삭제되면 데이터가 손실됩니다. Pod는 고가용성 환경에서 데이터를 복구할 수 있습니다.

일시적인 특성으로 인해 임시 스토리지는 개발 및 테스트에만 권장됩니다.

임시 스토리지는 emptyDir 볼륨을 사용하여 데이터를 저장합니다. 노드에 Pod가 할당되면 emptyDir 볼륨이 생성됩니다. sizeLimit 속성을 사용하여 emptyDir 의 총 스토리지 양을 설정할 수 있습니다.

중요

임시 스토리지는 복제 인수가 1인 단일 노드 Zoo Cryostat 클러스터 또는 Kafka 항목에 적합하지 않습니다.

임시 스토리지를 사용하려면 Kafka 또는 Zoo Cryostat 리소스의 스토리지 유형 구성을 임시 로 설정합니다. 노드 풀을 사용하는 경우 개별 노드 풀의 스토리지 구성에서 임시 를 지정할 수도 있습니다.

임시 스토리지 구성의 예

apiVersion: kafka.strimzi.io/v1beta2
kind: Kafka
metadata:
  name: my-cluster
spec:
  kafka:
    storage:
      type: ephemeral
    # ...
  zookeeper:
    storage:
      type: ephemeral
    # ...
Copy to Clipboard Toggle word wrap

9.10.2.1. Kafka 로그 디렉터리의 마운트 경로

임시 볼륨은 Kafka 브로커가 다음 경로에 마운트된 로그 디렉터리로 사용합니다.

/var/lib/kafka/data/kafka-logIDX
Copy to Clipboard Toggle word wrap

여기서 IDX 는 Kafka 브로커 Pod 인덱스입니다. 예: /var/lib/kafka/data/kafka-log0.

9.10.3. 영구 스토리지

영구 데이터 스토리지는 시스템 중단 시 데이터를 유지합니다. 영구 데이터 스토리지를 사용하는 Pod의 경우 Pod 오류가 발생하고 다시 시작할 때마다 데이터가 유지됩니다. 영구 특성으로 인해 프로덕션 환경에 영구 스토리지를 사용하는 것이 좋습니다.

AMQ Streams에서 영구 스토리지를 사용하려면 Kafka 또는 Zoo Cryostat 리소스의 스토리지 구성에 persistent-claim 을 지정합니다. 노드 풀을 사용하는 경우 개별 노드 풀의 스토리지 구성에 persistent-claim 을 지정할 수도 있습니다.

Pod에서 PVC( 영구 볼륨 클레임 )를 사용하여 PV(영구 볼륨)에서 스토리지 요청을 수행하도록 리소스를 구성합니다. PV는 필요에 따라 생성되며 이를 사용하는 Pod와 독립적인 스토리지 볼륨을 나타냅니다. PVC는 Pod를 생성할 때 필요한 스토리지 양을 요청합니다. PV의 기본 스토리지 인프라를 이해할 필요가 없습니다. PV가 스토리지 기준과 일치하면 PVC가 PV에 바인딩됩니다.

스토리지 유형을 지정하는 방법은 다음 두 가지가 있습니다.

storage.type: persistent-claim
persistent-claim 을 스토리지 유형으로 선택하면 단일 영구 스토리지 볼륨이 정의됩니다.
storage.type: jbod
스토리지 유형으로 jbod 를 선택하면 고유한 ID를 사용하여 영구 스토리지 볼륨 배열을 정의할 수 있는 유연성이 있습니다.

프로덕션 환경에서는 다음을 구성하는 것이 좋습니다.

  • Kafka 또는 노드 풀의 경우 storage.type 을 하나 이상의 영구 볼륨이 있는 jbod 로 설정합니다.
  • Zoo Cryostat의 경우 storage.type 을 단일 영구 볼륨에 대한 영구 클레임으로 설정합니다.

영구 스토리지에는 다음과 같은 구성 옵션도 있습니다.

ID (선택 사항)
저장 ID 번호입니다. 이 옵션은 JBOD 스토리지 선언에 정의된 스토리지 볼륨에 필요합니다. 기본값은 0 입니다.
크기 (필수)
영구 볼륨 클레임의 크기(예: "1000Gi").
클래스 (선택 사항)
PVC는 StorageClass 를 지정하여 다양한 유형의 영구 스토리지를 요청할 수 있습니다. 스토리지 클래스는 스토리지 프로필을 정의하고 해당 프로필을 기반으로 PV를 동적으로 프로비저닝합니다. 스토리지 클래스를 지정하지 않으면 OpenShift 클러스터에서 기본값으로 표시된 스토리지 클래스가 사용됩니다. 영구 스토리지 옵션에는 SAN 스토리지 유형 또는 로컬 영구 볼륨이 포함될 수 있습니다.
선택기 (선택 사항)
특정 PV를 지정하는 구성입니다. 선택한 볼륨의 레이블을 나타내는 키:값 쌍을 제공합니다.
DeleteClaim (선택 사항)
클러스터가 제거될 때 PVC가 삭제되었는지 여부를 지정하는 부울 값입니다. 기본값은 false 입니다.
주의

기존 AMQ Streams 클러스터에서 영구 볼륨 크기를 늘리는 것은 영구 볼륨 크기 조정을 지원하는 OpenShift 버전에서만 지원됩니다. 크기를 조정할 영구 볼륨은 볼륨 확장을 지원하는 스토리지 클래스를 사용해야 합니다. 볼륨 확장을 지원하지 않는 다른 OpenShift 버전 및 스토리지 클래스의 경우 클러스터를 배포하기 전에 필요한 스토리지 크기를 결정해야 합니다. 기존 영구 볼륨의 크기를 줄일 수 없습니다.

Kafka 및 Zoo Cryostat에 대한 영구 스토리지 구성의 예

apiVersion: kafka.strimzi.io/v1beta2
kind: Kafka
metadata:
  name: my-cluster
spec:
  kafka:
    storage:
      type: jbod
      volumes:
      - id: 0
        type: persistent-claim
        size: 100Gi
        deleteClaim: false
      - id: 1
        type: persistent-claim
        size: 100Gi
        deleteClaim: false
      - id: 2
        type: persistent-claim
        size: 100Gi
        deleteClaim: false
    # ...
  zookeeper:
    storage:
      type: persistent-claim
      size: 1000Gi
    # ...
Copy to Clipboard Toggle word wrap

특정 스토리지 클래스가 있는 영구 스토리지 구성의 예

# ...
storage:
  type: persistent-claim
  size: 500Gi
  class: my-storage-class
# ...
Copy to Clipboard Toggle word wrap

선택기 를 사용하여 SSD와 같은 특정 기능을 제공하는 레이블이 지정된 영구 볼륨을 지정합니다.

selector가 있는 영구 스토리지 구성의 예

# ...
storage:
  type: persistent-claim
  size: 1Gi
  selector:
    hdd-type: ssd
  deleteClaim: true
# ...
Copy to Clipboard Toggle word wrap

9.10.3.1. 스토리지 클래스 덮어쓰기

기본 스토리지 클래스를 사용하는 대신 Kafka 또는 Zoo Cryostat 노드에 대해 다른 스토리지 클래스를 지정할 수 있습니다. 예를 들어 스토리지 클래스가 다른 가용성 영역 또는 데이터 센터로 제한되는 경우 유용합니다. 이 목적을 위해 overrides 필드를 사용할 수 있습니다.

이 예에서 기본 스토리지 클래스의 이름은 my-storage-class:입니다.

클래스 덮어쓰기가 포함된 스토리지 구성의 예

apiVersion: kafka.strimzi.io/v1beta2
kind: Kafka
metadata:
  labels:
    app: my-cluster
  name: my-cluster
  namespace: myproject
spec:
  # ...
  kafka:
    replicas: 3
    storage:
      type: jbod
      volumes:
      - id: 0
        type: persistent-claim
        size: 100Gi
        deleteClaim: false
        class: my-storage-class
        overrides:
        - broker: 0
          class: my-storage-class-zone-1a
        - broker: 1
          class: my-storage-class-zone-1b
        - broker: 2
          class: my-storage-class-zone-1c
      # ...
  # ...
  zookeeper:
    replicas: 3
    storage:
      deleteClaim: true
      size: 100Gi
      type: persistent-claim
      class: my-storage-class
      overrides:
        - broker: 0
          class: my-storage-class-zone-1a
        - broker: 1
          class: my-storage-class-zone-1b
        - broker: 2
          class: my-storage-class-zone-1c
  # ...
Copy to Clipboard Toggle word wrap

구성된 overrides 속성의 결과로 볼륨은 다음 스토리지 클래스를 사용합니다.

  • Zoo Cryostat 노드 0의 영구 볼륨은 my-storage-class-zone-1a 를 사용합니다.
  • Zoo Cryostat 노드 1의 영구 볼륨은 my-storage-class-zone-1b 를 사용합니다.
  • Zoo Cryostat 노드 2의 영구 볼륨은 my-storage-class-zone-1c 를 사용합니다.
  • Kafka 브로커 0의 영구 볼륨은 my-storage-class-zone-1a 를 사용합니다.
  • Kafka 브로커 1의 영구 볼륨은 my-storage-class-zone-1b 를 사용합니다.
  • Kafka 브로커 2의 영구 볼륨은 my-storage-class-zone-1c 를 사용합니다.

overrides 속성은 현재 스토리지 클래스 를 재정의하는 데만 사용됩니다. 다른 스토리지 구성 속성에 대한 재정의는 현재 지원되지 않습니다.

9.10.3.2. 영구 스토리지를 위한 PVC 리소스

영구 스토리지를 사용하면 다음 이름으로 PVC를 생성합니다.

data-cluster-name-kafka-idx
Kafka 브로커 Pod idx 의 데이터를 저장하는 데 사용되는 볼륨의 PVC입니다.
data-cluster-name-zookeeper-idx
Zoo Cryostat 노드 Pod idx 의 데이터를 저장하는 데 사용되는 볼륨의 PVC입니다.

9.10.3.3. Kafka 로그 디렉터리의 마운트 경로

영구 볼륨은 Kafka 브로커가 다음 경로에 마운트된 로그 디렉터리로 사용합니다.

/var/lib/kafka/data/kafka-logIDX
Copy to Clipboard Toggle word wrap

여기서 IDX 는 Kafka 브로커 Pod 인덱스입니다. 예: /var/lib/kafka/data/kafka-log0.

9.10.4. 영구 볼륨 크기 조정

클러스터에서 사용하는 영구 볼륨은 스토리지 인프라에서 지원하는 한 데이터 손실 위험없이 크기를 조정할 수 있습니다. 스토리지 크기를 변경하는 구성 업데이트에 따라 AMQ Streams는 스토리지 인프라에 변경하도록 지시합니다. 스토리지 확장은 persistent-claim 볼륨을 사용하는 AMQ Streams 클러스터에서 지원됩니다.

스토리지 감소는 브로커당 여러 디스크를 사용하는 경우에만 가능합니다. 디스크의 모든 파티션을 동일한 브로커(intra-broker) 내의 다른 볼륨으로 이동하거나 동일한 클러스터 내의 다른 브로커(클러스터 내)로 이동한 후 디스크를 제거할 수 있습니다.

중요

현재 OpenShift에서 지원되지 않으므로 영구 볼륨의 크기를 줄일 수 없습니다.

사전 요구 사항

  • 볼륨 크기 조정을 지원하는 OpenShift 클러스터입니다.
  • Cluster Operator가 실행 중입니다.
  • 볼륨 확장을 지원하는 스토리지 클래스를 사용하여 생성된 영구 볼륨을 사용하는 Kafka 클러스터입니다.

프로세스

  1. 클러스터의 Kafka 리소스를 편집합니다.

    Kafka 클러스터, Zoo Cryostat 클러스터 또는 둘 다에 할당된 영구 볼륨의 크기를 늘리려면 size 속성을 변경합니다.

    • Kafka 클러스터의 경우 spec.kafka.storage 에서 size 속성을 업데이트합니다.
    • Zoo Cryostat 클러스터의 경우 spec.zookeeper.storage 에서 size 속성을 업데이트합니다.

    볼륨 크기를 2000Gi로 늘리는 Kafka 구성

    apiVersion: kafka.strimzi.io/v1beta2
    kind: Kafka
    metadata:
      name: my-cluster
    spec:
      kafka:
        # ...
        storage:
          type: persistent-claim
          size: 2000Gi
          class: my-storage-class
        # ...
      zookeeper:
        # ...
    Copy to Clipboard Toggle word wrap

  2. 리소스를 생성하거나 업데이트합니다.

    oc apply -f <kafka_configuration_file>
    Copy to Clipboard Toggle word wrap

    OpenShift는 Cluster Operator의 요청에 대한 응답으로 선택한 영구 볼륨의 용량을 늘립니다. 크기 조정이 완료되면 Cluster Operator는 크기가 조정된 영구 볼륨을 사용하는 모든 Pod를 재시작합니다. 이 작업은 자동으로 수행됩니다.

  3. 클러스터의 관련 Pod에 대해 스토리지 용량이 증가했는지 확인합니다.

    oc get pv
    Copy to Clipboard Toggle word wrap

    스토리지가 증가된 Kafka 브로커 Pod

    NAME               CAPACITY   CLAIM
    pvc-0ca459ce-...   2000Gi     my-project/data-my-cluster-kafka-2
    pvc-6e1810be-...   2000Gi     my-project/data-my-cluster-kafka-0
    pvc-82dc78c9-...   2000Gi     my-project/data-my-cluster-kafka-1
    Copy to Clipboard Toggle word wrap

    출력에는 브로커 Pod와 연결된 각 PVC의 이름이 표시됩니다.

9.10.5. JBOD 스토리지

JBOD 스토리지를 사용하면 여러 디스크 또는 볼륨을 사용하도록 Kafka 클러스터를 구성할 수 있습니다. 이 접근 방식은 Kafka 브로커의 데이터 스토리지 용량이 증가하여 성능이 향상될 수 있습니다. JBOD 구성은 하나 이상의 볼륨으로 정의되며, 각 볼륨은 임시 또는 영구 일 수 있습니다. JBOD 볼륨 선언의 규칙 및 제약 조건은 임시 및 영구 스토리지의 규칙과 제약 조건과 동일합니다. 예를 들어 프로비저닝된 후에는 영구 스토리지 볼륨의 크기를 줄일 수 없으며 유형이 임시 인 경우 sizeLimit 값을 변경할 수 없습니다.

참고

JBOD 스토리지는 Kafka에서만 지원되며 Zoo Cryostat에서는 지원되지 않습니다.

JBOD 스토리지를 사용하려면 Kafka 리소스의 스토리지 유형 구성을 jbod 로 설정합니다. 노드 풀을 사용하는 경우 개별 노드 풀의 스토리지 구성에 jbod 를 지정할 수도 있습니다.

volumes 속성을 사용하면 JBOD 스토리지 어레이 또는 구성을 구성하는 디스크를 설명할 수 있습니다.

JBOD 스토리지 구성 예

apiVersion: kafka.strimzi.io/v1beta2
kind: Kafka
metadata:
  name: my-cluster
spec:
  kafka:
    storage:
      type: jbod
      volumes:
      - id: 0
        type: persistent-claim
        size: 100Gi
        deleteClaim: false
      - id: 1
        type: persistent-claim
        size: 100Gi
        deleteClaim: false
  # ...
Copy to Clipboard Toggle word wrap

JBOD 볼륨이 생성되면 ID를 변경할 수 없습니다. JBOD 구성에서 볼륨을 추가하거나 제거할 수 있습니다.

9.10.5.1. JBOD 스토리지용 PVC 리소스

영구 스토리지를 사용하여 JBOD 볼륨을 선언하면 다음 이름으로 PVC를 생성합니다.

data-id-cluster-name-kafka-idx
Kafka 브로커 Pod idx 의 데이터를 저장하는 데 사용되는 볼륨의 PVC입니다. id 는 Kafka 브로커 pod에 대한 데이터를 저장하는 데 사용되는 볼륨의 ID입니다.

9.10.5.2. Kafka 로그 디렉터리의 마운트 경로

JBOD 볼륨은 Kafka 브로커가 다음 경로에 마운트된 로그 디렉터리로 사용합니다.

/var/lib/kafka/data-id/kafka-logidx
Copy to Clipboard Toggle word wrap

여기서 id 는 Kafka 브로커 포드 idx 에 대한 데이터를 저장하는 데 사용되는 볼륨의 ID입니다. 예: /var/lib/kafka/data-0/kafka-log0.

KRaft 모드에서 Kafka 클러스터를 실행하는 경우 각 노드는 데이터 볼륨 중 하나에 KRaft 메타데이터 로그를 저장해야 합니다. 기본적으로 KRaft 메타데이터 로그는 ID가 가장 낮은 볼륨에 저장됩니다. 그러나 kraftMetadata 속성을 사용하여 다른 볼륨을 지정할 수 있습니다.

KRaft 메타데이터를 저장하기 위해 ID 1이 있는 볼륨을 사용하는 JBOD 스토리지 구성의 예

apiVersion: kafka.strimzi.io/v1beta2
kind: KafkaNodePool
metadata:
  name: pool-a
  # ...
spec:
  storage:
    type: jbod
    volumes:
    - id: 0
      type: persistent-claim
      size: 100Gi
      deleteClaim: false
    - id: 1
      type: persistent-claim
      size: 100Gi
      kraftMetadata: shared
      deleteClaim: false
  # ...
Copy to Clipboard Toggle word wrap

9.10.6. JBOD 스토리지에 볼륨 추가

다음 절차에서는 JBOD 스토리지를 사용하도록 구성된 Kafka 클러스터에 볼륨을 추가하는 방법을 설명합니다. 다른 스토리지 유형을 사용하도록 구성된 Kafka 클러스터에 적용할 수 없습니다.

참고

과거 및 제거된 ID 아래에 새 볼륨을 추가할 때 이전에 사용한 PersistentVolumeClaims 가 삭제되었는지 확인해야 합니다.

사전 요구 사항

  • OpenShift 클러스터
  • 실행중인 Cluster Operator
  • JBOD 스토리지가 있는 Kafka 클러스터

프로세스

  1. Kafka 리소스에서 spec.kafka.storage.volumes 속성을 편집합니다. volumes 배열에 새 볼륨을 추가합니다. 예를 들어 ID 2 를 사용하여 새 볼륨을 추가합니다.

    apiVersion: kafka.strimzi.io/v1beta2
    kind: Kafka
    metadata:
      name: my-cluster
    spec:
      kafka:
        # ...
        storage:
          type: jbod
          volumes:
          - id: 0
            type: persistent-claim
            size: 100Gi
            deleteClaim: false
          - id: 1
            type: persistent-claim
            size: 100Gi
            deleteClaim: false
          - id: 2
            type: persistent-claim
            size: 100Gi
            deleteClaim: false
        # ...
      zookeeper:
        # ...
    Copy to Clipboard Toggle word wrap
  2. 리소스를 생성하거나 업데이트합니다.

    oc apply -f <kafka_configuration_file>
    Copy to Clipboard Toggle word wrap
  3. 새 주제를 만들거나 기존 파티션을 새 디스크에 다시 할당합니다.

    작은 정보

    크루즈 컨트롤은 파티션을 다시 할당하는 효과적인 도구입니다. intra-broker 디스크 균형을 수행하려면 KafkaRebalance.spec 아래에서 rebalanceDisktrue 로 설정합니다.

9.10.7. JBOD 스토리지에서 볼륨 제거

다음 절차에서는 JBOD 스토리지를 사용하도록 구성된 Kafka 클러스터에서 볼륨을 제거하는 방법을 설명합니다. 다른 스토리지 유형을 사용하도록 구성된 Kafka 클러스터에 적용할 수 없습니다. JBOD 스토리지에는 항상 하나 이상의 볼륨이 포함되어야 합니다.

중요

데이터 손실을 방지하려면 볼륨을 제거하기 전에 모든 파티션을 이동해야 합니다.

사전 요구 사항

  • OpenShift 클러스터
  • 실행중인 Cluster Operator
  • 두 개 이상의 볼륨이 있는 JBOD 스토리지가 있는 Kafka 클러스터

프로세스

  1. 제거하려는 디스크에서 모든 파티션을 다시 할당합니다. 제거하려는 디스크에 여전히 할당된 파티션의 데이터가 손실될 수 있습니다.

    작은 정보

    kafka-reassign-partitions.sh 툴을 사용하여 파티션을 다시 할당할 수 있습니다.

  2. Kafka 리소스에서 spec.kafka.storage.volumes 속성을 편집합니다. volumes 배열에서 하나 이상의 볼륨을 제거합니다. 예를 들어 ID가 1 인 볼륨을 제거합니다.

    apiVersion: kafka.strimzi.io/v1beta2
    kind: Kafka
    metadata:
      name: my-cluster
    spec:
      kafka:
        # ...
        storage:
          type: jbod
          volumes:
          - id: 0
            type: persistent-claim
            size: 100Gi
            deleteClaim: false
        # ...
      zookeeper:
        # ...
    Copy to Clipboard Toggle word wrap
  3. 리소스를 생성하거나 업데이트합니다.

    oc apply -f <kafka_configuration_file>
    Copy to Clipboard Toggle word wrap

9.10.8. 계층화된 스토리지(주요 액세스)

계층화된 스토리지는 로그 세그먼트가 별도의 스토리지 시스템으로 이동하는 Kafka 데이터를 관리하는 유연한 접근 방식을 도입합니다. 예를 들어 자주 액세스하는 데이터를 위해 브로커에서 블록 스토리지 사용을 결합하고 데이터 접근성 및 지속성을 손상시키지 않고 블록 스토리지에서 더 비용 효율적이고 확장 가능한 원격 스토리지 솔루션으로 이전 또는 더 적은 액세스 가능한 데이터를 오프로드할 수 있습니다.

주의

계층화된 스토리지는 초기 액세스 Kafka 기능이며 AMQ Streams에서도 사용할 수 있습니다. 현재 제한 사항으로 인해 프로덕션 환경에는 권장되지 않습니다.

계층화된 스토리지에는 Kafka와 원격 스토리지 시스템 간의 통신을 처리하기 위해 Kafka의 RemoteStorageManager 인터페이스를 구현해야 하며 Kafka 리소스 구성을 통해 활성화됩니다. 사용자 정의 계층 스토리지가 활성화된 경우 AMQ Streams는 RLMM(Remote Log Metadata Management)에 Kafka의 TopicBasedRemoteLogMetadataManager 를 사용합니다. RLMM은 원격 스토리지와 관련된 메타데이터를 관리합니다.

사용자 정의 계층 스토리지를 사용하려면 다음을 수행합니다.

  • 사용자 정의 컨테이너 이미지를 빌드하여 AMQ Streams 이미지에 Kafka의 계층화된 스토리지 플러그인을 포함합니다. 플러그인은 계층화된 스토리지 솔루션과 상호 작용하기 위해 AMQ Streams에서 관리하는 Kafka 클러스터에 필요한 기능을 제공해야 합니다.
  • Kafka 리소스의 tieredStorage 속성을 사용하여 계층화된 스토리지에 Kafka 를 구성합니다. 사용자 정의 RemoteStorageManager 구현의 클래스 이름 및 경로와 추가 구성을 지정합니다.
  • 필요한 경우 RLMM 특정 계층 스토리지 구성을 지정합니다.

Kafka에 대한 사용자 정의 계층 스토리지 구성의 예

apiVersion: kafka.strimzi.io/v1beta2
kind: Kafka
metadata:
  name: my-cluster
spec:
  kafka:
    tieredStorage:
      type: custom 
1

      remoteStorageManager: 
2

        className: com.example.kafka.tiered.storage.s3.S3RemoteStorageManager
        classPath: /opt/kafka/plugins/tiered-storage-s3/*
        config:
          storage.bucket.name: my-bucket 
3

          # ...
    config:
      rlmm.config.remote.log.metadata.topic.replication.factor: 1 
4

  # ...
Copy to Clipboard Toggle word wrap

1
유형을 custom 로 설정해야 합니다.
2
클래스 이름 및 경로를 포함하여 사용자 정의 RemoteStorageManager 구현의 구성입니다.
3
AMQ Streams에 rsm.config를 자동으로 접두사로 지정하는 사용자 지정 RemoteStorageManager 구현에 전달할 구성입니다.
4
rlmm.config. 접두사가 필요한 RLMM에 전달할 계층화된 스토리지 구성입니다. 계층화된 스토리지 구성에 대한 자세한 내용은 Apache Kafka 설명서 를 참조하십시오.
맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

Theme

© 2026 Red Hat