프록시 프로토콜 지원 구성 Classic Load Balancer - Elastic Load Balancing

문서의 영문과 번역 사이에 충돌이 있는 경우에는 영문 버전을 따릅니다. 번역 버전은 기계 번역을 사용하여 제공합니다.

프록시 프로토콜 지원 구성 Classic Load Balancer

프록시 프로토콜은 소스에서 연결 정보를 전송하는 데 사용되는 인터넷 프로토콜이며 연결이 요청된 목적지에 연결을 연결합니다. Elastic Load Balancing 에서는 사람 판독가능 헤더 형식을 사용하는 프록시 프로토콜 버전 1을 사용합니다.

기본적으로 프런트 엔드 및 백엔드 연결 모두에서 TCP(Transmission Control Protocol)를 사용하면 Classic Load Balancer는 요청 헤더를 변경하지 않고 인스턴스로 요청을 전달합니다. 프록시 프로토콜을 활성화하는 경우, 사람 판독 가능 헤더가 소스 IP 주소, 대상 IP 주소 및 포트 번호와 같은 연결 정보를 사용하여 요청 헤더에 추가됩니다. 이렇게 하면 헤더가 요청의 일부로 인스턴스에 전송됩니다.

참고

The AWS Management 콘솔 프록시 프로토콜 을(를) 활성화하는 것을 지원하지 않습니다.

프록시 프로토콜 헤더

프록시 프로토콜 헤더는 백엔드 연결을 위해 TCP를 사용하는 부하 분산 장치가 있을 때 클라이언트의 IP 주소를 식별하는 데 도움을 줍니다. 로드 밸런서가 클라이언트와 인스턴스 간의 트래픽을 가로채기 때문에 인스턴스의 액세스 로그에 발원 클라이언트가 아닌 로드 밸런서의 IP 주소가 포함됩니다. 요청의 첫 번째 줄을 분석해서 클라이언트의 IP 주소와 포트 번호를 알아낼 수 있습니다.

IPv6를 위한 헤더의 프록시 주소가 로드 밸런서의 퍼블릭 IPv6 주소가 됩니다. 이 ipv6 주소는 부하 분산 장치의 DNS 이름에서 해결된 IP 주소와 일치하며, 이 주소는 다음 중 하나로 시작됩니다. ipv6 또는 dualstack. 클라이언트가 ipv4와 연결된 경우 헤더의 프록시의 주소는 로드 밸런서의 전용 ipv4 주소입니다. 이 주소는 EC2-Classic 네트워크 외부의 DNS 조회를 통해 해결되지 않습니다.

프록시 프로토콜 라인은 캐리지 리턴 및 라인 피드("\r\n"),

PROXY_STRING + single space + INET_PROTOCOL + single space + CLIENT_IP + single space + PROXY_IP + single space + CLIENT_PORT + single space + PROXY_PORT + "\r\n"

예: IPv4:

다음은 ipv4용 프록시 프로토콜 라인의 예입니다.

PROXY TCP4 198.51.100.22 203.0.113.7 35646 80\r\n

예: ipv6(EC2-Classic만 해당)

다음은 ipv6용 프록시 프로토콜 라인의 예입니다.

PROXY TCP6 2001:DB8::21f:5bff:febf:ce22:8a2e 2001:DB8::12f:8baa:eafc:ce29:6b2e 35646 80\r\n

프록시 프로토콜을 활성화하기 위한 전제 조건

시작하기 전에 다음을 수행하십시오.

  • 부하 분산 장치가 프록시 프로토콜이 활성화된 프록시 서버 뒤에 있지 않은지 확인합니다. 프록시 서버와 로드 밸런싱 장치 모두에서 프록시 프로토콜이 활성화된 경우 로드 밸런서는 요청에 또 다른 헤더를 추가합니다. 이 헤더는 이미 프록시 서버로부터 헤더를 가지고 있습니다. 인스턴스의 구성 방법에 따라 이러한 중복이 오류를 일으킬 수 있습니다.

  • 인스턴스가 프록시 프로토콜 정보를 처리할 수 있는지 확인합니다.

  • 수신기 설정이 프록시 프로토콜을 지원하는지 확인합니다. 자세한 정보는 단원을 참조하십시오.에 대한 수신기 구성 Classic Load Balancer.

다음을 사용하여 프록시 프로토콜 사용 AWS CLI

프록시 프로토콜을 활성화하려면 유형 정책을 만들어야 합니다. ProxyProtocolPolicyType 인스턴스 포트의 정책을 활성화한 다음

다음 절차에 따라 유형의 로드 밸런서에 대한 새 정책을 만듭니다. ProxyProtocolPolicyType에서 새로 생성된 정책을 포트의 인스턴스로 설정합니다. 80, 정책이 활성화되었는지 확인합니다.

로드 밸런서에 대한 프록시 프로토콜을 활성화하려면

  1. (선택 사항) 다음을 사용합니다. 부하-로드-발란서-정책-유형 이(가) 지원되는 정책을 나열하는 명령을 Elastic Load Balancing:

    aws elb describe-load-balancer-policy-types

    응답에는 지원되는 정책 유형의 이름과 이에 대한 설명이 포함되어 있습니다. 다음은 ProxyProtocolPolicyType 유형에 대한 출력을 보여줍니다.

    { "PolicyTypeDescriptions": [ ... { "PolicyAttributeTypeDescriptions": [ { "Cardinality": "ONE", "AttributeName": "ProxyProtocol", "AttributeType": "Boolean" } ], "PolicyTypeName": "ProxyProtocolPolicyType", "Description": "Policy that controls whether to include the IP address and port of the originating request for TCP messages. This policy operates on TCP/SSL listeners only" }, ... ] }
  2. 다음을 사용하십시오. create-load-balancer-policy 명령을 사용하여 프록시 프로토콜을 사용할 수 있는 정책을 만듭니다.

    aws elb create-load-balancer-policy --load-balancer-name my-loadbalancer --policy-name my-ProxyProtocol-policy --policy-type-name ProxyProtocolPolicyType --policy-attributes AttributeName=ProxyProtocol,AttributeValue=true
  3. 다음을 사용하십시오. set-load-balancer-policy-for-backend-server 명령을 사용하여 지정된 포트에 새로 생성된 정책을 설정합니다. 이 명령이 현재 활성화된 정책 세트를 대체합니다. 따라서 --policy-names 옵션은 목록에 추가하는 정책을 모두 지정해야 합니다(예: my-ProxyProtocol-policy) 및 현재 사용 가능한 모든 정책(예: my-existing-policy) ).

    aws elb set-load-balancer-policies-for-backend-server --load-balancer-name my-loadbalancer --instance-port 80 --policy-names my-ProxyProtocol-policy my-existing-policy
  4. (선택 사항) 다음을 사용합니다. 부하-로드-밸런서 프록시 프로토콜이 활성화되었는지 확인하는 명령을 실행합니다.

    aws elb describe-load-balancers --load-balancer-name my-loadbalancer

    응답에는 다음 정보가 포함되어 있습니다. my-ProxyProtocol-policy 정책이 포트 관련 80.

    { "LoadBalancerDescriptions": [ { ... "BackendServerDescriptions": [ { "InstancePort": 80, "PolicyNames": [ "my-ProxyProtocol-policy" ] } ], ... } ] }

다음을 사용하여 프록시 프로토콜 비활성화 AWS CLI

인스턴스에 연결된 정책을 비활성화한 다음, 나중에 활성화를 할 수 있습니다.

프록시 프로토콜 정책을 비활성화하려면

  1. 다음을 사용하십시오. set-load-balancer-policy-for-backend-server 명령을 사용하여 프록시 프로토콜 정책을 비활성화하는 명령을 --policy-names 여전히 활성화되어야 하는 다른 정책을 포함하여 my-existing-policy) ).

    aws elb set-load-balancer-policies-for-backend-server --load-balancer-name my-loadbalancer --instance-port 80 --policy-names my-existing-policy

    활성화할 다른 정책이 없는 경우에는 다음과 같이 --policy-names 옵션을 통해 빈 문자열을 지정합니다.

    aws elb set-load-balancer-policies-for-backend-server --load-balancer-name my-loadbalancer --instance-port 80 --policy-names "[]"
  2. (선택 사항) 다음을 사용합니다. 부하-로드-밸런서 정책이 비활성화되었는지 확인하는 명령입니다.

    aws elb describe-load-balancers --load-balancer-name my-loadbalancer

    응답에는 다음과 같이 정책에 연결된 포트가 없음을 보여주는 정보가 포함되어 있습니다.

    { "LoadBalancerDescriptions": [ { ... "BackendServerDescriptions": [], ... } ] }