이 페이지에서는 Dataproc 클러스터 네트워크 구성 요구사항 및 옵션에 대해 설명합니다.
Dataproc 연결 요구사항
Dataproc 클러스터는 Google API 및 기타 리소스에 안전하게 액세스하기 위한 경로 및 방화벽 요구사항을 충족하는 Virtual Private Cloud 네트워크에 있어야 합니다.
경로 요구사항
클러스터 VM에서 실행되는 Dataproc 에이전트와 Dataproc 제어 API 간의 통신을 설정하려면 Dataproc 클러스터 VPC 네트워크에 인터넷 게이트웨이로 연결되는 경로가 있어야 합니다. 이는 내부 IP 전용 클러스터에도 필요합니다.
기본적으로 Dataproc 2.2 이상 이미지 버전 클러스터는 내부 IP 전용 주소로 VM을 프로비저닝합니다. Dataproc은 내부 IP 주소가 있는 클러스터 VM이 기본 인터넷 게이트웨이에 대한 시스템 생성 기본 경로를 사용하여 Google API 및 서비스에 연결할 수 있도록 클러스터 서브넷에서 비공개 Google 액세스(PGA)를 자동으로 사용 설정합니다.
규칙 | 유형 | 대상 IP 범위 | 우선순위 | 범위 한도 | 다음 홉 |
---|---|---|---|---|---|
default-route-[id] |
정적 | 0.0.0.0/0 |
1000 |
- | 기본 인터넷 게이트웨이 |
PGA는 클러스터 트래픽이 공개 인터넷을 통과하지 않고 Google 데이터 센터를 벗어나지 않게 합니다(PGA 예시 다이어그램 참고).
인터넷 게이트웨이에 대한 기본 경로를 삭제하지 않는 것이 좋습니다. 인터넷에 대한 네트워크 액세스를 제어하려면 대신 방화벽 규칙 또는 정책을 사용하세요.
인터넷 게이트웨이의 기본 경로를 삭제한 경우 기본 경로를 추가해야 합니다. Dataproc Control API의 IP 범위는 정적이지 않으므로 대상 IP 범위는 0.0.0.0/0
이어야 합니다.
방화벽 요구사항
Dataproc 클러스터의 VPC 네트워크는 다음 트래픽을 명시적으로 허용해야 합니다.
Dataproc 클러스터 VM에서 Dataproc 제어 API 및 기타 Dataproc 클러스터 VM으로 시작된 트래픽. 이 트래픽은 VPC 네트워크의 이그레스 모두 허용 묵시적 규칙에 의해 기본적으로 허용됩니다. 재정의 이그레스 거부 방화벽 규칙을 추가한 경우 이그레스 허용 방화벽 규칙을 만드세요.
VPC 네트워크 방화벽의 스테이트풀(Stateful) 특성으로 인해 Dataproc 제어 API에서 Dataproc 클러스터 VM으로의 응답 트래픽은 기본적으로 허용됩니다.
다른 Dataproc 클러스터 VM에서 Dataproc 클러스터 VM으로 수신된 트래픽입니다. 이 트래픽은 VPC 네트워크의 모든 인그레스를 거부하는 내재된 방화벽 규칙에 의해 기본적으로 거부됩니다. 인그레스 허용 방화벽 규칙을 만들어야 합니다.
- 필요한 방화벽 규칙의 적용 범위를 Dataproc 클러스터 VM으로만 제한할 수 있도록 Dataproc 클러스터 VM에 네트워크 태그를 사용합니다. 네트워크 태그를 사용하지 않는 경우 클러스터 VM에 사용되는 서비스 계정으로 타겟을 지정할 수 있습니다. 그렇지 않으면 VPC 네트워크의 모든 VM에 적용되도록 방화벽 규칙을 구성할 수 있습니다.
- 보다 안전한 네트워크 액세스 및 연결을 위해서는 네트워크 태그 대신 보안 태그를 사용하여 방화벽 규칙 소스와 타겟을 정의합니다.
인그레스 허용 방화벽 규칙 만들기
사용자, 네트워크 또는 보안 관리자가 Dataproc 클러스터 VPC 네트워크에 적용할 인그레스 방화벽 규칙을 만드는 경우 다음 특성이 있어야 합니다.
sources 매개변수는 패킷의 소스를 지정합니다. 모든 Dataproc 클러스터 VM이 서로 통신할 수 있어야 합니다. IP 주소 범위(Dataproc 클러스터 서브넷의 기본 범위), 네트워크 태그 또는 VM과 연결된 서비스 계정을 기준으로 클러스터에 있는 VM을 식별할 수 있습니다.
규칙의 대상은 클러스터 VM을 식별해야 합니다. 대상은 VPC 네트워크의 모든 VM일 수도 있고, 대상 네트워크 태그 또는 대상 서비스 계정에 따라 VM을 식별할 수도 있습니다.
규칙에 다음 프로토콜 및 포트가 포함되어야 합니다.
- TCP(모든 포트, 0~65535)
- UDP(모든 포트, 0~65535)
- ICMP
Dataproc는 여러 포트에서 실행되는 서비스를 사용합니다. 모든 포트를 지정하면 서비스가 성공적으로 실행됩니다.
규칙의 우선순위는 동일한 소스 및 대상에 적용되는 인그레스 거부 방화벽 규칙의 우선순위보다 높아야 합니다.
이그레스 허용 방화벽 규칙 만들기
사용자, 네트워크 또는 보안 관리자가 Dataproc 클러스터 VPC 네트워크에 적용할 이그레스 방화벽 규칙을 만드는 경우 다음 특성이 있어야 합니다.
destinations 매개변수는 패킷의 대상을 지정합니다. 모든 Dataproc 클러스터 VM은 서로 및 Dataproc Control API로 트래픽을 시작할 수 있어야 합니다. 제어 API의 IP 주소는 고정되어 있지 않으므로 대상은 IP 범위
0.0.0.0/0
으로 지정해야 합니다.규칙의 대상은 클러스터 VM을 식별해야 합니다. 대상은 VPC 네트워크의 모든 VM일 수도 있고, 대상 네트워크 태그 또는 대상 서비스 계정에 따라 VM을 식별할 수도 있습니다.
규칙에 다음 프로토콜 및 포트가 포함되어야 합니다.
- TCP(모든 포트, 0~65535)
- UDP(모든 포트, 0~65535)
- ICMP
Dataproc는 여러 포트에서 실행되는 서비스를 사용합니다. 모든 포트를 지정하면 서비스가 성공적으로 실행됩니다.
규칙의 우선순위는 동일한 대상 및 타겟에 적용되는 모든 이그레스 거부 방화벽 규칙의 우선순위보다 높아야 합니다.
VPC 네트워크 방화벽 규칙 진단
우선순위가 높은 방화벽 규칙으로 처리되지 않은 패킷을 감사하려면 다음으로 우선순위가 낮은(65534) 거부 방화벽 규칙을 두 개 만들면 됩니다. 묵시적인 방화벽 규칙과 달리 우선순위가 낮은 각 규칙에서 방화벽 규칙 로깅을 사용 설정할 수 있습니다.
인그레스 거부 규칙(소스
0.0.0.0/0
, 모든 프로토콜, VPC 네트워크의 모든 대상)이그레스 거부 규칙(대상
0.0.0.0/0
, 모든 프로토콜, VPC 네트워크의 모든 대상)
이와 같이 우선순위가 낮은 규칙과 방화벽 규칙 로깅을 사용하면 더 높은 우선순위(및 잠재적으로 더 구체적인) 방화벽 규칙으로 처리되지 않는 패킷을 로깅할 수 있습니다. 이 두 가지 낮은 우선순위 규칙은 '최종 삭제 패킷' 전략을 구현하여 보안 권장사항을 준수합니다.
이러한 규칙의 방화벽 규칙 로그를 검사하여 패킷이 허용되도록 우선순위가 더 높은 규칙을 만들거나 수정해야 하는지 확인합니다. 예를 들어 Dataproc 클러스터 VM 간에 전송된 패킷이 삭제된 경우 이는 방화벽 규칙을 조정해야 한다는 의미일 수 있습니다.
VPC 네트워크 만들기
default
VPC 네트워크를 사용하는 대신 자체 자동 모드 또는 커스텀 VPC 네트워크를 만들 수 있습니다. 클러스터를 만들 때 네트워크를 클러스터와 연결합니다.
Assured Workloads 환경: 규정 준수를 위해 Assured Workloads 환경을 사용할 때는 클러스터, VPC 네트워크, Cloud Storage 버킷이 Assured Workloads 환경 내에 포함되어야 합니다.
VPC 네트워크를 사용하는 클러스터 만들기
콘솔
클러스터 맞춤설정 패널의 네트워크 구성 섹션에서 네트워크를 선택합니다. 네트워크를 선택한 후 서브네트워크 선택기에 클러스터에 선택한 리전에서 사용할 수 있는 서브네트워크가 표시됩니다.
Google Cloud CLI
gcloud dataproc clusters create
를 ‑‑network
또는 ‑‑subnet
플래그와 함께 사용하여 네트워크의 서브넷에 클러스터를 만듭니다.
‑‑network 플래그를 사용하면 클러스터는 클러스터가 생성된 리전에 지정된 네트워크와 이름이 동일한 서브네트워크를 사용합니다.
--network example
. 자동 네트워크는 각 리전의 서브넷으로 생성되고 각 서브넷에 네트워크 이름이 지정되므로 자동 모드 VPC 네트워크 이름을 ‑‑network
플래그로 전달할 수 있습니다.
클러스터는 ‑‑region 플래그로 지정된 리전에서 자동 모드 VPC 서브네트워크를 사용합니다.
gcloud dataproc clusters create CLUSTER_NAME \ --network NETWORK_NAME \ --region=REGION \ ... other args ...
--subnet example
. ‑‑subnet
플래그를 사용하여 클러스터 리전에서 자동 모드 또는 커스텀 VPC 네트워크 서브넷을 사용하는 클러스터를 만들 수 있습니다. 서브넷의 전체 리소스 경로를 지정합니다.
gcloud dataproc clusters create CLUSTER_NAMEW \ --subnet projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME \ --region=REGION \ ... other args ...
REST API
clusters.create 요청의 일부로 networkUri 또는 subnetworkUri GceClusterConfig
필드를 지정할 수 있습니다.
예시
POST /v1/projects/my-project-id/regions/us-central1/clusters/ { "projectId": "PROJECT_ID", "clusterName": CLUSTER_NAME, "config": { "configBucket": "", "gceClusterConfig": { "subnetworkUri": SUBNET_NAME, }, ...
다른 프로젝트에서 VPC 네트워크를 사용하는 클러스터 만들기
Dataproc 클러스터는 호스트 프로젝트에 정의된 공유 VPC 네트워크를 사용할 수 있습니다. Dataproc 클러스터가 생성된 프로젝트를 서비스 프로젝트라고 부릅니다.
Dataproc 클러스터 프로젝트 번호를 찾습니다.
- Google Cloud 콘솔에서 IAM 및 관리자 설정 페이지를 엽니다. Dataproc 클러스터를 만들 프로젝트를 선택합니다. 프로젝트 ID를 복사합니다.
공유 VPC 관리자 역할이 있는 주 구성원은 다음 단계를 수행해야 합니다. 배경 정보는 공유 VPC 설정 지침을 참조하세요.
공유 VPC 호스트 프로젝트가 사용 설정되었는지 확인합니다.
호스트 프로젝트에 Dataproc 클러스터 포함 프로젝트를 연결합니다.
호스트 프로젝트의 네트워크 사용자 역할을 갖도록 Dataproc 서비스 에이전트 서비스 계정(
service-[project-number]@dataproc-accounts.iam.gserviceaccount.com
)을 구성합니다.Google Cloud 콘솔에서 IAM 및 관리자 페이지를 엽니다.
프로젝트 선택기를 사용하여 새 호스트 프로젝트를 선택합니다.
액세스 권한 부여를 클릭합니다.
액세스 권한 부여 양식을 작성합니다.
주 구성원 추가: 서비스 계정을 입력합니다.
역할 할당: 필터 상자에 "Compute Network"를 삽입한 후 Compute Network 사용자 역할을 선택합니다.
저장을 클릭합니다.
서비스 계정에 호스트 프로젝트에 대한
Network User
역할이 지정된 후 공유 VPC 네트워크를 사용하는 클러스터를 만듭니다.
다른 프로젝트에서 VPC 서브네트워크를 사용하는 클러스터 만들기
Dataproc 클러스터는 호스트 프로젝트에 정의된 공유 VPC 서브네트워크를 사용할 수 있습니다. Dataproc 클러스터가 생성된 프로젝트를 서비스 프로젝트라고 부릅니다.
Dataproc 클러스터 프로젝트 번호를 찾습니다.
- Google Cloud 콘솔에서 IAM 및 관리자 설정 페이지를 엽니다. Dataproc 클러스터를 만들 프로젝트를 선택합니다. 프로젝트 ID를 복사합니다.
공유 VPC 관리자 역할이 있는 주 구성원은 다음 단계를 수행해야 합니다. 배경 정보는 공유 VPC 설정 지침을 참조하세요.
공유 VPC 호스트 프로젝트가 사용 설정되었는지 확인합니다.
호스트 프로젝트에 Dataproc 클러스터 포함 프로젝트를 연결합니다.
호스트 프로젝트의 네트워크 사용자 역할을 갖도록 Dataproc 서비스 에이전트 서비스 계정(
service-[project-number]@dataproc-accounts.iam.gserviceaccount.com
)을 구성합니다.Google Cloud 콘솔에서 VPC 네트워크 페이지를 엽니다.
프로젝트 선택기를 사용하여 호스트 프로젝트를 선택합니다.
Dataproc 클러스터에 사용되는 서브네트워크가 포함된 네트워크를 클릭합니다.
VPC 네트워크 세부정보 페이지에서 클러스터에 사용할 서브네트워크 이름 옆의 체크박스를 클릭합니다.
정보 패널이 열리지 않았으면 정보 패널 표시를 클릭합니다.
각 서비스 계정에 대해 다음 단계를 수행합니다.
정보 패널에서 주 구성원 추가를 클릭합니다.
액세스 권한 부여 양식을 작성합니다.
주 구성원 추가: 서비스 계정을 입력합니다.
역할 할당: 필터 상자에 "Compute Network"를 삽입한 후 Compute Network 사용자 역할을 선택합니다.
저장을 클릭합니다.
서비스 계정에 호스트 프로젝트에 대한
Network User
역할이 지정된 후 공유 VPC 서브네트워크를 사용하는 클러스터를 만듭니다.
내부 IP 전용 클러스터 만들기
이 섹션은 2.2
이전 이미지 버전 클러스터에 적용됩니다. 2.2 이상의 이미지 버전으로 Dataproc 클러스터를 만들 때는 기본적으로 내부 IP 전용 주소가 있는 클러스터 VM이 사용 설정됩니다.
Google Cloud 콘솔, gcloud CLI 또는 Dataproc API를 사용하여 내부 IP 주소로만 클러스터를 만들 수 있습니다. Dataproc은 Google API 및 서비스에 연결할 수 있도록 내부 IP 전용이 사용 설정된 경우 클러스터의 리전 서브넷에서 비공개 Google 액세스를 자동으로 사용 설정합니다.
콘솔
Google Cloud 콘솔의 Dataproc 클러스터 만들기 페이지에서 내부 IP 주소로만 Dataproc 클러스터를 만들 수 있습니다. 클러스터에 이 기능을 사용 설정하려면 클러스터 맞춤설정 패널에서 내부 IP만 클릭합니다.
gcloud CLI
‑‑no-address
플래그와 함께 gcloud dataproc clusters create
명령어를 사용하면 내부 IP 주소로만 클러스터를 만들 수 있습니다.
gcloud dataproc clusters create CLUSTER_NAME \ --no-address \ --network NETWORK_NAME \ --region=REGION \ ... other args ...
자동 네트워크는 각 리전에서 자동 네트워크와 이름이 동일한 서브넷으로 만들어지므로 자동 네트워크 이름을 ‑‑network flag
로 전달하여 클러스터의 리전에서 자동 서브네트워크를 사용하는 클러스터를 만들 수 있습니다.
또한, ‑‑subnet
플래그를 사용하여 클러스터가 생성되는 리전에서 자동 또는 커스텀 서브네트워크를 사용하는 클러스터를 만들 수 있습니다. ‑‑subnet
플래그를 서브넷의 전체 리소스 경로로 전달합니다.
gcloud dataproc clusters create cluster-name \ --no-address \ --subnet projects/project-id/regions/region/subnetworks/subnetwork-name \ --region=region \ ... other args ...
REST API
clusters.create
요청의 일부로 GceClusterConfig.internalIpOnly
필드를 사용하여 내부 IP 주소만 사용 설정된 클러스터를 만들 수 있습니다.
예:
POST /v1/projects/my-project-id/regions/us-central1/clusters/ { "projectId": "my-project-id", "clusterName": "example-cluster", "config": { "configBucket": "", "gceClusterConfig": { "subnetworkUri": "custom-subnet-1", "zoneUri": "us-central1-b", "internalIpOnly": true }, ...
내부 IP 전용 클러스터로 종속 항목 다운로드
기본적으로 내부 IP 전용 클러스터는 인터넷에 액세스할 수 없습니다. 따라서 인터넷에서 종속 항목을 다운로드하는 작업(예: Maven Central에서 Spark 종속 항목 패키지 다운로드)이 실패합니다. 다음과 같은 방법으로 문제를 방지할 수 있습니다.
Cloud NAT를 사용하여 인터넷에 대한 클러스터 액세스 권한을 사용 설정합니다.
종속 항목이 포함된 커스텀 이미지를 만듭니다(예:
/usr/lib/spark/jars/
의 Spark 종속 항목 패키지).종속 항목을 Cloud Storage 버킷에 업로드한 다음 초기화 작업을 사용하여 클러스터 생성 중에 버킷의 종속 항목을 다운로드합니다.
Dataproc 및 VPC 서비스 제어 네트워크
관리자는 VPC 서비스 제어를 사용하여 Google 관리형 서비스 리소스 주위에 보안 경계를 정의하여 해당 서비스 간의 통신을 제어할 수 있습니다.
Dataproc 클러스터에서 VPC 서비스 제어 네트워크를 사용할 때는 다음 제한사항과 전략에 유의하세요.
VPC 서비스 제어 경계 외부에 구성요소를 설치하려면 구성요소를 사전 설치하는 Dataproc 커스텀 이미지를 만든 다음 커스텀 이미지를 사용하여 클러스터를 만듭니다.
다음 단계
- Dataproc 클러스터 생성 문제를 해결하려면 클러스터 생성 문제 해결 참고하기