3.3. 사용자 관리 로드 밸런서를 위한 서비스
Red Hat OpenStack Platform(RHOSP)에서 OpenShift Container Platform 클러스터를 구성하여 기본 로드 밸런서 대신 사용자 관리 로드 밸런서를 사용할 수 있습니다.
사용자 관리 로드 밸런서를 구성하는 방법은 공급업체의 로드 밸런서에 따라 달라집니다.
이 섹션의 정보와 예시는 지침 목적으로만 제공됩니다. 공급업체의 로드 밸런서에 대한 자세한 내용은 공급업체 설명서를 참조하세요.
Red Hat은 사용자 관리형 로드 밸런서에 대해 다음 서비스를 지원합니다.
- Ingress 컨트롤러
- OpenShift API
- OpenShift MachineConfig API
사용자 관리형 부하 분산 장치에 대해 이러한 서비스 중 하나 또는 전부를 구성할지 여부를 선택할 수 있습니다. Ingress Controller 서비스만 구성하는 것은 일반적인 구성 옵션입니다. 각 서비스를 더 잘 이해하려면 다음 다이어그램을 살펴보세요.
그림 3.1. OpenShift Container Platform 환경에서 작동하는 Ingress Controller를 보여주는 네트워크 워크플로 예시
그림 3.2. OpenShift 컨테이너 플랫폼 환경에서 작동하는 OpenShift API를 보여주는 네트워크 워크플로 예시
그림 3.3. OpenShift Container Platform 환경에서 작동하는 OpenShift MachineConfig API를 보여주는 네트워크 워크플로 예시
사용자 관리 부하 분산 장치에는 다음과 같은 구성 옵션이 지원됩니다.
- 노드 선택기를 사용하여 Ingress Controller를 특정 노드 세트에 매핑합니다. 이 세트의 각 노드에 고정 IP 주소를 할당하거나 각 노드가 DHCP(동적 호스트 구성 프로토콜)에서 동일한 IP 주소를 받도록 구성해야 합니다. 인프라 노드는 일반적으로 이러한 유형의 구성을 받습니다.
서브넷의 모든 IP 주소를 대상으로 합니다. 이 구성을 사용하면 로드 밸런서 대상을 재구성하지 않고도 해당 네트워크 내에서 노드를 생성하고 삭제할 수 있으므로 유지 관리 오버헤드를 줄일 수 있습니다.
/27
또는/28
과 같은 소규모 네트워크에 있는 머신 세트를 사용하여 인그레스 포드를 배포하면 로드 밸런서 대상을 간소화할 수 있습니다.작은 정보머신 구성 풀의 리소스를 확인하면 네트워크에 있는 모든 IP 주소를 나열할 수 있습니다.
OpenShift Container Platform 클러스터에 대한 사용자 관리 로드 밸런서를 구성하기 전에 다음 정보를 고려하세요.
- 프런트엔드 IP 주소의 경우 프런트엔드 IP 주소, Ingress Controller의 로드 밸런서 및 API 로드 밸런서에 동일한 IP 주소를 사용할 수 있습니다. 이 기능에 대해서는 벤더의 설명서를 확인하십시오.
백엔드 IP 주소의 경우, 사용자 관리 부하 분산 장치의 수명 동안 OpenShift Container Platform 제어 평면 노드의 IP 주소가 변경되지 않도록 해야 합니다. 다음 작업 중 하나를 완료하면 이를 달성할 수 있습니다.
- 각 제어 평면 노드에 고정 IP 주소를 할당합니다.
- 노드가 DHCP 임대를 요청할 때마다 DHCP로부터 동일한 IP 주소를 받도록 각 노드를 구성합니다. 공급업체에 따라 DHCP 임대는 IP 예약이나 정적 DHCP 할당 형태일 수 있습니다.
- Ingress Controller 백엔드 서비스에 대한 사용자 관리 로드 밸런서에서 Ingress Controller를 실행하는 각 노드를 수동으로 정의합니다. 예를 들어, Ingress Controller가 정의되지 않은 노드로 이동하면 연결이 중단될 수 있습니다.
3.3.1. 사용자 관리 로드 밸런서 구성 링크 복사링크가 클립보드에 복사되었습니다!
Red Hat OpenStack Platform(RHOSP)에서 OpenShift Container Platform 클러스터를 구성하여 기본 로드 밸런서 대신 사용자 관리 로드 밸런서를 사용할 수 있습니다.
사용자 관리형 로드 밸런서를 구성하기 전에 "사용자 관리형 로드 밸런서 서비스" 섹션을 읽어보세요.
사용자 관리형 로드 밸런서에 대해 구성하려는 서비스에 적용되는 다음 필수 구성 요소를 읽어보세요.
클러스터에서 실행되는 MetalLB는 사용자 관리형 로드 밸런서 역할을 합니다.
OpenShift API 필수 구성 요소
- 프런트엔드 IP 주소를 정의했습니다.
TCP 포트 6443과 22623은 로드 밸런서의 프런트엔드 IP 주소에 노출됩니다. 다음 항목을 확인합니다.
- 포트 6443은 OpenShift API 서비스에 대한 액세스를 제공합니다.
- 포트 22623은 노드에 점화 시작 구성을 제공할 수 있습니다.
- 프런트엔드 IP 주소와 포트 6443은 OpenShift Container Platform 클러스터 외부에 위치한 시스템의 모든 사용자가 접근할 수 있습니다.
- 프런트엔드 IP 주소와 포트 22623은 OpenShift Container Platform 노드에서만 접근 가능합니다.
- 로드 밸런서 백엔드는 포트 6443 및 22623에서 OpenShift Container Platform 제어 평면 노드와 통신할 수 있습니다.
Ingress 컨트롤러 사전 요구 사항
- 프런트엔드 IP 주소를 정의했습니다.
- TCP 포트 443과 80은 로드 밸런서의 프런트엔드 IP 주소에 노출됩니다.
- 프런트엔드 IP 주소, 포트 80 및 포트 443은 OpenShift Container Platform 클러스터 외부에 위치한 시스템의 모든 사용자가 접근할 수 있습니다.
- 프런트엔드 IP 주소, 포트 80 및 포트 443은 OpenShift Container Platform 클러스터에서 작동하는 모든 노드에서 접근 가능합니다.
- 로드 밸런서 백엔드는 포트 80, 443, 1936에서 Ingress Controller를 실행하는 OpenShift Container Platform 노드와 통신할 수 있습니다.
상태 점검 URL 사양을 위한 전제 조건
대부분의 로드 밸런서는 서비스를 사용할 수 있는지 없는지 확인하는 상태 점검 URL을 설정하여 구성할 수 있습니다. OpenShift Container Platform은 OpenShift API, Machine Configuration API 및 Ingress Controller 백엔드 서비스에 대한 상태 점검을 제공합니다.
다음 예에서는 이전에 나열된 백엔드 서비스에 대한 상태 점검 사양을 보여줍니다.
Kubernetes API 상태 점검 사양의 예
Path: HTTPS:6443/readyz Healthy threshold: 2 Unhealthy threshold: 2 Timeout: 10 Interval: 10
Path: HTTPS:6443/readyz
Healthy threshold: 2
Unhealthy threshold: 2
Timeout: 10
Interval: 10
Machine Config API 상태 점검 사양의 예
Path: HTTPS:22623/healthz Healthy threshold: 2 Unhealthy threshold: 2 Timeout: 10 Interval: 10
Path: HTTPS:22623/healthz
Healthy threshold: 2
Unhealthy threshold: 2
Timeout: 10
Interval: 10
Ingress Controller 상태 점검 사양의 예
Path: HTTP:1936/healthz/ready Healthy threshold: 2 Unhealthy threshold: 2 Timeout: 5 Interval: 10
Path: HTTP:1936/healthz/ready
Healthy threshold: 2
Unhealthy threshold: 2
Timeout: 5
Interval: 10
프로세스
로드 밸런서에서 포트 6443, 22623, 443 및 80에서 클러스터에 액세스할 수 있도록 HAProxy Ingress Controller를 구성합니다. 사용자의 요구 사항에 따라 HAProxy 구성에서 단일 서브넷의 IP 주소나 여러 서브넷의 IP 주소를 지정할 수 있습니다.
하나의 나열된 서브넷이 있는 HAProxy 구성 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 여러 개의 나열된 서브넷이 있는 HAProxy 구성 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow curl
CLI 명령을 사용하여 사용자 관리 로드 밸런서와 해당 리소스가 작동하는지 확인하세요.다음 명령을 실행하고 응답을 관찰하여 클러스터 머신 구성 API가 Kubernetes API 서버 리소스에 액세스할 수 있는지 확인하세요.
curl https://<loadbalancer_ip_address>:6443/version --insecure
$ curl https://<loadbalancer_ip_address>:6443/version --insecure
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 구성이 올바르면 응답으로 JSON 오브젝트가 표시됩니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하고 출력을 관찰하여 클러스터 머신 구성 API가 머신 구성 서버 리소스에 액세스할 수 있는지 확인하세요.
curl -v https://<loadbalancer_ip_address>:22623/healthz --insecure
$ curl -v https://<loadbalancer_ip_address>:22623/healthz --insecure
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 구성이 올바르면 명령 출력에 다음과 같은 응답이 표시됩니다.
HTTP/1.1 200 OK Content-Length: 0
HTTP/1.1 200 OK Content-Length: 0
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하고 출력을 관찰하여 포트 80에서 Ingress Controller 리소스에 컨트롤러가 액세스할 수 있는지 확인하세요.
curl -I -L -H "Host: console-openshift-console.apps.<cluster_name>.<base_domain>" http://<load_balancer_front_end_IP_address>
$ curl -I -L -H "Host: console-openshift-console.apps.<cluster_name>.<base_domain>" http://<load_balancer_front_end_IP_address>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 구성이 올바르면 명령 출력에 다음과 같은 응답이 표시됩니다.
HTTP/1.1 302 Found content-length: 0 location: https://console-openshift-console.apps.ocp4.private.opequon.net/ cache-control: no-cache
HTTP/1.1 302 Found content-length: 0 location: https://console-openshift-console.apps.ocp4.private.opequon.net/ cache-control: no-cache
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하고 출력을 관찰하여 포트 443에서 Ingress Controller 리소스에 컨트롤러가 액세스할 수 있는지 확인하세요.
curl -I -L --insecure --resolve console-openshift-console.apps.<cluster_name>.<base_domain>:443:<Load Balancer Front End IP Address> https://console-openshift-console.apps.<cluster_name>.<base_domain>
$ curl -I -L --insecure --resolve console-openshift-console.apps.<cluster_name>.<base_domain>:443:<Load Balancer Front End IP Address> https://console-openshift-console.apps.<cluster_name>.<base_domain>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 구성이 올바르면 명령 출력에 다음과 같은 응답이 표시됩니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
사용자 관리 부하 분산 장치의 프런트엔드 IP 주소를 대상으로 클러스터의 DNS 레코드를 구성합니다. 로드 밸런서를 통해 클러스터 API 및 애플리케이션에 대한 레코드를 DNS 서버로 업데이트해야 합니다.
수정된 DNS 레코드의 예
<load_balancer_ip_address> A api.<cluster_name>.<base_domain> A record pointing to Load Balancer Front End
<load_balancer_ip_address> A api.<cluster_name>.<base_domain> A record pointing to Load Balancer Front End
Copy to Clipboard Copied! Toggle word wrap Toggle overflow <load_balancer_ip_address> A apps.<cluster_name>.<base_domain> A record pointing to Load Balancer Front End
<load_balancer_ip_address> A apps.<cluster_name>.<base_domain> A record pointing to Load Balancer Front End
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 중요DNS 전파가 각 DNS 레코드를 사용할 수 있게 되는 데는 시간이 걸릴 수 있습니다. 각 레코드를 검증하기 전에 각 DNS 레코드가 전파되는지 확인하세요.
OpenShift Container Platform 클러스터에서 사용자 관리형 로드 밸런서를 사용하려면 클러스터의
install-config.yaml
파일에 다음 구성을 지정해야 합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 클러스터에 대한 사용자 관리 부하 분산 장치를 지정하려면
유형
매개변수에UserManaged를
설정합니다. 매개변수의 기본값은 기본 내부 부하 분산 장치를 나타내는OpenShiftManagedDefault
입니다.openshift-kni-infra
네임스페이스에 정의된 서비스의 경우, 사용자 관리 로드 밸런서는 클러스터의 포드에coredns
서비스를 배포할 수 있지만keepalived
및haproxy
서비스는 무시합니다. - 2
- 사용자 관리 로드 밸런서를 지정할 때 필수 매개변수입니다. Kubernetes API가 사용자 관리 로드 밸런서와 통신할 수 있도록 사용자 관리 로드 밸런서의 공용 IP 주소를 지정하세요.
- 3
- 사용자 관리 로드 밸런서를 지정할 때 필수 매개변수입니다. 사용자 관리 부하 분산 장치의 공용 IP 주소를 지정하면 사용자 관리 부하 분산 장치가 클러스터의 수신 트래픽을 관리할 수 있습니다.
검증
curl
CLI 명령을 사용하여 사용자 관리 부하 분산 장치와 DNS 레코드 구성이 작동하는지 확인하세요.다음 명령을 실행하고 출력을 관찰하여 클러스터 API에 액세스할 수 있는지 확인하세요.
curl https://api.<cluster_name>.<base_domain>:6443/version --insecure
$ curl https://api.<cluster_name>.<base_domain>:6443/version --insecure
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 구성이 올바르면 응답으로 JSON 오브젝트가 표시됩니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하고 출력을 관찰하여 클러스터 머신 구성에 액세스할 수 있는지 확인하세요.
curl -v https://api.<cluster_name>.<base_domain>:22623/healthz --insecure
$ curl -v https://api.<cluster_name>.<base_domain>:22623/healthz --insecure
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 구성이 올바르면 명령 출력에 다음과 같은 응답이 표시됩니다.
HTTP/1.1 200 OK Content-Length: 0
HTTP/1.1 200 OK Content-Length: 0
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하고 출력을 관찰하여 포트에서 각 클러스터 애플리케이션에 액세스할 수 있는지 확인하세요.
curl http://console-openshift-console.apps.<cluster_name>.<base_domain> -I -L --insecure
$ curl http://console-openshift-console.apps.<cluster_name>.<base_domain> -I -L --insecure
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 구성이 올바르면 명령 출력에 다음과 같은 응답이 표시됩니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하고 출력을 관찰하여 포트 443에서 각 클러스터 애플리케이션에 액세스할 수 있는지 확인하세요.
curl https://console-openshift-console.apps.<cluster_name>.<base_domain> -I -L --insecure
$ curl https://console-openshift-console.apps.<cluster_name>.<base_domain> -I -L --insecure
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 구성이 올바르면 명령 출력에 다음과 같은 응답이 표시됩니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow