4.5. Operator 기반 브로커 배포에 대한 리소스 제한 및 요청 구성

Operator 기반 브로커 배포를 생성할 때 배포의 브로커 Pod는 OpenShift 클러스터의 노드의 StatefulSet에서 실행됩니다. 배포에 대한 CR(사용자 정의 리소스) 인스턴스를 구성하여 각 Pod에서 실행하는 브로커 컨테이너에서 사용하는 host-node 컴퓨팅 리소스를 지정할 수 있습니다. CPU 및 메모리(RAM)에 대한 제한 및 요청 값을 지정하면 브로커 Pod의 정상적인 성능을 보장할 수 있습니다.

중요
  • CR을 처음 배포하기 전에 브로커 배포의 CR 인스턴스에 제한 및 요청에 대한 구성을 추가해야 합니다. 이미 실행 중인 브로커 배포에 구성을 추가할 수 없습니다.
  • 특정 메시징 시스템 사용 사례와 구현한 결과 아키텍처를 기반으로 하므로 Red Hat은 제한 및 요청 값을 권장할 수 없습니다. 그러나 프로덕션 환경에 맞게 구성하기 전에 개발 환경에서 이러한 값을 테스트하고 조정하는 것이 좋습니다.
  • Operator는 각 브로커 포드를 초기화할 때 Init Container 라는 컨테이너 유형을 실행합니다. 각 브로커 컨테이너에 대해 구성하는 리소스 제한 및 요청도 각 Init 컨테이너에 적용됩니다. 브로커 배포에서 Init Container 사용에 대한 자세한 내용은 4.1절. “Operator에서 브로커 구성을 생성하는 방법” 을 참조하십시오.

다음 제한 및 요청 값을 지정할 수 있습니다.

CPU 제한
Pod에서 실행 중인 각 브로커 컨테이너에 대해 이 값은 컨테이너에서 사용할 수 있는 최대 host-node CPU 양입니다. 브로커 컨테이너가 지정된 CPU 제한을 초과하려고 하면 OpenShift에서 컨테이너를 제한합니다. 이렇게 하면 노드에서 실행되는 Pod 수에 관계없이 컨테이너가 일관된 성능을 유지할 수 있습니다.
메모리 제한
Pod에서 실행 중인 각 브로커 컨테이너의 경우 이 값은 컨테이너에서 사용할 수 있는 최대 host-node 메모리 양입니다. 브로커 컨테이너가 지정된 메모리 제한을 초과하려고 하면 OpenShift에서 컨테이너를 종료합니다. 브로커 Pod가 다시 시작됩니다.
CPU 요청

Pod에서 실행 중인 각 브로커 컨테이너의 경우 이 값은 컨테이너에서 요청하는 host-node CPU의 양입니다. OpenShift 스케줄러는 포드 배치 중 CPU 요청 값을 고려하여 브로커 Pod를 충분한 컴퓨팅 리소스가 있는 노드에 바인딩하는 것으로 간주합니다.

CPU 요청 값은 브로커 컨테이너를 실행하는 데 필요한 최소 CPU 양입니다. 그러나 노드에 CPU에 대한 경합이 없는 경우 컨테이너는 사용 가능한 모든 CPU를 사용할 수 있습니다. CPU 제한을 지정한 경우 컨테이너는 해당 CPU 사용량을 초과할 수 없습니다. 노드에 CPU 경합이 있는 경우 CPU 요청 값은 OpenShift가 모든 컨테이너에서 CPU 사용량을 줄이는 방법을 제공합니다.

메모리 요청

Pod에서 실행되는 각 브로커 컨테이너의 경우 이 값은 컨테이너에서 요청하는 host-node 메모리의 양입니다. OpenShift 스케줄러는 포드 배치 중 메모리 요청 값을 고려하여 브로커 Pod를 충분한 컴퓨팅 리소스가 있는 노드에 바인딩하는 것으로 간주합니다.

memory 요청 값은 브로커 컨테이너를 실행하는 데 필요한 최소 메모리 양입니다. 그러나 컨테이너는 사용 가능한 메모리를 최대한 많이 사용할 수 있습니다. 메모리 제한을 지정한 경우 브로커 컨테이너는 메모리 사용량을 초과할 수 없습니다.

CPU는 밀리코어라는 단위로 측정됩니다. OpenShift 클러스터의 각 노드는 운영 체제를 검사하여 노드의 CPU 코어 수를 결정합니다. 그런 다음 노드는 해당 값을 1000으로 곱하여 총 용량을 표현합니다. 예를 들어 노드에 두 개의 코어가 있는 경우 노드의 CPU 용량이 2000m 으로 표시됩니다. 따라서 단일 코어의 10분의 1을 사용하려는 경우 값을 100m 로 지정합니다.

메모리는 바이트 단위로 측정됩니다. 바이트 표기법(E, P, T, G, M, K) 또는 바이너리 동등한 값(Ei, Pi, Ti, Gi, Mi, Ki)을 사용하여 값을 지정할 수 있습니다. 지정한 값은 단위를 포함해야 합니다.

4.5.1. 브로커 리소스 제한 및 요청 구성

다음 예제에서는 브로커 배포에 대한 기본 CR(사용자 정의 리소스) 인스턴스를 구성하여 배포의 Pod에서 실행되는 각 브로커 컨테이너의 CPU 및 메모리에 대한 제한 및 요청을 설정하는 방법을 보여줍니다.

중요
  • CR을 처음 배포하기 전에 브로커 배포의 CR 인스턴스에 제한 및 요청에 대한 구성을 추가해야 합니다. 이미 실행 중인 브로커 배포에 구성을 추가할 수 없습니다.
  • 특정 메시징 시스템 사용 사례와 구현한 결과 아키텍처를 기반으로 하므로 Red Hat은 제한 및 요청 값을 권장할 수 없습니다. 그러나 프로덕션 환경에 맞게 구성하기 전에 개발 환경에서 이러한 값을 테스트하고 조정하는 것이 좋습니다.

사전 요구 사항

절차

  1. 브로커 배포용 CR(사용자 정의 리소스) 인스턴스 구성을 시작합니다.

    1. OpenShift 명령줄 인터페이스 사용:

      1. 배포를 생성하는 프로젝트에 CR을 배포할 수 있는 권한이 있는 사용자로 OpenShift에 로그인합니다.

        oc login -u <user> -p <password> --server=<host:port>
      2. 다운로드 및 추출한 Operator 설치 아카이브의 deploy/crs 디렉터리에 포함된 broker_activemqartemis_cr.yaml 이라는 샘플 CR 파일을 엽니다.
    2. OpenShift Container Platform 웹 콘솔 사용:

      1. 배포를 생성하는 프로젝트에 CR을 배포할 수 있는 권한이 있는 사용자로 콘솔에 로그인합니다.
      2. 기본 브로커 CRD를 기반으로 새 CR 인스턴스를 시작합니다. 왼쪽 창에서 AdministrationCustom Resource Definitions 를 클릭합니다.
      3. ActiveMQArtemis CRD를 클릭합니다.
      4. Instances 탭을 클릭합니다.
      5. Create ActiveMQArtemis 를 클릭합니다.

        콘솔에서 YAML 편집기가 열리고 CR 인스턴스를 구성할 수 있습니다.

    기본 브로커 배포의 경우 구성은 다음과 같이 표시될 수 있습니다.

    apiVersion: broker.amq.io/v1beta1
    kind: ActiveMQArtemis
    metadata:
      name: ex-aao
      application: ex-aao-app
    spec:
      deploymentPlan:
        size: 1
        image: placeholder
        requireLogin: false
        persistenceEnabled: true
        journalType: nio
        messageMigration: true

    broker_activemqartemis_cr.yaml 샘플 CR 파일에서 image 속성이 자리 표시자 의 기본값으로 설정되어 있는지 확인합니다. 이 값은 기본적으로 image 속성이 배포에 사용할 브로커 컨테이너 이미지를 지정하지 않음을 나타냅니다. Operator에서 사용할 적절한 브로커 컨테이너 이미지를 결정하는 방법을 알아보려면 2.4절. “Operator에서 컨테이너 이미지를 선택하는 방법” 를 참조하십시오.

  2. CR의 deploymentPlan 섹션에서 resources 섹션을 추가합니다. 제한요청 섹션을 추가합니다. 각 하위 섹션에서 cpumemory 속성을 추가하고 값을 지정합니다. 예를 들면 다음과 같습니다.

    spec:
      deploymentPlan:
        size: 1
        image: placeholder
        requireLogin: false
        persistenceEnabled: true
        journalType: nio
        messageMigration: true
        resources:
          limits:
            cpu: "500m"
            memory: "1024M"
          requests:
            cpu: "250m"
            memory: "512M"
    limits.cpu
    배포의 Pod에서 실행 중인 각 브로커 컨테이너는 이 양의 host-node CPU 사용량을 초과할 수 없습니다.
    limits.memory
    배포의 Pod에서 실행 중인 각 브로커 컨테이너는 이 양의 host-node 메모리 사용량을 초과할 수 없습니다.
    requests.cpu
    배포의 Pod에서 실행 중인 각 브로커는 이 양의 host-node CPU를 요청합니다. 이 값은 브로커 컨테이너를 실행하는 데 필요한 최소 CPU 양입니다.
    requests.memory
    배포의 Pod에서 실행 중인 각 브로커에서는 이 양의 host-node 메모리를 요청합니다. 이 값은 브로커 컨테이너를 실행하는 데 필요한 최소 메모리 양입니다.
  3. CR 인스턴스를 배포합니다.

    1. OpenShift 명령줄 인터페이스 사용:

      1. CR 파일을 저장합니다.
      2. 브로커 배포를 생성하는 프로젝트로 전환합니다.

        $ oc project <project_name>
      3. CR 인스턴스를 생성합니다.

        $ oc create -f <path/to/custom_resource_instance>.yaml
    2. OpenShift 웹 콘솔 사용:

      1. CR 구성을 마쳤으면 생성을 클릭합니다.