Pacemaker가 실패한 경우 SystemD 리소스를 '중지' 상태로 두는 대신 계속 다시 시작하도록 하려면 어떻게 해야 하나요?

Pacemaker가 실패한 경우 SystemD 리소스를 '중지' 상태로 두는 대신 계속 다시 시작하도록 하려면 어떻게 해야 하나요?

내 목표는 가상 IP(VIP)를 사용하여 2개 노드 HTTP 로드 밸런서를 구현하는 것입니다. 이 작업을 위해 나는 pacemaker(가상 IP 스위칭)을 선택했고캐디HTTP 로드 밸런서용. 로드 밸런서 선택은 이 질문의 요점이 아닙니다. :)

내 요구 사항은 간단합니다. 정상적으로 작동하는 Caddy 인스턴스가 실행되고 있는 호스트에 가상 IP를 할당하고 싶습니다.

Pacemaker를 사용하여 구현한 방법은 다음과 같습니다.

# Disable stonith feature
pcs property set stonith-enabled=false

# Ignore quorum policy
pcs property set no-quorum-policy=ignore

# Setup virtual IP
pcs resource create ClusterIP ocf:heartbeat:IPaddr2 ip=123.123.123.123

# Setup caddy resource, using SystemD provider. By default it runs on one instance at a time, so clone it and cloned one by default runs on all nodes at the same time.
# https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/6/html/configuring_the_red_hat_high_availability_add-on_with_pacemaker/ch-advancedresource-haar
pcs resource create caddy systemd:caddy clone

# Enable constraint, so both VirtualIP assigned and application running _on the same_ node.
pcs constraint colocation add ClusterIP with caddy-clone INFINITY

그러나 가상 IP가 할당된 노드에 SSH를 통해 연결하면 Caddy 구성 파일이 잘못 구성되어 수행됩니다. systemctl restart caddy잠시 후 Pacemaker가 캐디 시작 실패를 감지하고 간단히 stopped상태로 설정합니다.

Pacemaker가 SystemD 리소스를 상태로 전환하는 대신 계속 다시 시작하도록 하려면 어떻게 해야 합니까 stopped?

스크린샷1

게다가 구성 파일을 수정하고 실행하면 systemctl restart caddy시작되지만 페이스메이커는 계속해서 stopped상태를 유지합니다.

그리고 무엇보다도 다른 노드를 중지하면 다음과 같은 이유로 가상 IP가 어디에도 할당되지 않습니다.

# Enable constraint, so both VirtualIP assigned and application running _on the same_ node.
pcs constraint colocation add ClusterIP with caddy-clone INFINITY

누군가 내가 잘못하고 있는 일의 올바른 방향을 알려줄 수 있습니까?

답변1

Pacemaker에서 특정 오류는 치명적인 것으로 간주되며 오류가 발생하면 수동으로 정리해야 합니다(실패한 노드를 펜싱하여 정리하는 노드 수준 펜싱을 구성하지 않은 경우).

start작업 실패가 치명적이지 않다는 것을 Pacemaker에 알려야 합니다 . 또한 일반적으로 펜싱 없이 클러스터에서 몇 초 후에 작업 실패를 자동으로 정리하는 실패 시간 초과를 설정합니다.

pcs property set start-failure-is-fatal=false
pcs property set failure-timeout=300    

관련 정보