本頁說明 Dataproc 叢集網路設定的必要條件和選項。
Dataproc 連線需求
Dataproc 叢集必須位於符合路徑和防火牆需求的虛擬私有雲網路中,才能安全地存取 Google API 和其他資源。
路線規定
如要在叢集 VM 上執行的 Dataproc 代理程式與 Dataproc 控制項 API 之間建立通訊,Dataproc 叢集 VPC 網路必須有網際網路閘道的路徑。僅限內部 IP 的叢集也必須這麼做。
根據預設,Dataproc 2.2 以上版本映像檔叢集會佈建僅具備內部 IP 位址的 VM。Dataproc 會在叢集子網路上自動啟用私人 Google 存取權 (PGA),讓具有內部 IP 位址的叢集 VM 能夠使用系統產生的預設路徑,連上預設網際網路閘道,進而存取 Google API 和服務。
規則 | 類型 | 目的地 IP 範圍 | 優先順序 | 範圍限制 | 下一個躍點 |
---|---|---|---|---|---|
default-route-[id] |
靜態 | 0.0.0.0/0 |
1000 |
- | 預設網際網路閘道 |
PGA 可確保叢集流量不會周遊公開網際網路,也不會離開 Google 資料中心 (請參閱 PGA 範例圖表)。
不建議刪除網際網路閘道的預設路徑。如要控管網際網路的網路存取權,請改用防火牆規則或政策。
如果您已刪除網際網路閘道的預設路徑,請務必新增預設路徑。目的地 IP 範圍必須為 0.0.0.0/0
,因為 Dataproc 控制項 API 的 IP 範圍並非靜態。
防火牆需求
Dataproc 叢集的虛擬私有雲網路必須明確允許下列流量:
從 Dataproc 叢集 VM 啟動的流量,會傳輸至 Dataproc 控制項 API 和其他 Dataproc 叢集 VM。根據虛擬私有雲網路的輸出允許所有默示規則,這類流量預設會獲得允許。如果您已新增覆寫輸出拒絕防火牆規則,請建立輸出允許防火牆規則。
由於虛擬私有雲網路防火牆具有狀態,因此系統預設允許從 Dataproc 控制項 API 到 Dataproc 叢集 VM 的回應流量。
Dataproc 叢集 VM 從其他 Dataproc 叢集 VM 收到的流量。根據預設,虛擬私有雲網路的所有輸入防火牆規則會拒絕這類流量。您必須建立輸入允許防火牆規則。
- 為 Dataproc 叢集 VM 使用網路標記,將必要防火牆規則的適用範圍限制為僅限 Dataproc 叢集 VM。如果您未使用網路標記,可以根據叢集 VM 使用的服務帳戶指定目標。否則,您可以設定防火牆規則,套用至虛擬私有雲網路中的所有 VM。
- 如要確保網路存取和連線安全,請使用安全標記,而非網路標記,定義防火牆規則來源和目標。
建立允許輸入的防火牆規則
如果您或網路/安全管理員建立要套用至 Dataproc 叢集虛擬私有雲網路的連入防火牆規則,該規則必須具備下列特徵:
sources 參數會指定封包來源。所有 Dataproc 叢集 VM 都必須能夠彼此通訊。您可以透過 IP 位址範圍 (Dataproc 叢集子網路的主要範圍)、網路標記或與 VM 相關聯的服務帳戶,識別叢集中的 VM。
規則的目標必須識別叢集 VM。目標可以是 VPC 網路中的所有 VM,也可以透過目標網路標記或目標服務帳戶識別 VM。
規則必須包含下列通訊協定和通訊埠:
- TCP (所有通訊埠,0 到 65535)
- UDP (所有通訊埠,0 到 65535)
- ICMP
Dataproc 使用在多個通訊埠上執行的服務。指定所有通訊埠有助於服務順利執行。
規則的優先順序必須高於適用於相同來源和目標的任何輸入拒絕防火牆規則。
建立輸出允許防火牆規則
如果您或網路/安全管理員建立要套用至 Dataproc 叢集虛擬私有雲網路的出站防火牆規則,該規則必須具備下列特徵:
目的地參數可指定封包目的地。所有 Dataproc 叢集 VM 都必須能夠彼此發起流量,以及發起至 Dataproc 控制 API 的流量。由於控制項 API 的 IP 位址不是靜態,因此必須以 IP 範圍
0.0.0.0/0
指定目的地。規則的目標必須識別叢集 VM。目標可以是 VPC 網路中的所有 VM,也可以透過目標網路標記或目標服務帳戶識別 VM。
規則必須包含下列通訊協定和通訊埠:
- TCP (所有通訊埠,0 到 65535)
- UDP (所有通訊埠,0 到 65535)
- ICMP
Dataproc 使用在多個通訊埠上執行的服務。指定所有通訊埠有助於服務順利執行。
規則的優先順序必須高於適用於相同目的地和目標的任何輸出拒絕防火牆規則。
診斷虛擬私有雲網路防火牆規則
如要稽核未經優先順序較高的防火牆規則處理的封包,可以建立下列兩項優先順序較低的 (65534) 拒絕防火牆規則。與默示防火牆規則不同,您可以針對每個低優先順序規則啟用防火牆規則記錄:
輸入拒絕規則 (來源
0.0.0.0/0
、所有通訊協定、虛擬私有雲網路中的所有目標)輸出拒絕規則 (目的地
0.0.0.0/0
、所有通訊協定、虛擬私有雲網路中的所有目標)
有了這些低優先順序規則和防火牆規則記錄功能,您就能記錄未經優先順序較高 (可能更具體) 防火牆規則處理的封包。這兩項低優先順序規則也符合安全性最佳做法,可實作「最終捨棄封包」策略。
檢查這些規則的防火牆規則記錄,判斷是否要建立或修改優先順序較高的規則,允許封包通過。舉例來說,如果 Dataproc 叢集 VM 之間傳送的封包遭到捨棄,可能表示您必須調整防火牆規則。
建立虛擬私人雲端網路
您可以建立自己的自動模式或自訂虛擬私有雲網路,而不使用 default
虛擬私有雲網路。建立叢集時,請建立網路與叢集之間的關聯。
Assured Workloads 環境:使用 Assured Workloads 環境進行法規遵循時,叢集、叢集的虛擬私有雲網路和叢集的 Cloud Storage 值區必須位於 Assured Workloads 環境中。
建立使用虛擬私有雲網路的叢集
控制台
在「自訂叢集」面板的「網路設定」部分中,選取您的網路。選取網路之後,「Subnetwork」(子網路) 選取器會顯示您選取做為叢集地區的可用子網路。
Google Cloud CLI
搭配使用 ‑‑network
或 ‑‑subnet
標記,在網路的子網路上建立叢集。gcloud dataproc clusters create
如果您使用 ‑‑network 標記,叢集就會使用名稱與建立地區網路名稱相同的子網路。
--network example
. 由於建立自動網路時,每個地區都會有名稱與自動網路相同的子網路,因此您可以將自動模式虛擬私有雲端網路名稱傳遞給 ‑‑network
標記。
叢集會使用 ‑‑region 標記指定的地區中,自動模式虛擬私有雲的子網路。
gcloud dataproc clusters create CLUSTER_NAME \ --network NETWORK_NAME \ --region=REGION \ ... other args ...
--subnet example
。您可以使用 ‑‑subnet
標記建立叢集,該叢集會使用叢集區域中的自動模式或自訂虛擬私有雲網路子網路。指定子網路的完整資源路徑。
gcloud dataproc clusters create CLUSTER_NAMEW \ --subnet projects/PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME \ --region=REGION \ ... other args ...
REST API
您可以指定 networkUri 或 subnetworkUri 的 GceClusterConfig
欄位,做為 clusters.create 要求的一部分。
示例
POST /v1/projects/my-project-id/regions/us-central1/clusters/ { "projectId": "PROJECT_ID", "clusterName": CLUSTER_NAME, "config": { "configBucket": "", "gceClusterConfig": { "subnetworkUri": SUBNET_NAME, }, ...
在其他專案中建立使用虛擬私有雲網路的叢集
Dataproc 叢集可以使用主專案中定義的共用 VPC 網路。建立 Dataproc 叢集的專案稱為「服務專案」。
找出 Dataproc 叢集專案編號:
- 在Google Cloud 控制台中,開啟「IAM & Admin」(IAM 與管理) 設定頁面。選取要建立 Dataproc 叢集的專案。複製專案 ID。
具有共用虛擬私有雲管理員角色的主體必須執行下列步驟。如需背景資訊,請參閱設定共用虛擬私有雲的指示。
確認共用虛擬私有雲主專案已啟用。
將含有 Dataproc 叢集的專案附加至主專案。
設定Dataproc 服務代理人服務帳戶 (
service-[project-number]@dataproc-accounts.iam.gserviceaccount.com
),以具備主專案的網路使用者角色:
服務帳戶具備主專案的
Network User
角色後,請建立叢集,並使用共用虛擬私有雲網路。
建立使用其他專案中虛擬私有雲子網路的叢集
Dataproc 叢集可以使用主專案中定義的共用 VPC 子網路。建立 Dataproc 叢集的專案稱為「服務專案」。
找出 Dataproc 叢集專案編號:
- 在Google Cloud 控制台中,開啟「IAM & Admin」(IAM 與管理) 設定頁面。選取要建立 Dataproc 叢集的專案。複製專案 ID。
具有共用虛擬私有雲管理員角色的主體必須執行下列步驟。如需背景資訊,請參閱設定共用虛擬私有雲的指示。
確認共用虛擬私有雲主專案已啟用。
將含有 Dataproc 叢集的專案附加至主專案。
設定Dataproc 服務代理人服務帳戶 (
service-[project-number]@dataproc-accounts.iam.gserviceaccount.com
),以具備主專案的網路使用者角色:
服務帳戶具備主專案的
Network User
角色後,請建立叢集,並使用共用虛擬私有雲子網路。
建立僅具備內部 IP 的叢集
本節適用於 2.2
之前的映像檔版本叢集。使用 2.2 以上版本的映像檔建立 Dataproc 叢集時,系統預設會啟用僅含內部 IP 位址的叢集 VM。
您可以使用 Google Cloud 控制台、gcloud CLI 或 Dataproc API,建立只有內部 IP 位址的叢集。請注意,啟用僅限內部 IP 時,Dataproc 會自動在叢集的區域子網路上啟用私人 Google 存取權,允許連線至 Google API 和服務。
控制台
您可以在 Google Cloud 控制台的 Dataproc「建立叢集」頁面,建立只有內部 IP 位址的 Dataproc 叢集。在「自訂叢集」面板上點選「僅限內部 IP」,即可為叢集啟用這項功能。
gcloud CLI
您可以使用 gcloud dataproc clusters create
指令搭配 ‑‑no-address
標記,建立只有內部 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 bucket,然後使用初始化動作,在建立叢集時從 bucket 下載依附元件。
Dataproc 和 VPC Service Controls 網路
管理員可以使用 VPC Service Controls 定義 Google 代管服務資源的安全範圍,藉此控管對這些服務和這些服務之間的通訊。
將 VPC Service Controls 網路與 Dataproc 叢集搭配使用時,請注意下列限制和策略:
如要在 VPC Service Controls 範圍外安裝元件,請建立預先安裝元件的 Dataproc自訂映像檔,然後使用該自訂映像檔建立叢集。
請參閱「Dataproc special steps to protect using VPC Service Controls」(使用 VPC Service Controls 保護 Dataproc 的特殊步驟)。
後續步驟
- 如要排解 Dataproc 叢集建立問題,請參閱「排解叢集建立問題」。