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

최종 업데이트 날짜: 2021년 7월 26일

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

간략한 설명

인터넷 경계 체계를 사용하여 Application Load Balancer를 생성합니다. Application Load Balancer의 대상을 마스터 노드의 프라이빗 IP 주소로 설정합니다. 이렇게 하면 다음을 수행할 수 있습니다.

  1. 프라이빗 서브넷에 있는 EMR 클러스터에 연결합니다.
  2. REST API를 사용하여 클라이언트에 작업을 제출합니다.

해결 방법

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

  1. Amazon Elastic Compute Cloud(Amazon EC2) 콘솔을 엽니다.
  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를 선택합니다.
    프로토콜에서 HTTP를 선택합니다.
    [포트]에 클라이언트 웹 UI의 포트를 입력합니다. 예를 들어 Livy의 경우 8998을 입력합니다. 자세한 내용은 Amazon EMR 클러스터에 호스팅된 웹 인터페이스 보기를 참조하세요.
    상태 확인 섹션의 프로토콜에서 HTTP를 선택합니다.
    경로/sessions를 입력합니다.
  11. 다음: 대상 등록을 선택합니다.
  12. 5단계: 대상 등록 페이지의 IP에 마스터 노드의 프라이빗 IP 주소를 입력합니다. 마스터 노드의 프라이빗 IP 주소는 클러스터 세부 정보 페이지하드웨어 탭에서 찾을 수 있습니다.
  13. 목록에 추가를 선택하여 등록 대상 목록에 IP 주소를 추가합니다.
  14. 다음: 검토를 선택하고 생성을 선택합니다.
  15. [상태]가 [활성]으로 변경되면 [리스너] 탭을 선택합니다.
  16. [규칙] 열에서 대상 그룹 링크를 선택합니다.
  17. 대상 탭에서 등록된 대상가용 영역이 정상인지 확인합니다.
  18. 설명 탭에서 로드 밸런서 옆에 있는 링크(로드 밸런서의 이름인 링크)를 선택합니다. 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

이 문서가 도움이 되었나요?


결제 또는 기술 지원이 필요합니까?