24.5. AWS에서 수신 클러스터 트래픽 구성
OpenShift Container Platform에서는 클러스터에서 실행되는 서비스와 클러스터 외부에서 통신할 수 있습니다. 이 방법은 AWS의 로드 밸런서, 특히 NLB(Network Load Balancer) 또는 Classic Load Balancer(CLB)를 사용합니다. 두 가지 유형의 로드 밸런서 모두 클라이언트의 IP 주소를 노드로 전달할 수 있지만 CLB에는 OpenShift Container Platform이 자동으로 활성화하는 프록시 프로토콜 지원이 필요합니다.
이러한 로드 밸런서를 새 또는 기존 AWS 클러스터에서 구성할 수 있습니다.
24.5.1. AWS에서 클래식 로드 밸런서 시간 제한 구성
OpenShift Container Platform에서는 특정 경로 또는 Ingress 컨트롤러에 대한 사용자 정의 시간 제한 기간을 설정하는 방법을 제공합니다. 또한 AWS Classic Load Balancer(CLB)의 기본 시간 제한은 60초입니다.
CLB의 시간제한 기간이 경로 시간 초과 또는 Ingress 컨트롤러 타임아웃보다 짧은 경우 로드 밸런서는 연결을 조기에 종료할 수 있습니다. 경로와 CLB의 시간 제한 시간을 모두 늘려 이 문제를 방지할 수 있습니다.
24.5.1.1. 경로 시간 초과 구성
SLA(Service Level Availability) 목적에 필요한 낮은 시간 초과 또는 백엔드가 느린 경우 높은 시간 초과가 필요한 서비스가 있는 경우 기존 경로에 대한 기본 시간 초과를 구성할 수 있습니다.
사전 요구 사항
- 실행 중인 클러스터에 배포된 Ingress 컨트롤러가 필요합니다.
절차
oc annotate
명령을 사용하여 경로에 시간 초과를 추가합니다.$ oc annotate route <route_name> \ --overwrite haproxy.router.openshift.io/timeout=<timeout><time_unit> 1
- 1
- 지원되는 시간 단위는 마이크로초(us), 밀리초(ms), 초(s), 분(m), 시간(h) 또는 일(d)입니다.
다음 예제는 이름이
myroute
인 경로에서 2초의 시간 초과를 설정합니다.$ oc annotate route myroute --overwrite haproxy.router.openshift.io/timeout=2s
24.5.1.2. 클래식 로드 밸런서 시간 제한 설정
Classic Load Balancer(CLB)의 기본 시간 초과를 구성하여 유휴 연결을 확장할 수 있습니다.
사전 요구 사항
- 실행 중인 클러스터에 배포된 Ingress 컨트롤러가 있어야 합니다.
절차
다음 명령을 실행하여 기본
ingresscontroller
에 대해 AWS 연결 유휴 시간 제한을 5분으로 설정합니다.$ oc -n openshift-ingress-operator patch ingresscontroller/default \ --type=merge --patch='{"spec":{"endpointPublishingStrategy": \ {"type":"LoadBalancerService", "loadBalancer": \ {"scope":"External", "providerParameters":{"type":"AWS", "aws": \ {"type":"Classic", "classicLoadBalancer": \ {"connectionIdleTimeout":"5m"}}}}}}}'
선택 사항: 다음 명령을 실행하여 시간 초과의 기본값을 복원하십시오.
$ oc -n openshift-ingress-operator patch ingresscontroller/default \ --type=merge --patch='{"spec":{"endpointPublishingStrategy": \ {"loadBalancer":{"providerParameters":{"aws":{"classicLoadBalancer": \ {"connectionIdleTimeout":null}}}}}}}'
현재 범위가
이미 설정되어 있지 않으면 연결 제한 시간 값을 변경할 때 범위 필드를 지정해야 합니다. 범위
필드를 설정하면 기본 제한 시간 값을 복원할 때 다시 수행할 필요가 없습니다.
24.5.2. 네트워크 로드 밸런서를 사용하여 AWS에서 수신 클러스터 트래픽 구성
OpenShift Container Platform에서는 클러스터에서 실행되는 서비스와 클러스터 외부에서 통신할 수 있는 방법을 제공합니다. 이러한 방법 중 하나는 NLB(Network Load Balancer)를 사용합니다. 신규 또는 기존 AWS 클러스터에서 NLB를 구성할 수 있습니다.
24.5.2.1. Ingress Controller classic 로드 밸런서를 네트워크 로드 밸런서로 교체
클래식 로드 밸런서(CLB)를 사용하는 Ingress 컨트롤러를 AWS에서 NLB(Network Load Balancer)를 사용하는 Ingress 컨트롤러로 교체할 수 있습니다.
이 절차에서는 새로운 DNS 레코드 전파, 새 로드 밸런서 프로비저닝 및 기타 요인으로 인해 예상되는 중단으로 인해 몇 분 동안 중단될 수 있습니다. 이 절차를 적용한 후 Ingress 컨트롤러 로드 밸런서의 IP 주소 및 표준 이름이 변경될 수 있습니다.
절차
새 기본 Ingress 컨트롤러로 파일을 생성합니다. 다음 예제에서는 기본 Ingress 컨트롤러에
외부
범위가 있고 다른 사용자 정의가 없는 것으로 가정합니다.ingresscontroller.yml
파일의 예apiVersion: operator.openshift.io/v1 kind: IngressController metadata: creationTimestamp: null name: default namespace: openshift-ingress-operator spec: endpointPublishingStrategy: loadBalancer: scope: External providerParameters: type: AWS aws: type: NLB type: LoadBalancerService
기본 Ingress 컨트롤러에 다른 사용자 정의가 있는 경우 그에 따라 파일을 수정해야 합니다.
Ingress 컨트롤러 YAML 파일을 강제 대체합니다.
$ oc replace --force --wait -f ingresscontroller.yml
Ingress 컨트롤러가 교체될 때까지 기다립니다. 서버 가동 중단 시간(serveral of minutes)이 발생할 것으로 예상합니다.
24.5.2.2. 기존 AWS 클러스터에서 Ingress 컨트롤러 네트워크 로드 밸런서 생성
기존 클러스터에서 AWS NLB(Network Load Balancer)가 지원하는 Ingress 컨트롤러를 생성할 수 있습니다.
사전 요구 사항
- AWS 클러스터가 설치되어 있어야 합니다.
인프라 리소스의
PlatformStatus
는 AWS여야 합니다.PlatformStatus
가 AWS인지 확인하려면 다음을 실행하십시오.$ oc get infrastructure/cluster -o jsonpath='{.status.platformStatus.type}' AWS
절차
기존 클러스터에서 AWS NLB가 지원하는 Ingress 컨트롤러를 생성합니다.
Ingress 컨트롤러 매니페스트를 생성합니다.
$ cat ingresscontroller-aws-nlb.yaml
출력 예
apiVersion: operator.openshift.io/v1 kind: IngressController metadata: name: $my_ingress_controller1 namespace: openshift-ingress-operator spec: domain: $my_unique_ingress_domain2 endpointPublishingStrategy: type: LoadBalancerService loadBalancer: scope: External3 providerParameters: type: AWS aws: type: NLB
클러스터에서 리소스를 생성합니다.
$ oc create -f ingresscontroller-aws-nlb.yaml
새 AWS 클러스터에서 Ingress 컨트롤러 NLB를 구성하려면 먼저 설치 구성 파일 생성 절차를 완료해야 합니다.
24.5.2.3. 새 AWS 클러스터에서 Ingress 컨트롤러 네트워크 로드 밸런서 생성
새 클러스터에서 AWS NLB(Network Load Balancer)가 지원하는 Ingress 컨트롤러를 생성할 수 있습니다.
사전 요구 사항
-
install-config.yaml
파일을 생성하고 수정합니다.
절차
새 클러스터에서 AWS NLB가 지원하는 Ingress 컨트롤러를 생성합니다.
설치 프로그램이 포함된 디렉터리로 변경하고 매니페스트를 생성합니다.
$ ./openshift-install create manifests --dir <installation_directory> 1
- 1
<installation_directory>
는 클러스터의install-config.yaml
파일이 포함된 디렉터리의 이름을 지정합니다.
<installation_directory>/manifests/
디렉터리에cluster-ingress-default-ingresscontroller.yaml
이라는 이름으로 파일을 만듭니다.$ touch <installation_directory>/manifests/cluster-ingress-default-ingresscontroller.yaml 1
- 1
<installation_directory>
는 클러스터의manifests /
디렉터리가 포함된 디렉터리 이름을 지정합니다.
파일이 생성되면 다음과 같이 여러 네트워크 구성 파일이
manifests/
디렉토리에 나타납니다.$ ls <installation_directory>/manifests/cluster-ingress-default-ingresscontroller.yaml
출력 예
cluster-ingress-default-ingresscontroller.yaml
편집기에서
cluster-ingress-default-ingresscontroller.yaml
파일을 열고 원하는 운영자 구성을 설명하는 CR(사용자 정의 리소스)을 입력합니다.apiVersion: operator.openshift.io/v1 kind: IngressController metadata: creationTimestamp: null name: default namespace: openshift-ingress-operator spec: endpointPublishingStrategy: loadBalancer: scope: External providerParameters: type: AWS aws: type: NLB type: LoadBalancerService
-
cluster-ingress-default-ingresscontroller.yaml
파일을 저장하고 텍스트 편집기를 종료합니다. -
선택 사항:
manifests / cluster-ingress-default-ingresscontroller.yaml
파일을 백업합니다. 설치 프로그램은 클러스터를 생성할 때manifests/
디렉터리를 삭제합니다.
24.5.3. 추가 리소스
- 네트워크 사용자 지정으로 AWS에 클러스터 설치
- NLBs 지원에 대한 자세한 내용은 AWS에서 Network Load Balancer 지원을 참조하십시오.
- CLBs의 프록시 프로토콜 지원에 대한 자세한 내용은 클래식 로드 밸런서에 대한 프록시 프로토콜 지원구성을 참조하십시오.