코알못

[AWS] EMR(hadoop) - 클러스터 고정 IP 지정 해보자! 본문

BIG DATA

[AWS] EMR(hadoop) - 클러스터 고정 IP 지정 해보자!

코린이s 2022. 4. 28. 19:21
728x90

EMR 클러스터 생성시 EC2와 다르게 일시 정지 기능이 없어
요금 절약을 위해 클러스터를 종료하고 생성 하게 됩니다.

종료 하고 생성시 마다 IP가 계속적으로 변경되어
BI 툴(redash 등) 에서 hive 접속시 IP 설정을 계속적으로 변경해야 하여 서비스 사용자가 불편함을 겪게 되는 문제가 있습니다.

이를 해결 하기 위해 EMR 클러스터에 고정 IP를 할당하려고 하며 그 방법은 아래와 같다.

우선 GIT 에서 아래 파일을 다운 받는다.

https://github.com/awslabs/aws-support-tools/blob/master/EMR/Assign_Private_IP/assign_private_ip.py

 

GitHub - awslabs/aws-support-tools: Tools and sample code provided by AWS Premium Support.

Tools and sample code provided by AWS Premium Support. - GitHub - awslabs/aws-support-tools: Tools and sample code provided by AWS Premium Support.

github.com

해당 스크립트를 S3 버킷에 저장한뒤 해당 스크립트를 부트스트랩이나 STEP에 등록하여 실행하면 고정 IP가 할당 된다고 가이드 되어 있다.

우선 해당 파이썬 스크립트에 있는 명령어 실행에 필요한 권한 및 설정을 해줘야 한다.

1. EMR > EC2 접근 권한

- 설정 방법 : IAM > 역할 > EMR_EC2_DefaultRole > 권한 추가 > 정책 연결 > AmazonEC2FullAccess 를 연결

만약 FullAccess 권한을 부여하시기를 원하지 않으신다면, 인라인 정책 으로 ec2:AssignPrivateIpAddresses 만 추가해도 된다.

2. EMR 이 private 망일시 EC2 접근을 위한 VPC EC2 엔드포인트 추가 

아래 처럼 EMR 생성후 해당 서버에서 명령어 입력시 keypair 가 있음에도 불구하고 나오지 않는다면 엔드 포인트 설정을 해야한다.

$ aws ec2 describe-key-pairs
{
    "KeyPairs": [
        {
            "Tags": [],
            "KeyName": "test-test",
            "KeyFingerprint": "...",
            "KeyPairId": "key-..."
        },...
        {
            "Tags": [],
            "KeyName": "test",
            "KeyFingerprint": "..",
            "KeyPairId": "key-.."
        }
    ]
}

- VPC > 엔트포인트 > 엔드포인트생성

생성 완료시 아래와 같이 정상적으로 생성 됐음을 확인 할 수 있다.

이제 EMR 생성을 해보자!

EMR 생성시 부트스트랩을 이용하였으며 아래와 같이 입력한다.

- 스크립트 위치 : S3 에 저장한 assign_private_ip.py 파일

- 선택적 인수 : [사용할 고정 IP] [region]

생성 완료후에 EC2 에 가서 해당 EMR 마스터 노드 EC2 를 찾는다.

해당 EC2 정보에 네트워킹 부분을 보면 아래 '보조 프라이빗 IPv4 주소'가 인수로 넘긴 고정 IP 로 생성 된 것을 볼 수 있으며

해당 보조 프라이빗 IP로 요청시 마스터 노드로 요청이 되어 고정 IP 처럼 이용할 수 있다.

아래와 같이 확인 한다.

고정 IP 로 접속 하였으나 실제 접속된 서버는 실제 마스터 IP 인것을 확인 할 수 있다.

$ ssh -i test.pem hadoop@고정IP
EEEEEEEEEEEEEEEEEEEE MMMMMMMM           MMMMMMMM RRRRRRRRRRRRRRR
E::::::::::::::::::E M:::::::M         M:::::::M R::::::::::::::R
EE:::::EEEEEEEEE:::E M::::::::M       M::::::::M R:::::RRRRRR:::::R
  E::::E       EEEEE M:::::::::M     M:::::::::M RR::::R      R::::R
  E::::E             M::::::M:::M   M:::M::::::M   R:::R      R::::R
  E:::::EEEEEEEEEE   M:::::M M:::M M:::M M:::::M   R:::RRRRRR:::::R
  E::::::::::::::E   M:::::M  M:::M:::M  M:::::M   R:::::::::::RR
  E:::::EEEEEEEEEE   M:::::M   M:::::M   M:::::M   R:::RRRRRR::::R
  E::::E             M:::::M    M:::M    M:::::M   R:::R      R::::R
  E::::E       EEEEE M:::::M     MMM     M:::::M   R:::R      R::::R
EE:::::EEEEEEEE::::E M:::::M             M:::::M   R:::R      R::::R
E::::::::::::::::::E M:::::M             M:::::M RR::::R      R::::R
EEEEEEEEEEEEEEEEEEEE MMMMMMM             MMMMMMM RRRRRRR      RRRRRR

[hadoop@ip-실제마스터IP ~]$

 

끝!

- 참고 문서 : https://aws.amazon.com/ko/premiumsupport/knowledge-center/static-private-ip-master-node-emr/

728x90
Comments