28.7. 클러스터 경고 에이전트 작성
Pacemaker 클러스터 경고에는 노드 경고, 펜싱 경고, 리소스 경고 등 세 가지 유형이 있습니다. 경고 에이전트에 전달되는 환경 변수는 경고 유형에 따라 다를 수 있습니다. 다음 표는 경고 에이전트에 전달되는 환경 변수를 설명하고 환경 변수가 특정 경고 유형과 연결된 시기를 지정합니다.
환경 변수 | 설명 |
---|---|
| 경고 유형(노드, 펜싱 또는 리소스) |
| 경고를 전송하는 Pacemaker의 버전 |
| 구성된 수신자 |
| Pacemaker에서 경고를 발행한 순서를 참조하는 데 사용할 수 있는 로컬 노드에서 경고를 실행할 때마다 시퀀스 번호가 증가합니다. 시간 내에 안정적으로 발생한 이벤트에 대한 경고는 이전 이벤트에 대한 경고보다 높은 시퀀스 번호를 갖습니다. 이 번호에는 클러스터 전체에 의미가 없습니다. |
|
timestamp |
| 영향을 받는 노드 이름 |
|
이벤트에 대한 세부 정보. 노드 경고의 경우 노드의 현재 상태(메모리 또는 손실)입니다. 펜싱 경고의 경우 원본, 대상, 펜싱 작업 오류 코드를 포함하여 요청된 펜싱 작업에 대한 요약입니다(있는 경우). 리소스 경고의 경우 |
| 상태가 변경된 노드의 ID(노드 알림만 제공) |
| 요청된 펜싱 또는 리소스 작업( 펜싱 및 리소스 경고만 제공) |
| 펜싱 또는 리소스 작업의 숫자 반환 코드( 펜싱 및 리소스 경고만 제공) |
| 영향을 받는 리소스의 이름(리소스 경고만 해당) |
| 리소스 작업 간격(리소스 경고만 해당) |
| 작업의 예상 숫자 반환 코드 (리소스 경고만 해당) |
| Pacemaker에서 작업 결과를 나타내는 데 사용하는 숫자 코드(리소스 경고만 해당) |
경고 에이전트를 작성할 때 다음과 같은 우려 사항을 고려해야 합니다.
- 경고 에이전트는 수신자 없이 호출될 수 있으므로(아직 구성되지 않은 경우) 에이전트는 이 상황에서만 종료하더라도 이 상황을 처리할 수 있어야 합니다. 사용자는 단계에서 구성을 수정하고 나중에 수신자를 추가할 수 있습니다.
- 경고에 대해 두 개 이상의 수신자가 구성된 경우 경고 에이전트는 수신자당 한 번 호출됩니다. 에이전트를 동시에 실행할 수 없는 경우 단일 수신자만 사용하여 구성해야 합니다. 그러나 에이전트는 수신자를 목록으로 해석하는 것은 무료입니다.
- 클러스터 이벤트가 발생하면 모든 경고가 별도의 프로세스와 동시에 꺼집니다. 구성된 경고 및 수신자 수와 경고 에이전트 내에서 수행되는 작업에 따라 중요한 부하 버스트가 발생할 수 있습니다. 에이전트는 이를 직접 실행하는 대신 리소스 집약적인 작업을 다른 인스턴스에 대기열에 두는 등 고려할 수 있도록 작성할 수 있습니다.
-
경고 에이전트는 최소한의 권한 집합이 있는
hacluster
사용자로 실행됩니다. 에이전트에 추가 권한이 필요한 경우 에이전트가 적절한 권한이 있는 다른 사용자로 필요한 명령을 실행할 수 있도록sudo
를 구성하는 것이 좋습니다. -
CRM_alert_
timestamp(사용자 구성
및 모든 경고 옵션과 같이 사용자가 구성된 매개 변수를 확인하고 삭제해야 합니다. 이는 구성 오류로부터 보호하는 데 필요합니다. 또한 일부 사용자가 클러스터 노드에타임스탬프 형식에 의해 지정된 콘텐츠가 지정된 경우),
CRM_alert_
recipienthacluster
-level 액세스 없이 CIB를 수정할 수 있는 경우 이는 잠재적인 보안 문제이며 코드 삽입 가능성을 피해야 합니다. -
클러스터에
on-fail
매개 변수가fence
로 설정된 작업이 포함된 리소스가 포함된 경우 실패 시 여러 펜스 알림이 발생하며, 각 리소스에는 이 매개 변수가 설정된 각 리소스에 하나의 추가 알림이 추가됩니다.pacemaker-fenced
와pacemaker-controld
모두 알림을 보냅니다. Pacemaker는 알림 수에 관계없이 이 경우 하나의 실제 펜스 작업만 수행합니다.
경고 인터페이스는 ocf:pacemaker:ClusterMon
리소스에서 사용하는 외부 스크립트 인터페이스와 역호환되도록 설계되었습니다. 이 호환성을 유지하기 위해 경고 에이전트에 전달된 환경 변수를 CRM_notify_ 및 CRM_
로 앞에 추가할 수 있습니다. 호환성이 한 가지 단점은 alert_
ClusterMon
리소스가 root 사용자로 외부 스크립트를 실행하는 반면 경고 에이전트가 hacluster
사용자로 실행된다는 것입니다.