기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Classic Load Balancer에 프록시 프로토콜 구성
프록시 프로토콜은 연결을 요청하는 소스에서 연결이 요청된 대상으로 연결 정보를 전달하는 데 사용되는 인터넷 프로토콜입니다. Elastic Load Balancing은 사람이 읽을 수 있는 형식의 헤더를 가진 프록시 프로토콜 버전 1을 사용합니다.
기본적으로 프런트 엔드 및 백 엔드 연결 모두에서 TCP(Transmission Control Protocol)를 사용하면 Classic Load Balancer는 요청 헤더를 변경하지 않고 인스턴스로 요청을 전달합니다. 프록시 프로토콜을 활성화하면 사람이 읽을 수 있는 형식의 헤더가 소스 IP 주소, 대상 IP 주소, 포트 번호와 같은 연결 정보를 포함하는 요청 헤더에 추가됩니다. 이렇게 하면 헤더가 요청의 일부로 인스턴스에 전송됩니다.
참고
AWS Management Console 는 프록시 프로토콜 활성화를 지원하지 않습니다.
프록시 프로토콜 헤더
프록시 프로토콜 헤더는 백엔드 연결에 TCP를 사용하는 로드 밸런서를 가지고 있을 때 클라이언트의 IP 주소를 식별하는 데 도움을 줍니다. 로드 밸런서가 클라이언트와 인스턴스 간의 트래픽을 가로채기 때문에 인스턴스의 액세스 로그에 발원 클라이언트가 아닌 로드 밸런서의 IP 주소가 포함됩니다. 요청의 첫 번째 줄을 분석해서 클라이언트의 IP 주소와 포트 번호를 알아낼 수 있습니다.
IPv6를 위한 헤더의 프록시 주소가 로드 밸런서의 퍼블릭 IPv6 주소가 됩니다. 이 IPv6 주소는 로드 밸런서의 DNS 이름에서 확인할 수 있는 IP 주소와 일치하며 ipv6 또는 dualstack으로 시작됩니다. 클라이언트가 IPv4에 연결되면 헤더의 프록시 주소는 로드 밸런서의 프라이빗 IPv4 주소가 되고, 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
프록시 프로토콜을 활성화하기 위한 사전 조건
시작하기 전에 다음을 수행하십시오.
-
로드 밸런서가 프록시 프로토콜이 활성화된 프록시 서버를 지원하지 않는지 확인합니다. 프록시 서버와 로드 밸런서 모두에서 프록시 프로토콜이 활성화된 경우에는 로드 밸런서가 프록시 서버에서 이미 헤더를 가지고 있는 요청에 또 다른 헤더를 추가합니다. 인스턴스의 구성 방법에 따라 이러한 중복이 오류를 일으킬 수 있습니다.
-
인스턴스가 프록시 프로토콜 정보를 처리할 수 있는지 확인합니다.
-
리스너 설정이 프록시 프로토콜을 지원하는지 확인합니다. 자세한 내용은 Classic Load Balancer의 리스너 구성 단원을 참조하십시오.
를 사용하여 프록시 프로토콜 활성화 AWS CLI
프록시 프로토콜을 활성화하려면 ProxyProtocolPolicyType 유형의 정책을 생성한 다음 인스턴스 포트에서 정책을 활성화해야 합니다.
다음 단계를 통해 ProxyProtocolPolicyType 유형의 로드 밸런서를 위한 새 정책을 생성하고 새롭게 생성된 정책을 포트 80의 인스턴스로 설정한 다음, 정책이 활성화되었는지 확인합니다.
로드 밸런서에 대한 프록시 프로토콜을 활성화하려면
-
(선택 사항) Elastic Load Balancing이 지원하는 정책의 목록을 확인하려면 아래 describe-load-balancer-policy-types 명령을 사용하세요.
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" }, ... ] } -
프록시 프로토콜을 활성화하는 정책을 생성하려면 아래 create-load-balancer-policy 명령을 사용하세요.
aws elb create-load-balancer-policy --load-balancer-namemy-loadbalancer--policy-namemy-ProxyProtocol-policy--policy-type-name ProxyProtocolPolicyType --policy-attributes AttributeName=ProxyProtocol,AttributeValue=true -
새로 생성된 정책을 지정된 포트에서 활성화하려면 아래 set-load-balancer-policies-for-backend-server 명령을 사용하세요. 이 명령이 현재 활성화된 정책 세트를 대체합니다. 따라서
--policy-names옵션을 통해 목록에 추가 중인 정책(예:my-ProxyProtocol-policy)과 현재 활성화된 정책(예:my-existing-policy) 모두를 지정해야 합니다.aws elb set-load-balancer-policies-for-backend-server --load-balancer-namemy-loadbalancer--instance-port80--policy-namesmy-ProxyProtocol-policy my-existing-policy -
(선택 사항) 프록시 프로토콜이 활성화되어 있는지 확인하려면 아래 describe-load-balancers 명령을 사용하세요.
aws elb describe-load-balancers --load-balancer-namemy-loadbalancer응답에는 다음과 같이
my-ProxyProtocol-policy정책이 포트80에 연결되었음을 보여주는 정보가 포함되어 있습니다.{ "LoadBalancerDescriptions": [ { ... "BackendServerDescriptions": [ { "InstancePort": 80, "PolicyNames": [ "my-ProxyProtocol-policy" ] } ], ... } ] }
를 사용하여 프록시 프로토콜 비활성화 AWS CLI
인스턴스에 연결된 정책을 비활성화한 다음, 나중에 활성화를 할 수 있습니다.
프록시 프로토콜 정책을 비활성화하려면
-
--policy-names옵션에서 이를 생략하고 활성화된 상태를 유지하는 다른 정책(예:my-existing-policy)을 포함시켜 프록시 프로토콜 정책을 비활성화하려면 아래 set-load-balancer-policies-for-backend-server 명령을 사용하세요.aws elb set-load-balancer-policies-for-backend-server --load-balancer-namemy-loadbalancer--instance-port80--policy-namesmy-existing-policy활성화할 다른 정책이 없는 경우에는 다음과 같이
--policy-names옵션을 통해 빈 문자열을 지정합니다.aws elb set-load-balancer-policies-for-backend-server --load-balancer-namemy-loadbalancer--instance-port80--policy-names "[]" -
(선택 사항) 정책이 비활성화되었는지 확인하려면 아래 describe-load-balancers 명령을 사용하세요.
aws elb describe-load-balancers --load-balancer-namemy-loadbalancer응답에는 다음과 같이 정책에 연결된 포트가 없음을 보여주는 정보가 포함되어 있습니다.
{ "LoadBalancerDescriptions": [ { ... "BackendServerDescriptions": [], ... } ] }