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은 제한 및 요청 값을 권장할 수 없습니다. 그러나 프로덕션 환경에 맞게 구성하기 전에 개발 환경에서 이러한 값을 테스트하고 조정하는 것이 좋습니다.
사전 요구 사항
- CR 인스턴스를 사용하여 기본 브로커 배포를 생성하는 방법에 대해 잘 알고 있어야 합니다. 3.4.1절. “기본 브로커 인스턴스 배포”을 참조하십시오.
절차
브로커 배포용 CR(사용자 정의 리소스) 인스턴스 구성을 시작합니다.
OpenShift 명령줄 인터페이스 사용:
배포를 생성하는 프로젝트에 CR을 배포할 수 있는 권한이 있는 사용자로 OpenShift에 로그인합니다.
oc login -u <user> -p <password> --server=<host:port>
-
다운로드 및 추출한 Operator 설치 아카이브의
deploy/crs
디렉터리에 포함된broker_activemqartemis_cr.yaml
이라는 샘플 CR 파일을 엽니다.
OpenShift Container Platform 웹 콘솔 사용:
- 배포를 생성하는 프로젝트에 CR을 배포할 수 있는 권한이 있는 사용자로 콘솔에 로그인합니다.
-
기본 브로커 CRD를 기반으로 새 CR 인스턴스를 시작합니다. 왼쪽 창에서
를 클릭합니다. - ActiveMQArtemis CRD를 클릭합니다.
- Instances 탭을 클릭합니다.
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에서 컨테이너 이미지를 선택하는 방법” 를 참조하십시오.CR의
deploymentPlan
섹션에서resources
섹션을 추가합니다.제한
및요청
섹션을 추가합니다. 각 하위 섹션에서cpu
및memory
속성을 추가하고 값을 지정합니다. 예를 들면 다음과 같습니다.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 메모리를 요청합니다. 이 값은 브로커 컨테이너를 실행하는 데 필요한 최소 메모리 양입니다.
CR 인스턴스를 배포합니다.
OpenShift 명령줄 인터페이스 사용:
- CR 파일을 저장합니다.
브로커 배포를 생성하는 프로젝트로 전환합니다.
$ oc project <project_name>
CR 인스턴스를 생성합니다.
$ oc create -f <path/to/custom_resource_instance>.yaml
OpenShift 웹 콘솔 사용:
- CR 구성을 마쳤으면 생성을 클릭합니다.