3.4.3. PROXY 프로토콜 사용
기본적으로 HAProxy 라우터에서는 PROXY 프로토콜을 사용하지 않습니다. 라우터는 들어오는 연결에 PROXY 프로토콜을 예상하도록 ROUTER_USE_PROXY_PROTOCOL
환경 변수를 사용하여 구성할 수 있습니다.
PROXY 프로토콜 활성화
oc set env dc/router ROUTER_USE_PROXY_PROTOCOL=true
$ oc set env dc/router ROUTER_USE_PROXY_PROTOCOL=true
PROXY 프로토콜을 비활성화하려면 변수를 true
또는 TRUE
이외의 값으로 설정합니다.
PROXY 프로토콜 비활성화
oc set env dc/router ROUTER_USE_PROXY_PROTOCOL=false
$ oc set env dc/router ROUTER_USE_PROXY_PROTOCOL=false
라우터에서 PROXY 프로토콜을 활성화하는 경우 PROXY 프로토콜을 사용하도록 라우터 앞에 로드 밸런서를 구성해야 합니다. 다음은 PROXY 프로토콜을 사용하도록 Amazon의 ELB(Elastic Load Balancer) 서비스를 구성하는 예입니다. 이 예에서는 ELB가 포트 80(HTTP), 443(HTTPS) 및 5000(이미지 레지스트리의 경우)을 하나 이상의 EC2 인스턴스에서 실행되는 라우터로 전달한다고 가정합니다.
PROXY 프로토콜을 사용하도록 Amazon ELB 구성
후속 단계를 간소화하려면 먼저 몇 가지 쉘 변수를 설정합니다.
lb='infra-lb' instances=( 'i-079b4096c654f563c' ) secgroups=( 'sg-e1760186' ) subnets=( 'subnet-cf57c596' )
$ lb='infra-lb'
1 $ instances=( 'i-079b4096c654f563c' )
2 $ secgroups=( 'sg-e1760186' )
3 $ subnets=( 'subnet-cf57c596' )
4 Copy to Clipboard Copied! Toggle word wrap Toggle overflow 그런 다음 적절한 리스너, 보안 그룹 및 서브넷을 사용하여 ELB를 만듭니다.
참고HTTP 프로토콜이 아닌 TCP 프로토콜을 사용하도록 모든 리스너를 구성해야 합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ELB에 라우터 인스턴스 또는 인스턴스를 등록합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ELB의 상태 점검을 구성합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 마지막으로
ProxyProtocol
특성이 활성화된 로드 밸런서 정책을 생성하고 ELB의 TCP 포트 80 및 443에서 구성합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow
설정 확인
다음과 같이 로드 밸런서를 검사하여 구성이 올바른지 확인할 수 있습니다.
또는 ELB가 이미 구성되어 있지만 PROXY 프로토콜을 사용하도록 구성되지 않은 경우 HTTP 대신 TCP 프로토콜을 사용하도록 기존 리스너를 변경해야 합니다(TCP 포트 443은 이미 TCP 프로토콜을 사용해야 함).
aws elb delete-load-balancer-listeners --load-balancer-name "$lb" \ --load-balancer-ports 80 aws elb create-load-balancer-listeners --load-balancer-name "$lb" \ --listeners 'Protocol=TCP,LoadBalancerPort=80,InstanceProtocol=TCP,InstancePort=80'
$ aws elb delete-load-balancer-listeners --load-balancer-name "$lb" \
--load-balancer-ports 80
$ aws elb create-load-balancer-listeners --load-balancer-name "$lb" \
--listeners 'Protocol=TCP,LoadBalancerPort=80,InstanceProtocol=TCP,InstancePort=80'
프로토콜 업데이트 확인
다음과 같이 프로토콜이 업데이트되었는지 확인합니다.
- 1
- TCP 포트 80의 리스너를 포함한 모든 리스너는 TCP 프로토콜을 사용해야 합니다.
그런 다음 로드 밸런서 정책을 만들고 위의 5단계에 설명된 대로 ELB에 추가합니다.