29장. 고가용성
29.1. 개요
이 주제에서는 OpenShift Container Platform 클러스터에서 Pod 및 서비스에 대한 고가용성 설정을 설명합니다.
IP 페일오버는 노드 집합에서 VIP(가상 IP) 주소 풀을 관리합니다. 세트의 모든 VIP는 세트에서 선택한 노드에서 서비스를 제공합니다. 단일 노드를 사용할 수 있는 경우 VIP가 제공됩니다. 노드에 VIP를 명시적으로 배포할 방법은 없으므로 VIP가 없는 노드와 VIP가 많은 기타 노드가 있을 수 있습니다. 노드가 하나만 있는 경우 모든 VIP가 노드에 있게 됩니다.
VIP는 클러스터 외부에서 라우팅할 수 있어야 합니다.
IP 페일오버는 각 VIP의 포트를 모니터링하여 노드에서 포트에 연결할 수 있는지 확인합니다. 포트에 연결할 수 없는 경우 VIP가 노드에 할당되지 않습니다. 포트를 0
으로 설정하면 이 검사가 비활성화됩니다. 검사 스크립트는 필요한 테스트를 수행합니다.
IP 페일오버 는 Keepalived 를 사용하여 호스트 집합에서 외부 액세스가 가능한 VIP 주소 집합을 호스팅합니다. 각 VIP는 한 번에 하나의 호스트에서만 서비스를 제공합니다. keepalived는 VRRP 프로토콜을 사용하여 어떤 VIP를 서비스할 호스트(호스트 집합)를 결정합니다. 호스트를 사용할 수 없게 되거나 Keepalived 서비스가 응답하지 않는 경우 VIP가 세트의 다른 호스트로 전환됩니다. 따라서 호스트를 사용할 수 있는 한 VIP는 항상 서비스를 제공합니다.
Keepalived 를 실행하는 호스트가 검사 스크립트를 통과하면 선점 전략에 따라 호스트가 우선 순위 및 현재 MASTER 의 우선 순위에 따라 MASTER 상태가 될 수 있습니다.
관리자는 상태가 변경될 때마다 호출되는 --notify-script=
옵션을 통해 스크립트를 제공할 수 있습니다. keepalived는 VIP를 서비스하는 경우, 다른 노드가 VIP를 서비스하는 경우 BACKUP 상태이거나 검사 스크립트가 실패할 때 in FAULT'상태인 경우 Keepalived는 MASTER 상태입니다. 알림 스크립트는 상태가 변경될 때마다 새 상태로 호출됩니다.
OpenShift Container Platform은 oc adm ipfailover
명령을 실행하여 IP 페일오버 배포 구성 생성을 지원합니다. IP 장애 조치 배포 구성은 VIP 주소 집합과 서비스할 노드 집합을 지정합니다. 클러스터에는 고유한 VIP 주소 집합을 관리할 때마다 여러 IP 페일오버 배포 구성이 있을 수 있습니다. IP 페일오버 구성의 각 노드는 IP 페일오버 Pod를 실행하며 이 Pod 는 Keepalived 를 실행합니다.
VIP를 사용하여 호스트 네트워킹(예: 라우터)이 있는 Pod에 액세스하는 경우 애플리케이션 포드는 ipfailover Pod를 실행하는 모든 노드에서 실행되어야 합니다. 이렇게 하면 모든 ipfailover 노드가 마스터가 되고 필요한 경우 VIP에 서비스를 제공할 수 있습니다. ipfailover가 있는 모든 노드에서 애플리케이션 Pod가 실행 중이 아닌 경우 일부 ipfailover 노드는 VIP를 서비스하지 않거나 일부 애플리케이션 Pod는 트래픽을 수신하지 않습니다. 이러한 불일치를 방지하려면 ipfailover 및 애플리케이션 포드 모두에 동일한 선택기 및 복제 수를 사용합니다.
VIP를 사용하여 서비스에 액세스하는 동안 애플리케이션 포드가 실행 중인 위치와 상관없이 모든 노드에서 서비스에 연결할 수 있으므로 모든 노드가 ipfailover 노드 세트에 있을 수 있습니다. 언제든지 ipfailover 노드가 마스터가 될 수 있습니다. 서비스는 외부 IP와 서비스 포트를 사용하거나 nodePort를 사용할 수 있습니다.
서비스 정의에서 외부 IP를 사용하는 경우 VIP가 외부 IP로 설정되고 ipfailover 모니터링 포트가 서비스 포트로 설정됩니다. nodePort는 클러스터의 모든 노드에서 열려 있으며 서비스는 현재 VIP를 지원하는 노드에서 트래픽의 부하를 분산합니다. 이 경우 서비스 정의에서 ipfailover 모니터링 포트가 nodePort로 설정됩니다.
nodePort 설정은 권한 있는 작업입니다.
서비스 VIP를 사용할 수 있지만 성능은 여전히 영향을 받을 수 있습니다. keepalived 는 각 VIP가 구성의 일부 노드에서 서비스를 제공하고, 다른 노드에 없는 경우에도 여러 VIP가 동일한 노드에 표시될 수 있습니다. ipfailover가 동일한 노드에 여러 VIP를 배치하면 일련의 VIP에 외부 로드 밸런싱이 중단될 수 있습니다.
ingressIP를 사용하는 경우 ipfailover를 ingressIP 범위와 동일한 VIP 범위를 갖도록 설정할 수 있습니다. 모니터링 포트를 비활성화할 수도 있습니다. 이 경우 모든 VIP가 클러스터의 동일한 노드에 표시됩니다. 모든 사용자는 ingressIP를 사용하여 서비스를 설정하고 고가용성으로 설정할 수 있습니다.
클러스터에는 최대 255개의 VIP가 있습니다.