4.7. Operator 기반 브로커 배포에 대한 리소스 제한 및 요청 구성
Operator 기반 브로커 배포를 생성할 때 배포의 브로커 Pod는 OpenShift 클러스터의 노드의 StatefulSet에서 실행됩니다. 배포에 대해 사용자 정의 리소스(CR) 인스턴스를 구성하여 각 Pod에서 실행되는 브로커 컨테이너에서 사용하는 host-node 컴퓨팅 리소스를 지정할 수 있습니다. CPU 및 메모리(RAM)에 대한 제한 및 요청 값을 지정하면 브로커 Pod의 안정성을 보장할 수 있습니다.
- CR을 처음 배포하기 전에 브로커 배포의 CR 인스턴스에 제한 및 요청에 대한 구성을 추가해야 합니다. 이미 실행 중인 브로커 배포에 구성을 추가할 수 없습니다.
- Red Hat은 특정 메시징 시스템 사용 사례와 구현한 결과 아키텍처를 기반으로 하므로 제한 및 요청에 대한 값을 권장할 수 없습니다. 그러나 프로덕션 환경에 맞게 구성하기 전에 개발 환경에서 이러한 값을 테스트하고 조정하는 것이 좋습니다.
- Operator는 각 브로커 Pod를 시작할 때 Init Container 라는 컨테이너 유형을 실행합니다. 각 브로커 컨테이너에 대해 구성하는 모든 리소스 제한 및 요청은 각 Init Container에도 적용됩니다. 브로커 배포에서 Init Container 사용에 대한 자세한 내용은 4.1절. “Operator에서 브로커 구성을 생성하는 방법” 을 참조하십시오.
다음 제한 및 요청 값을 지정할 수 있습니다.
CPU 제한- Pod에서 실행되는 각 브로커 컨테이너의 경우 이 값은 컨테이너에서 사용할 수 있는 최대 호스트 노드 CPU 양입니다. 브로커 컨테이너가 지정된 CPU 제한을 초과하려고 하면 OpenShift에서 컨테이너를 제한합니다. 이렇게 하면 노드에서 실행되는 Pod 수에 관계없이 컨테이너의 성능이 일관되게 유지됩니다.
메모리 제한- Pod에서 실행되는 각 브로커 컨테이너의 경우 이 값은 컨테이너에서 사용할 수 있는 최대 호스트 노드 메모리 양입니다. 브로커 컨테이너가 지정된 메모리 제한을 초과하려고 하면 OpenShift에서 컨테이너를 종료합니다. 브로커 Pod가 다시 시작됩니다.
CPU 요청Pod에서 실행되는 각 브로커 컨테이너의 경우 이 값은 컨테이너가 요청하는 호스트 노드 CPU의 양입니다. OpenShift 스케줄러는 포드 배치 중에 CPU 요청 값을 고려하여 충분한 컴퓨팅 리소스가 있는 노드에 브로커 Pod를 바인딩합니다.
CPU 요청 값은 브로커 컨테이너를 실행하는 데 필요한 최소 CPU 양입니다. 그러나 노드에 CPU에 대한 경합이 없는 경우 컨테이너에서 사용 가능한 모든 CPU를 사용할 수 있습니다. CPU 제한을 지정한 경우 컨테이너가 해당 CPU 사용량을 초과할 수 없습니다. 노드에 CPU 경합이 있는 경우 CPU 요청 값은 OpenShift가 모든 컨테이너의 CPU 사용량을 평가할 수 있는 방법을 제공합니다.
메모리 요청Pod에서 실행되는 각 브로커 컨테이너의 경우 이 값은 컨테이너에서 요청하는 호스트 노드 메모리 양입니다. OpenShift 스케줄러는 포드 배치 중에 메모리 요청 값을 고려하여 충분한 컴퓨팅 리소스가 있는 노드에 브로커 Pod를 바인딩합니다.
메모리 요청 값은 브로커 컨테이너를 실행하는 데 필요한 최소 메모리 양입니다. 그러나 컨테이너는 가능한 한 많은 사용 가능한 메모리를 사용할 수 있습니다. 메모리 제한을 지정한 경우 브로커 컨테이너는 해당 메모리 사용량을 초과할 수 없습니다.
CPU는 밀리코어라는 단위로 측정됩니다. OpenShift 클러스터의 각 노드는 운영 체제를 검사하여 노드의 CPU 코어 수를 확인합니다. 그런 다음 노드는 해당 값을 1000으로 곱하여 총 용량을 표현합니다. 예를 들어 노드에 두 개의 코어가 있는 경우 노드의 CPU 용량은 2000m 로 표시됩니다. 따라서 단일 코어의 1/10을 사용하려면 100m 값을 지정합니다.
메모리는 바이트 단위로 측정됩니다. 바이트 표기법 (E, P, T, G, M, K) 또는 바이너리 동등한 값 (Ei, Pi, Ti, Gi, Mi, Ki)을 사용하여 값을 지정할 수 있습니다. 지정한 값에 단위가 포함되어야 합니다.
4.7.1. 브로커 리소스 제한 및 요청 구성 링크 복사링크가 클립보드에 복사되었습니다!
다음 예는 배포의 Pod에서 실행되는 각 브로커 컨테이너의 CPU 및 메모리에 대한 제한 및 요청을 설정하기 위해 브로커 배포에 대한 기본 CR(사용자 정의 리소스) 인스턴스를 구성하는 방법을 보여줍니다.
- 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 spec: deploymentPlan: size: 1 image: placeholder requireLogin: false persistenceEnabled: true journalType: nio messageMigration: truebroker_activemqartemis_cr.yaml샘플 CR 파일에서image속성이자리 표시자의 기본값으로 설정되어 있는지 확인합니다. 이 값은 기본적으로image속성이 배포에 사용할 브로커 컨테이너 이미지를 지정하지 않음을 나타냅니다. Operator에서 사용할 적절한 브로커 컨테이너 이미지를 결정하는 방법을 알아보려면 2.7절. “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에서 실행되는 각 브로커 컨테이너는 이 양의 호스트 노드 CPU 사용량을 초과할 수 없습니다.
limits.memory- 배포에서 Pod에서 실행되는 각 브로커 컨테이너는 이 양의 호스트 노드 메모리 사용량을 초과할 수 없습니다.
requests.cpu- 배포의 Pod에서 실행되는 각 브로커 컨테이너는 이 양의 host-node CPU를 요청합니다. 이 값은 브로커 컨테이너를 실행하는 데 필요한 최소 CPU 양입니다.
requests.memory배포의 Pod에서 실행되는 각 브로커 컨테이너는 이 양의 호스트 노드 메모리를 요청합니다. 이 값은 브로커 컨테이너를 실행하는 데 필요한 최소 메모리 양입니다.
참고리소스에 대한
제한을지정하고요청을지정하지 않으면 브로커 컨테이너에서 해당 리소스에 대해 구성된제한값을 요청합니다. 예를 들어 다음 구성에서 브로커 컨테이너는500mcpu 및1024M메모리의 구성된제한값을 요청합니다.spec: deploymentPlan: size: 3 ... resources: limits: cpu: "500m" memory: "1024M"중요요청된 메모리 및 CPU의 정확한 양을 제어하고 배포에 여러 브로커가 있는 경우 각 브로커 컨테이너에 동일한 값이 요청되도록
요청을설정하지 않고제한을설정합니다.
CR 인스턴스를 배포합니다.
OpenShift 명령줄 인터페이스 사용:
- CR 파일을 저장합니다.
브로커 배포를 생성하는 프로젝트로 전환합니다.
$ oc project <project_name>CR 인스턴스를 생성합니다.
$ oc create -f <path/to/custom_resource_instance>.yaml
OpenShift 웹 콘솔 사용:
- CR 구성을 완료하면 생성 을 클릭합니다.