검색

27.5. AWS에서 수신 클러스터 트래픽 구성

download PDF

OpenShift Container Platform에서는 클러스터에서 실행되는 서비스와 클러스터 외부에서 통신할 수 있습니다. 이 방법은 AWS의 로드 밸런서, 특히 NLB(Network Load Balancer) 또는 Classic Load Balancer(CLB)를 사용합니다. 두 가지 유형의 로드 밸런서 모두 클라이언트의 IP 주소를 노드로 전달할 수 있지만 CLB에는 OpenShift Container Platform이 자동으로 활성화하는 프록시 프로토콜 지원이 필요합니다.

NLB를 사용하도록 Ingress 컨트롤러를 구성하는 방법은 다음 두 가지가 있습니다.

  1. 현재 CLB를 사용하고 있는 Ingress 컨트롤러를 강제로 교체합니다. 이렇게 하면 새 DNS 레코드가 전파되고 NLB가 프로비저닝되는 동안 IngressController 오브젝트가 삭제되고 중단이 발생합니다.
  2. CLB를 사용하여 NLB를 사용하는 기존 Ingress 컨트롤러를 편집합니다. 이렇게 하면 IngressController 오브젝트를 삭제하고 다시 생성할 필요 없이 로드 밸런서가 변경됩니다.

두 방법 모두 NLB에서 CLB로 전환하는 데 사용할 수 있습니다.

이러한 로드 밸런서를 새 또는 기존 AWS 클러스터에서 구성할 수 있습니다.

27.5.1. AWS에서 클래식 로드 밸런서 시간 제한 구성

OpenShift Container Platform에서는 특정 경로 또는 Ingress 컨트롤러에 대한 사용자 정의 시간 제한 기간을 설정하는 방법을 제공합니다. 또한 AWS Classic Load Balancer(CLB)의 기본 시간 제한은 60초입니다.

CLB의 시간제한 기간이 경로 시간 초과 또는 Ingress 컨트롤러 타임아웃보다 짧은 경우 로드 밸런서는 연결을 조기에 종료할 수 있습니다. 경로와 CLB의 시간 제한 시간을 모두 늘려 이 문제를 방지할 수 있습니다.

27.5.1.1. 경로 시간 초과 구성

SLA(Service Level Availability) 목적에 필요한 낮은 시간 초과 또는 백엔드가 느린 경우 높은 시간 초과가 필요한 서비스가 있는 경우 기존 경로에 대한 기본 시간 초과를 구성할 수 있습니다.

사전 요구 사항

  • 실행 중인 클러스터에 배포된 Ingress 컨트롤러가 필요합니다.

절차

  1. 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

27.5.1.2. 클래식 로드 밸런서 시간 제한 설정

Classic Load Balancer(CLB)의 기본 시간 초과를 구성하여 유휴 연결을 확장할 수 있습니다.

사전 요구 사항

  • 실행 중인 클러스터에 배포된 Ingress 컨트롤러가 있어야 합니다.

프로세스

  1. 다음 명령을 실행하여 기본 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"}}}}}}}'
  2. 선택 사항: 다음 명령을 실행하여 시간 초과의 기본값을 복원하십시오.

    $ oc -n openshift-ingress-operator patch ingresscontroller/default \
        --type=merge --patch='{"spec":{"endpointPublishingStrategy": \
        {"loadBalancer":{"providerParameters":{"aws":{"classicLoadBalancer": \
        {"connectionIdleTimeout":null}}}}}}}'
참고

현재 범위가 이미 설정되어 있지 않으면 연결 시간 초과 값을 변경할 때 scope 필드를 지정해야 합니다. scope 필드를 설정할 때 기본 시간 초과 값을 복원하는 경우 다시 수행할 필요가 없습니다.

27.5.2. 네트워크 로드 밸런서를 사용하여 AWS에서 수신 클러스터 트래픽 구성

OpenShift Container Platform에서는 클러스터에서 실행되는 서비스와 클러스터 외부에서 통신할 수 있는 방법을 제공합니다. 이러한 방법 중 하나는 NLB(Network Load Balancer)를 사용합니다. 신규 또는 기존 AWS 클러스터에서 NLB를 구성할 수 있습니다.

27.5.2.1. Ingress 컨트롤러를 Classic Load Balancer를 네트워크 로드 밸런서로 전환

CLB(Network Load Balancer)를 AWS의 NLB(Network Load Balancer)를 사용하는 Ingress 컨트롤러를 사용할 수 있습니다.

이러한 로드 밸런서 간 전환은 IngressController 오브젝트가 삭제되지 않습니다.

주의

이 절차에서는 다음과 같은 문제가 발생할 수 있습니다.

  • 새로운 DNS 레코드 전파, 새로운 로드 밸런서 프로비저닝 및 기타 요인으로 인해 몇 분 정도 걸릴 수 있는 중단입니다. 이 절차를 적용한 후 Ingress 컨트롤러 로드 밸런서의 IP 주소 및 정식 이름이 변경될 수 있습니다.
  • 서비스 주석이 변경되어 로드 밸런서 리소스가 유출되었습니다.

프로세스

  1. NLB를 사용하여 전환할 기존 Ingress 컨트롤러를 수정합니다. 이 예에서는 기본 Ingress 컨트롤러에 외부 범위가 있고 다른 사용자 정의가 없다고 가정합니다.

    ingresscontroller.yaml 파일 예

    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

    참고

    spec.endpointPublishingStrategy.loadBalancer.providerParameters.aws.type 필드에 값을 지정하지 않으면 Ingress 컨트롤러에서 설치 중에 설정된 클러스터 Ingress 구성의 spec.loadBalancer.platform.aws.type 값을 사용합니다.

    작은 정보

    Ingress 컨트롤러에 도메인 변경과 같이 업데이트할 다른 사용자 정의가 있는 경우 Ingress 컨트롤러 정의 파일을 대신 교체하는 것이 좋습니다.

  2. 명령을 실행하여 Ingress 컨트롤러 YAML 파일에 변경 사항을 적용합니다.

    $ oc apply -f ingresscontroller.yaml

    Ingress 컨트롤러 업데이트 중에 몇 분의 중단이 예상됩니다.

27.5.2.2. Ingress 컨트롤러를 Network Load Balancer를 Classic Load Balancer로 전환

NLB(Network Load Balancer)를 사용하는 Ingress 컨트롤러를 AWS에서 CLB( Classic Load Balancer)를 사용하는 컨트롤러로 전환할 수 있습니다.

이러한 로드 밸런서 간 전환은 IngressController 오브젝트가 삭제되지 않습니다.

주의

이 절차에서는 새로운 DNS 레코드 전파, 새로운 로드 밸런서 프로비저닝 및 기타 요인으로 인해 몇 분 정도 걸릴 수 있는 중단이 발생할 수 있습니다. 이 절차를 적용한 후 Ingress 컨트롤러 로드 밸런서의 IP 주소 및 정식 이름이 변경될 수 있습니다.

절차

  1. CLB를 사용하여 전환할 기존 Ingress 컨트롤러를 수정합니다. 이 예에서는 기본 Ingress 컨트롤러에 외부 범위가 있고 다른 사용자 정의가 없다고 가정합니다.

    ingresscontroller.yaml 파일 예

    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: Classic
        type: LoadBalancerService

    참고

    spec.endpointPublishingStrategy.loadBalancer.providerParameters.aws.type 필드에 값을 지정하지 않으면 Ingress 컨트롤러에서 설치 중에 설정된 클러스터 Ingress 구성의 spec.loadBalancer.platform.aws.type 값을 사용합니다.

    작은 정보

    Ingress 컨트롤러에 도메인 변경과 같이 업데이트할 다른 사용자 정의가 있는 경우 Ingress 컨트롤러 정의 파일을 대신 교체하는 것이 좋습니다.

  2. 명령을 실행하여 Ingress 컨트롤러 YAML 파일에 변경 사항을 적용합니다.

    $ oc apply -f ingresscontroller.yaml

    Ingress 컨트롤러 업데이트 중에 몇 분의 중단이 예상됩니다.

27.5.2.3. Ingress 컨트롤러 클래식 로드 밸런서를 네트워크 로드 밸런서로 교체

Classic Load Balancer(CLB)를 사용하는 Ingress 컨트롤러를 AWS에서 NLB(Network Load Balancer)를 사용하는 컨트롤러로 교체할 수 있습니다.

주의

이 절차에서는 다음과 같은 문제가 발생할 수 있습니다.

  • 새로운 DNS 레코드 전파, 새로운 로드 밸런서 프로비저닝 및 기타 요인으로 인해 몇 분 정도 걸릴 수 있는 중단입니다. 이 절차를 적용한 후 Ingress 컨트롤러 로드 밸런서의 IP 주소 및 정식 이름이 변경될 수 있습니다.
  • 서비스 주석이 변경되어 로드 밸런서 리소스가 유출되었습니다.

프로세스

  1. 새 기본 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 컨트롤러에 다른 사용자 지정 기능이 없고 로드 밸런서 유형만 업데이트하는 경우 "프로세스 로드 밸런서를 네트워크 로드 밸런서로 사용하지 못하도록 전환에서 Ingress 컨트롤러가 네트워크 로드 밸런서로 전환"에 자세히 설명된 절차를 고려하십시오.

  2. Ingress 컨트롤러 YAML 파일을 강제 교체합니다.

    $ oc replace --force --wait -f ingresscontroller.yml

    Ingress 컨트롤러가 교체될 때까지 기다립니다. 몇 분의 중단이 발생할 것으로 예상합니다.

27.5.2.4. 기존 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 컨트롤러를 생성합니다.

  1. 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

    1
    $my_ingress_controller 를 Ingress 컨트롤러의 고유한 이름으로 교체합니다.
    2
    $my_unique_ingress_domain 을 클러스터의 모든 Ingress 컨트롤러에서 고유한 도메인 이름으로 바꿉니다. 이 변수는 DNS 이름 < clustername>.<domain>의 하위 도메인이어야 합니다.
    3
    내부 NLB를 사용하려면 ExternalInternal 로 교체할 수 있습니다.
  2. 클러스터에서 리소스를 생성합니다.

    $ oc create -f ingresscontroller-aws-nlb.yaml
중요

새 AWS 클러스터에서 Ingress 컨트롤러 NLB를 구성하려면 먼저 설치 구성 파일 생성 절차를 완료해야 합니다.

27.5.2.5. 새 AWS 클러스터에서 Ingress 컨트롤러 네트워크 로드 밸런서 생성

새 클러스터에서 AWS NLB(Network Load Balancer)가 지원하는 Ingress 컨트롤러를 생성할 수 있습니다.

사전 요구 사항

  • install-config.yaml 파일을 생성하고 수정합니다.

프로세스

새 클러스터에서 AWS NLB가 지원하는 Ingress 컨트롤러를 생성합니다.

  1. 설치 프로그램이 포함된 디렉터리로 변경하고 매니페스트를 생성합니다.

    $ ./openshift-install create manifests --dir <installation_directory> 1
    1
    & lt;installation_directory >는 클러스터의 install-config.yaml 파일이 포함된 디렉터리의 이름을 지정합니다.
  2. < installation_directory>/manifests/ 디렉터리에 cluster-ingress-default-ingresscontroller.yaml 이라는 이름으로 파일을 생성합니다.

    $ touch <installation_directory>/manifests/cluster-ingress-default-ingresscontroller.yaml 1
    1
    & lt;installation_directory >는 클러스터의 manifests/ 디렉터리가 포함된 디렉터리 이름을 지정합니다.

    파일이 생성되면 다음과 같이 여러 네트워크 구성 파일이 manifests/ 디렉터리에 있습니다.

    $ ls <installation_directory>/manifests/cluster-ingress-default-ingresscontroller.yaml

    출력 예

    cluster-ingress-default-ingresscontroller.yaml

  3. 편집기에서 cluster-ingress-default-ingresscontroller.yaml 파일을 열고 원하는 Operator 구성을 설명하는 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
  4. cluster-ingress-default-ingresscontroller.yaml 파일을 저장하고 텍스트 편집기를 종료합니다.
  5. 선택사항: manifests/cluster-ingress-default-ingresscontroller.yaml 파일을 백업합니다. 설치 프로그램은 클러스터를 생성할 때 manifests/ 디렉터리를 삭제합니다.

27.5.3. 추가 리소스

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.