기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Classic Load Balancer에 프록시 프로토콜 구성
프록시 프로토콜은 연결을 요청하는 소스에서 연결이 요청된 대상으로 연결 정보를 전달하는 데 사용되는 인터넷 프로토콜입니다. Elastic Load Balancing은 사람이 읽을 수 있는 형식의 헤더를 가진 프록시 프로토콜 버전 1을 사용합니다.
기본적으로 프런트 엔드 및 백 엔드 연결 모두에서 TCP(Transmission Control Protocol)를 사용하면 Classic Load Balancer는 요청 헤더를 변경하지 않고 인스턴스로 요청을 전달합니다. 프록시 프로토콜을 활성화하면 사람이 읽을 수 있는 형식의 헤더가 소스 IP 주소, 대상 IP 주소, 포트 번호와 같은 연결 정보를 포함하는 요청 헤더에 추가됩니다. 이렇게 하면 헤더가 요청의 일부로 인스턴스에 전송됩니다.
참고
the 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": [], ... } ] }