RHEL 6.9에 2노드 클러스터가 있습니다. /etc/init.d/myApplication
호출할 서비스에서 생성된 쉘 스크립트를 통해 시작하는 애플리케이션을 생성하는 데 문제가 있다는 점을 제외하고 모든 것이 구성되었습니다."내 응용 프로그램". 그 앱에서 pcs resource create myApp lsb:myApp op monitor interval=30s op start on-fail=standby
나는 이 세트를 사용하기 시작했지만 업무용입니다. 필요한 것은 이 애플리케이션이 수동으로 시작되어야 하기 때문에 두 노드에서 동시에 시작하는 것입니다. 따라서 첫 번째 노드가 실패하면 패시브 노드에서 아직 활성화되지 않은 경우 개입이 필요합니다.
두 가지 다른 서비스가 있습니다.
- VirtIP (ocf:heartbeat:IPaddr2)
애플리케이션 서버에 서비스 IP 제공
- Cron (lsb:crond)
애플리케이션 파일 동기화(공유 저장소를 사용하지 않음)
myApp에 호스팅하여 VirtIP와 Cron을 종속성으로 사용하고 있습니다.
마스터/슬레이브와 복제를 모두 시도했지만 해당 구성에 대해 뭔가를 놓친 것 같습니다. 애플리케이션을 오프라인으로 전환하면 Pacemaker는 서비스가 다운된 것을 감지하지 못하고 pcs status
myApp이 노드(또는 내 구성에 따라 노드)에서 계속 실행 중이라고 출력합니다. 또한 때때로 패시브 노드의 페이스메이커에 의해 애플리케이션을 실행하는 서비스가 중지되는 문제가 발생합니다.
어떤 방식으로 구성해야 합니까? RHEL 문서를 읽었지만 여전히 멈췄습니다. myApp 서비스가 실패할 경우 맥박 조정기가 장애 조치를 시작하도록 하려면 어떻게 해야 합니까? 어떤 경우에는 서비스가 중지되었음을 감지하지 못하는 이유를 모르겠습니다.
편집: 따라서 테스트 목적으로 시작/다시 시작에 대한 암호 요구 사항을 제거하고 서비스가 정상적으로 시작/다시 시작되었으며 관리되는 종속 리소스가 예상대로 중지/시작되었습니다. 하지만 myApp 서비스를 중지하면 중지된 리소스로 반영되지 않고 시작된 노드 1에만 유지됩니다. 마찬가지로 노드 1을 대기 상태로 전환하여 장애 조치를 시뮬레이션하면 노드 1의 모든 리소스만 중지됩니다.
답변1
내 생각엔 쉘/초기화 스크립트가 올바른 반환 코드를 반환하지 않는 것 같습니다. Pacemaker가 init 스크립트와 잘 작동하려면 init 스크립트가 LSB와 완전히 호환되어야 합니다. 여기에서 호환성 검사를 통해 init 스크립트를 실행하십시오.http://www.linux-ha.org/wiki/LSB_Resource_Agents
귀하의 스크립트가 0을 반환해서는 안 되는데 0을 반환하는 것 같습니다.
답변2
나는 이 문제에 직면했습니다. 컴퓨터는 리소스의 상태가 더 이상 좋지 않을 때 이를 인식할 수 없습니다. 이 문서에서는 "시작됨" 및 "중지됨" 상태를 확인하도록 구성하는 방법이 있는 것으로 보입니다.
Pacemaker는 처음으로 리소스를 시작할 때 일회성 모니터링 작업(프로브라고 함)을 실행하여 리소스가 있어야 할 곳에서 실행되고 있으면 안 되는 곳에서 실행되고 있는지 확인합니다. (이 동작은 리소스 검색 위치 제약 조건 속성의 영향을 받을 수 있습니다.) 이러한 초기 프로브 외에 Pacemaker는 기본적으로 리소스가 계속 정상 상태인지 여부를 확인하지 않습니다. 이러한 검사를 수행하려면 모니터 작업을 명시적으로 구성해야 합니다.
지속적인 모니터링을 위해 리소스를 구성하는 방법은 다음과 같습니다.
pcs resource update CoreVIP op monitor interval=60s OCF_CHECK_LEVEL=5 role=Started
pcs resource update CoreVIP op monitor interval=61s OCF_CHECK_LEVEL=5 role=Stopped