클러스터가 프라이빗 서브넷에 있는 경우 애플리케이션을 통해 EMR 클러스터에 액세스하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2020년 5월 11일

Apache Livy와 같은 애플리케이션을 사용하여 프라이빗 서브넷에 있는 Amazon EMR 클러스터에 액세스하고 작업을 제출하려고 합니다.

간략한 설명

퍼블릭 서브넷에서 Application Load Balancer를 생성합니다. Application Load Balancer의 대상을 마스터 노드의 퍼블릭 IP 주소로 설정합니다. 이렇게 하면 프라이빗 서브넷에 있는 EMR 클러스터에 연결한 다음 REST API를 사용하여 클라이언트에 작업을 제출할 수 있습니다.

해결 방법

참고: Kerberos를 사용하여 클러스터를 시작하거나 Livy에 대해 SSL을 활성화하는 경우 다음이 작동하지 않을 수 있습니다.

  1. Amazon EC2(Amazon Elastic Compute Cloud) 콘솔을 엽니다.
  2. 탐색 창의 [로드 밸렁싱]에서 [로드 밸런서]를 선택합니다.
  3. [로드 밸런서 생성]을 선택합니다.
  4. [로드 밸런서 유형 선택] 페이지의 [Application Load Balancer]에서 [생성]을 선택합니다.
  5. [단계 1: 로드 밸런서 구성] 페이지에서 다음을 수행합니다.
    [체계]에서 [인터넷 경계]를 선택합니다.
    [리스너]에 기본 옵션(HTTP 및 포트 80)을 사용합니다.
    [VPC]에서 EMR 클러스터가 있는 VPC를 선택합니다.
    [가용 영역]에서 서브넷 두 개를 선택합니다. 그 중 하나가 EMR 클러스터가 있는 서브넷(프라이빗 서브넷)인지 확인합니다.
  6. [다음: 보안 설정 구성]을 선택합니다.
  7. 이전 단계에서 보안 리스너를 생성한 경우 [보안 설정 구성] 페이지를 완료합니다. [다음: 보안 그룹 구성]을 선택합니다.
  8. Application Load Balancer에 대한 보안 그룹을 선택합니다. 인터넷 경계 Application Load Balancer라는 점을 기억하십시오. 수신 요청을 특정 IP 주소 또는 IP 주소 범위로 제한하는 보안 그룹을 사용하는 것이 가장 좋습니다.
  9. [다음: 라우팅 구성]을 선택합니다.
  10. [4단계: 라우팅 구성] 페이지에서 다음을 수행합니다.
    [대상 유형]에서 [ip]를 선택합니다.
    [프로토콜]에서 [HTTPS]를 선택합니다.
    [포트]에 클라이언트 웹 UI의 포트를 입력합니다. 예를 들어 Livy의 경우 8998을 입력합니다. 자세한 내용은 Amazon EMR 클러스터에 호스팅된 웹 인터페이스 보기를 참조하십시오.
    [상태 확인] 섹션의 [프로토콜]에서 [HTTP]를 선택합니다.
    [경로]에 /sessions를 입력합니다.
  11. [다음: 대상 등록]을 선택합니다.
  12. [5단계: 대상 등록] 페이지의 [IP]에 마스터 노드의 퍼블릭 IP 주소를 입력합니다. 마스터 노드의 퍼블릭 IP 주소는 클러스터 세부 정보 페이지의 [하드웨어] 탭에서 찾을 수 있습니다.
  13. [목록에 추가]를 선택하여 [등록 대상] 목록에 IP 주소를 추가합니다.
  14. [다음: 검토]를 선택하고 [생성]을 선택합니다.
  15. [상태]가 [활성]으로 변경되면 [리스너] 탭을 선택합니다.
  16. [규칙] 열에서 대상 그룹 링크를 선택합니다.
  17. [대상] 탭에서 [등록된 대상] 및 [가용 영역]이 정상인지 확인합니다.
  18. [설명] 탭에서 [Load balancer] 옆에 있는 링크(로드 밸런서의 이름인 링크)를 선택합니다. Livy 웹 UI가 나타나면 구성이 작동하는 것입니다. 즉, 요청이 프라이빗 서브넷의 EMR 클러스터에 있는 Livy에 도달할 수 있습니다.

이제 클라이언트에 작업을 제출할 수 있습니다. 예를 들어 다음 명령은 Apache Spark 작업을 Livy 서버에 제출합니다. livyALB-2103017743.us-east-1.elb.amazonaws.com은 Application Load Balancer의 DNS 이름으로 바꿉니다. DNS 이름은 Application Load Balancer의 [설명] 탭에서 찾을 수 있습니다.

curl -X POST --data '{"kind": "pyspark"}' -H "Content-Type: application/json" livyALB-2103017743.us-east-1.elb.amazonaws.com/sessions

이 문서가 도움이 되었습니까?

AWS에서 개선해야 할 부분이 있습니까?


도움이 필요하십니까?