Amazon Web Services 한국 블로그

AWS Global Accelerator를 통한 원격 클라이언트 IP 주소 보존 기능 활용하기

AWS Global Accelerator는 네트워크 트래픽을 다수의 AWS 리전으로 라우팅하여 글로벌 애플리케이션의 성능과 가용성을 개선하는 네트워크 서비스입니다. 엣지 로케이션과 글로벌 네트워크을 사용하여 애플리케이션 상태, 네트워크 상태 및 사용자의 지리적 위치에 따라 트래픽을 전달하고, 여러 AWS 로케이션에서 알려진 정적 Anycast IP 주소를 제공합니다(자세한 내용은 새로운 소식 – 가용성과 성능을 높이는 AWS Global Accelerator 참조)

즉, 수신 TCP 또는 UDP 트래픽을 Application Load Balancer, Network Load Balancer 또는 탄력적 IP 주소로 라우팅할 수 있습니다.

얼마 전 AWS Global Accelerator에서 Application Load Balancer로 트래픽을 라우팅하는 경우 엔드포인트에서 실행되는 코드에 사용자 클라이언트의 IP 주소를 사용할 수 있습니다. 따라서, 특정 IP 주소와 관련된 비지니스 로직을 적용할 수 있게 됩니다. 예를 들어 IP 주소에 따라 필터링하는 보안 그룹을 사용하고 사용자의 IP 주소 또는 지리적 위치에 따라 사용자 지정 콘텐츠를 사용자에게 제공할 수 있습니다. 또한 IP 주소를 사용하여 사용자 기반의 지리적 분포에 대한 보다 정확한 통계를 수집할 수 있습니다.

클라이언트 IP 주소 활용하기

이미 AWS Global Accelerator를 사용 중이라면 엔드포인트에서 가중치를 사용하여 클라이언트 IP 주소 보존을 단계적으로 사용하는 것이 좋습니다. 이렇게 하면 IP 주소를 사용하는 규칙 또는 시스템이 계속해서 예상대로 작동하는지 확인할 수 있습니다.

이 새로운 기능을 테스트하기 위해 일부 EC2 인스턴스를 시작하고 Application Load Balancer를 설정하고 대상 그룹에 인스턴스를 배치한 후 ALB 앞에 액셀러레이터를 생성했습니다.

브라우저의 IP 주소를 확인했습니다.

Global Accelerator의 도움을 받아 단순한 Python 프로그램을 설치하고 Global Accelerator의 IP 주소 중 하나로 HTTP 요청을 전송한 후 출력을 캡처했습니다.

소스(99.82.172.36)는 액셀러레이터에 사용된 내부 주소입니다. 기준이 설정되고 모든 항목이 예상대로 작동하고 있으므로 이제 클라이언트 IP 주소 보존 기능을 활성화할 수 있습니다.

AWS Global Accelerator 콘솔을 열고 액셀러레이터를 찾은 다음 아래에 표시된 것과 같이 현재 구성을 검토합니다. 포트 80에 대한 수신기를 클릭하고 기존 엔드포인트 그룹을 클릭합니다.

거기서 [Add endpoint]를 클릭하고 그룹의 새 엔드포인트를 추가하고 [Weight] 255를 사용하고 [Preserve client IP address]를 선택합니다.

이제 엔드포인트 그룹에 동일한 ALB를 가리키는 2개의 엔드포인트가 있습니다. 클라이언트 IP가 보존되는 엔드포인트와 그렇지 않은 엔드포인트입니다.

서비스 환경에서는 가중치를 낮게 시작하고 IP 주소에 종속되는 모든 보안 그룹 또는 기타 논리가 계속해서 예상대로 작동하는지 확인합니다. 가중치를 사용하여 Blue/Green 배포 및 소프트웨어 업데이트 중의 트래픽을 관리할 수도 있습니다.

지금은 단순히 테스트 중이므로 고민 없이 이전 엔드포인트(IP가 보존되지 않는 엔드포인트)를 삭제합니다. 엔드포인트 변경은 몇 분 안에 적용되며 테스트 창을 새로 고칠 수 있습니다.

이제 코드에서 X-Forwarded-For 헤더를 사용하여 브라우저의 IP 주소에 액세스하고 원하는 대로 사용할 수 있습니다. 이 IP 주소를 보안 그룹 규칙에 사용할 수도 있습니다.

전환에 대한 모범 사례는 클라이언트 IP 주소 보존을 사용하도록 ALB 엔드포인트 전환을 참조하십시오.

주요 사항
다음은 클라이언트 IP 보존에 대해 알아야 할 몇 가지 중요한 정보입니다.

ENI(탄력적 네트워크 인터페이스) 사용 – Global Accelerator는 IP 보존 엔드포인트가 포함된 각 서브넷에 대해 하나의 ENI를 생성하고 더 이상 필요하지 않게 되면 삭제합니다. ENI를 편집하거나 삭제하지 마십시오.

보안 그룹 – Global Accelerator는 GlobalAccelerator라는 이름의 보안 그룹을 생성하고 관리합니다. 마찬가지로 이 보안 그룹도 편집하거나 삭제하지 마십시오.

아시아 태평양(서울) 리전 등의 Application Load Balancer에 대해 신규 기능을 활성화할 수 있습니다.

Jeff