Red Hat Training

A Red Hat training course is available for RHEL 8

28.7. 클러스터 경고 에이전트 작성

Pacemaker 클러스터 경고에는 노드 경고, 펜싱 경고, 리소스 경고 등 세 가지 유형이 있습니다. 경고 에이전트에 전달되는 환경 변수는 경고 유형에 따라 다를 수 있습니다. 다음 표는 경고 에이전트에 전달되는 환경 변수를 설명하고 환경 변수가 특정 경고 유형과 연결된 시기를 지정합니다.

표 28.2. 경고 에이전트에 전달된 환경 변수

환경 변수설명

CRM_alert_kind

경고 유형(노드, 펜싱 또는 리소스)

CRM_alert_version

경고를 전송하는 Pacemaker의 버전

CRM_alert_recipient

구성된 수신자

CRM_alert_node_sequence

Pacemaker에서 경고를 발행한 순서를 참조하는 데 사용할 수 있는 로컬 노드에서 경고를 실행할 때마다 시퀀스 번호가 증가합니다. 시간 내에 안정적으로 발생한 이벤트에 대한 경고는 이전 이벤트에 대한 경고보다 높은 시퀀스 번호를 갖습니다. 이 번호에는 클러스터 전체에 의미가 없습니다.

CRM_alert_timestamp

timestamp -format meta 옵션에 지정된 형식으로 에이전트를 실행하기 전에 생성된 타임스탬프 입니다. 이를 통해 에이전트는 에이전트 자체를 호출할 때(시스템 부하 또는 기타 상황으로 인해 잠재적으로 지연될 수 있음)에 관계없이 이벤트가 발생한 경우 안정적으로 높은 수준의 해석 시간을 가질 수 있습니다.

CRM_alert_node

영향을 받는 노드 이름

CRM_alert_desc

이벤트에 대한 세부 정보. 노드 경고의 경우 노드의 현재 상태(메모리 또는 손실)입니다. 펜싱 경고의 경우 원본, 대상, 펜싱 작업 오류 코드를 포함하여 요청된 펜싱 작업에 대한 요약입니다(있는 경우). 리소스 경고의 경우 CRM_alert_status 와 동일한 읽기 가능한 문자열입니다.

CRM_alert_nodeid

상태가 변경된 노드의 ID(노드 알림만 제공)

CRM_alert_task

요청된 펜싱 또는 리소스 작업( 펜싱 및 리소스 경고만 제공)

CRM_alert_rc

펜싱 또는 리소스 작업의 숫자 반환 코드( 펜싱 및 리소스 경고만 제공)

CRM_alert_rsc

영향을 받는 리소스의 이름(리소스 경고만 해당)

CRM_alert_interval

리소스 작업 간격(리소스 경고만 해당)

CRM_alert_target_rc

작업의 예상 숫자 반환 코드 (리소스 경고만 해당)

CRM_alert_status

Pacemaker에서 작업 결과를 나타내는 데 사용하는 숫자 코드(리소스 경고만 해당)

경고 에이전트를 작성할 때 다음과 같은 우려 사항을 고려해야 합니다.

  • 경고 에이전트는 수신자 없이 호출될 수 있으므로(아직 구성되지 않은 경우) 에이전트는 이 상황에서만 종료하더라도 이 상황을 처리할 수 있어야 합니다. 사용자는 단계에서 구성을 수정하고 나중에 수신자를 추가할 수 있습니다.
  • 경고에 대해 두 개 이상의 수신자가 구성된 경우 경고 에이전트는 수신자당 한 번 호출됩니다. 에이전트를 동시에 실행할 수 없는 경우 단일 수신자만 사용하여 구성해야 합니다. 그러나 에이전트는 수신자를 목록으로 해석하는 것은 무료입니다.
  • 클러스터 이벤트가 발생하면 모든 경고가 별도의 프로세스와 동시에 꺼집니다. 구성된 경고 및 수신자 수와 경고 에이전트 내에서 수행되는 작업에 따라 중요한 부하 버스트가 발생할 수 있습니다. 에이전트는 이를 직접 실행하는 대신 리소스 집약적인 작업을 다른 인스턴스에 대기열에 두는 등 고려할 수 있도록 작성할 수 있습니다.
  • 경고 에이전트는 최소한의 권한 집합이 있는 hacluster 사용자로 실행됩니다. 에이전트에 추가 권한이 필요한 경우 에이전트가 적절한 권한이 있는 다른 사용자로 필요한 명령을 실행할 수 있도록 sudo 를 구성하는 것이 좋습니다.
  • CRM_alert_ timestamp(사용자 구성 타임스탬프 형식에 의해 지정된 콘텐츠가 지정된 경우), CRM_alert_ recipient 및 모든 경고 옵션과 같이 사용자가 구성된 매개 변수를 확인하고 삭제해야 합니다. 이는 구성 오류로부터 보호하는 데 필요합니다. 또한 일부 사용자가 클러스터 노드에 hacluster-level 액세스 없이 CIB를 수정할 수 있는 경우 이는 잠재적인 보안 문제이며 코드 삽입 가능성을 피해야 합니다.
  • 클러스터에 on-fail 매개 변수가 fence 로 설정된 작업이 포함된 리소스가 포함된 경우 실패 시 여러 펜스 알림이 발생하며, 각 리소스에는 이 매개 변수가 설정된 각 리소스에 하나의 추가 알림이 추가됩니다. pacemaker-fencedpacemaker-controld 모두 알림을 보냅니다. Pacemaker는 알림 수에 관계없이 이 경우 하나의 실제 펜스 작업만 수행합니다.
참고

경고 인터페이스는 ocf:pacemaker:ClusterMon 리소스에서 사용하는 외부 스크립트 인터페이스와 역호환되도록 설계되었습니다. 이 호환성을 유지하기 위해 경고 에이전트에 전달된 환경 변수를 CRM_notify_ 및 CRM_ alert_ 로 앞에 추가할 수 있습니다. 호환성이 한 가지 단점은 ClusterMon 리소스가 root 사용자로 외부 스크립트를 실행하는 반면 경고 에이전트가 hacluster 사용자로 실행된다는 것입니다.