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

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

표 28.2. 경고 에이전트로 전달되는 환경 변수

환경 변수설명

CRM_alert_kind

경고 유형(node, fencing 또는 resource)

CRM_alert_version

경고를 전송하는 Pacemaker 버전

CRM_alert_recipient

구성된 수신자

CRM_alert_node_sequence

로컬 노드에서 경고를 발행할 때마다 시퀀스 번호가 증가했으며, 이는 Pacemaker에서 경보를 발행한 순서를 참조하는 데 사용할 수 있습니다. 나중에 발생한 이벤트에 대한 경고는 이전 이벤트에 대한 경고보다 시퀀스 번호가 더 높습니다. 이 숫자에는 클러스터 전체의 의미가 없습니다.

CRM_alert_timestamp

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

CRM_alert_node

영향을 받는 노드의 이름

CRM_alert_desc

이벤트에 대한 세부 정보입니다. 노드 경고의 경우 노드의 현재 상태(member 또는 lost)입니다. 펜싱 경고의 경우, 해당하는 경우 origin, target 및 fencing 작업 오류 코드를 포함하여 요청된 펜싱 작업에 대한 요약입니다. 리소스 경고의 경우 이 문자열은 Gantt_ alert_status 와 동일한 읽기 가능한 문자열입니다.

CRM_alert_nodeid

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

CRM_alert_task

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

CRM_alert_rc

수치에는 펜싱 또는 리소스 작업의 반환 코드 ( fencing 및 리소스 경고만 제공)

CRM_alert_rsc

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

CRM_alert_interval

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

CRM_alert_target_rc

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

CRM_alert_status

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

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

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

경고 인터페이스는 ocf:pacemaker:ClusterMon 리소스에서 사용하는 외부 스크립트 인터페이스와 역호환되도록 설계되었습니다. 이 호환성을 유지하기 위해 경고 에이전트에 전달된 환경 변수는 CRM_notify_CRM_alert_ 앞에 제공됩니다. 호환성의 한 가지 중단은 ClusterMon 리소스가 root 사용자로 외부 스크립트를 실행했지만 경고 에이전트는 hacluster 사용자로 실행된다는 것입니다.