このトピックでは、MaxCompute が Virtual Private Cloud (VPC) 内の ApsaraDB RDS、HBase クラスター、Hadoop クラスターなどのサービスにアクセスする方法について説明します。サポートされているアクセス方法には、MaxCompute SQL、UDF、Spark、PyODPS/Mars、外部テーブル、データレイクハウスアーキテクチャなどがあります。
このソリューションでは、リターントラフィック用に 2 つのセキュリティグループ MaxCompute-vpc-xxx と MaxCompute-backup-vpc-xxx が作成されます。ここで、xxx は指定した VPC ID です。これらのセキュリティグループのルールを変更したり、他のコンポーネントのセキュリティルールを管理するために使用したりしないでください。このような変更に起因するいかなる問題についても、プラットフォームは責任を負いません。
制限事項
リージョンとゾーンの制限:中国 (杭州) - ゾーン H、I、J、K。中国 (北京) - ゾーン F、G、H、I、L。中国 (上海) - ゾーン B、E、G、M、N。中国 (張家口) - ゾーン A、B、C。中国 (ウランチャブ) - ゾーン B、C。中国 (深セン) - ゾーン C、D、E、F。中国 (香港) - ゾーン B、C。中国東部 2 (上海) Finance - ゾーン F。日本 (東京) - ゾーン A、B。シンガポール - ゾーン A、B、C。マレーシア (クアラルンプール) - ゾーン A、B。インドネシア (ジャカルタ) - ゾーン A、B。ドイツ (フランクフルト) - ゾーン A、B、C。米国 (シリコンバレー) - ゾーン A、B。米国 (バージニア) - ゾーン A、B。
サポート対象:VPC の IP アドレスまたはドメイン名、ApsaraDB RDS、HBase クラスター、Hadoop クラスター。
操作手順
ステップ 1:アカウントとプロジェクトの準備
MaxCompute とターゲットサービス間のネットワーク接続を作成する前に、次の前提条件が満たされていることを確認してください。
MaxCompute プロジェクトを作成します。データレイクハウスのシナリオでは、プロジェクトのデータ型を Hive 互換に設定することを推奨します。
VPC 内のサービスにアクセスするには、VPC を所有する Alibaba Cloud アカウント、MaxCompute プロジェクトへのアクセスに使用するアカウント、およびターゲットサービスの管理者アカウントが、すべて同じプライマリ Alibaba Cloud アカウントに属していることを確認してください。
ステップ 2:ダイレクトネットワーク接続の作成
1. 権限の付与
操作ユーザーへの権限付与:
この権限付与を実行できるのは、Project Owner、またはテナントレベルの Super_Administrator もしくは Admin ロールを持つユーザーのみです。詳細については、「ロール計画」をご参照ください。
権限付与の手順については、「テナント内のオブジェクト権限リスト」をご参照ください。
MaxCompute が VPC 内に Elastic Network Interface (ENI) を作成して接続できるようにするには、Alibaba Cloud アカウントにログインした状態で 権限付与 をクリックします。
2. セキュリティグループルールの設定
VPC 内に専用のセキュリティグループを作成して、MaxCompute から VPC 内のリソースへのアクセスを制御します。
新しい基本セキュリティグループを作成することを推奨します。他の種類のセキュリティグループや、すでに使用中のセキュリティグループは使用しないでください。MaxCompute は、現在のユーザーの VPC に Elastic Network Interface (ENI) を作成して、ご利用のサービスにアクセスします。
セキュリティグループのアウトバウンドルールを設定して、MaxCompute ジョブ (ENI 経由) がアクセスできる宛先アドレスを制御します。特別な要件がない場合は、デフォルトのアウトバウンドルールをそのまま使用できます。
ENI へのインバウンドトラフィックはリターントラフィックです。したがって、すべてのインバウンドトラフィックを許可する必要があります。
VPC 管理コンソールにログインします。
左側のナビゲーションウィンドウで VPC を選択し、左上でリージョンを選択します。
VPC ページで、対象の VPC の ID/名前 をクリックします。
VPC の詳細ページで、リソース タブを選択します。
リソース タブの VPC リソース 領域で、セキュリティグループ の値にポインターを合わせ、追加 をクリックします。
[セキュリティグループタイプ] には、ベーシックセキュリティグループ を選択します。
ベーシックセキュリティグループ は、デフォルトでアウトバウンドトラフィックを許可します。Advanced Security Groups は、デフォルトでアウトバウンドトラフィックを拒否するため、VPC 内のサービスにアクセスできなくなります。
ネットワーク には、アクセスしたいサービスが含まれている VPC を選択します。
セキュリティグループの作成方法の詳細については、「セキュリティグループの作成」をご参照ください。
MaxCompute ネットワークをサポートするようにセキュリティグループを設定します。
対象のセキュリティグループの操作列で、[ルールを管理]をクリックします。
アクセスルール タブで、受信 タブを選択します。対象のルールの 操作 列で、編集 をクリックします。次のパラメーターを設定して、すべての 受信 トラフィックを許可します。
許可ポリシー を 許可 に設定します。
優先順位 を 1 に設定します。
契約 を [すべて] に設定します。
[ソース] には、アクセスしたいサービスがデプロイされている VPC の CIDR ブロックまたは vSwitch の CIDR ブロックを追加します。
[宛先] はデフォルトでは [ALL(-1/-1)] です。
ルールの設定方法の詳細については、「セキュリティグループの適用ガイドと例」をご参照ください。
HBase の場合、セキュリティグループにネットワーク権限を付与できない場合は、MaxCompute によって作成された ENI の IP アドレスをホワイトリストに追加する必要があります。ENI の IP アドレスは変更される可能性があるため、VPC が属する vSwitch の IP アドレス範囲を追加することをお勧めします。ENI の IP アドレスを取得するには、ECS コンソールにログインし、左側のナビゲーションウィンドウで ネットワークインターフェイス をクリックします。
ネットワーク接続の作成プロセス中に、MaxCompute は帯域幅の要件に基づいて 2 つの ENI を自動的に作成します。これらの ENI は無料で、このセキュリティグループに配置されます。
3. ネットワーク接続の作成
Alibaba Cloud アカウント、または MaxCompute のテナントレベルの Super_Administrator もしくは Admin ロールを持つ RAM ユーザーは、MaxCompute コンソールで MaxCompute と VPC 間の接続を作成できます。詳細については、「MaxCompute のテナントレベルのロール」をご参照ください。接続を作成するには:
MaxCompute コンソールにログインし、左上隅でリージョンを選択します。
左側のナビゲーションウィンドウで、 を選択します。
ネットワーク接続 ページで、新しいネットワーク接続 をクリックします。
新しいネットワーク接続 ダイアログボックスで、プロンプトに従ってパラメーターを設定し、OK をクリックします。初めてネットワーク接続を追加する場合、まず 権限を付与して、MaxCompute プラットフォームプロキシがネットワークインターフェースカードをリクエストできるようにする必要があります。そうしないと、接続を作成できません。
新しいネットワーク接続 ダイアログボックスで、プロンプトに従ってパラメーターを設定し、OK をクリックします。初めてネットワーク接続を追加する場合、まず 権限を付与して、MaxCompute プラットフォームプロキシがネットワークインターフェースをリクエストできるようにする必要があります。そうしないと、接続を作成できません。
次の表にパラメーターを示します。
パラメーター
必須
説明
接続名:
必須
接続のカスタム名。名前は次の要件を満たす必要があります:
-
文字で始まること。
-
文字、アンダースコア (_)、数字のみを含むこと。
-
長さが 1~63 文字であること。
タイプ:
必須
デフォルト値はパススルー接続 (パススルー)です。
パススルー接続 (パススルー) 接続は VPC 接続です。
エリア:
必須
左上で選択したリージョンに基づいて、システムがこのパラメーターを自動的に入力します。詳細については、「サポートされているリージョン」をご参照ください。
選択されたVPC:
必須
Virtual Private Cloud (VPC) は、分離された仮想ネットワークです。従来のデータセンターと同様に、安全で設定可能なプライベートネットワーク空間を提供します。
-
VPC の ID。新しい VPC を作成するには、「VPC の作成または削除」をご参照ください。
-
ID を取得するには:
-
ログイン:VPC コンソール。
-
左側のナビゲーションペインでVPCを選択し、左上隅でリージョンを選択します。
-
VPC ページで、VPC の ID/名前 を取得します。
HBase または Hadoop クラスターに接続する場合、対応するコンソールのネットワーク接続詳細でこの情報を見つけることができます。
-
スイッチ:
必須
vSwitch はサブネットを作成するために使用されます。同じ VPC 内の異なる vSwitch は、内部ネットワークを介して相互に通信できます。異なるゾーンの vSwitch にまたがってクラウドリソースをデプロイすることで、単一ゾーンでの障害からアプリケーションを保護できます。
-
VPC にアタッチされている vSwitch の ID。利用可能な vSwitch がない場合は、「vSwitch の作成または削除」をご参照ください。
-
ID を取得するには:
-
VPC 管理コンソールにログインします。
-
左側のナビゲーションウィンドウでvSwitchを選択し、左上隅でリージョンを選択します。
-
vSwitch ページで、スイッチの ID/名前 を取得します。
HBase または Hadoop クラスターに接続する場合、対応するコンソールのネットワーク接続詳細でこの情報を見つけることができます。
-
セキュリティグループ:
必須
セキュリティグループは、クラウドリソースの仮想ファイアウォールとして機能します。セキュリティグループとそのルールを管理することで、詳細なネットワーク分離とアクセス制御を実装できます。
セキュリティグループの ID。セキュリティグループを作成するには、「セキュリティグループの作成」をご参照ください。
-
4. ターゲットサービスのセキュリティグループの設定
上記の操作を完了して ENI ベースのダイレクト接続を有効にした後、ターゲットサービスにセキュリティルールを追加する必要があります。これらのルールは、MaxCompute を表すセキュリティグループが、9200 や 31000 などの特定のサービスポートにアクセスすることを許可します。
たとえば、ApsaraDB RDS にアクセスするには、ステップ 2 で作成したセキュリティグループからのアクセスを許可するルールを ApsaraDB RDS に追加する必要があります。アクセスしたいサービスがセキュリティグループではなく IP アドレスのみをサポートしている場合は、ターゲットサービスが存在する vSwitch の CIDR ブロック全体を追加する必要があります。
Hadoop クラスターのセキュリティグループを設定します。
Hadoop クラスターのセキュリティグループに次の情報を設定して、MaxCompute がクラスターにアクセスできるようにします。
Hadoop クラスターが存在するセキュリティグループのインバウンドアクセスルールを設定します。
権限付与オブジェクトは、ステップ 2 で ENI 用に作成したセキュリティグループです。
Hive Metastore ポート:9083
HDFS NameNode ポート:8020
HDFS DataNode ポート:50010
たとえば、Alibaba Cloud E-MapReduce 上に作成された Hadoop クラスターに接続する場合、上記のようにセキュリティグループルールを設定する必要があります。詳細については、「セキュリティグループの作成」をご参照ください。
HBase クラスターのセキュリティグループを設定します。
MaxCompute 用に作成されたセキュリティグループまたは ENI の IP アドレスを、HBase クラスターのセキュリティグループまたは IP アドレスホワイトリストに追加します。
たとえば、Alibaba Cloud HBase クラスターに接続する場合:
HBase 管理コンソールにログインします。左上隅で、リージョンを選択します。
左側のナビゲーションウィンドウで、クラスター を選択します。
クラスター ページで、目的のクラスターの名前をクリックします。
左側のナビゲーションウィンドウで、Access Control を選択します。
Whitelist Setting タブおよび Security Group タブで、Add Whitelist または Add Security Group をクリックできます。 セキュリティグループを追加できない場合は、Whitelist Setting タブで ENI の IP アドレスを追加します。 MaxCompute の構成が変更されると ENI の IP アドレスが変更される可能性があるため、vSwitch の CIDR ブロックをホワイトリストに追加することを推奨します。
セキュリティグループまたは IP アドレスホワイトリストの追加方法の詳細については、「ホワイトリストとセキュリティグループの設定」をご参照ください。
ApsaraDB RDS のセキュリティグループを設定します。
MaxCompute 用に作成されたセキュリティグループまたは ENI の IP アドレスを、ApsaraDB RDS のセキュリティグループまたは IP アドレスホワイトリストに追加します。
たとえば、ApsaraDB RDS インスタンスに接続する場合:
RDS コンソールにサインインします。
左側のナビゲーションバーで、インスタンスを選択し、左上隅でリージョンを選択します。
左側のナビゲーションバーで、ホワイトリストとセキュリティグループをクリックします。
ホワイトリストの設定 タブおよび セキュリティグループ タブで、IP アドレスホワイトリストまたはセキュリティグループを追加します。MaxCompute の構成が変更されると ENI IP アドレスが変更される可能性があるため、vSwitch の CIDR ブロックをホワイトリストに追加することをお勧めします。
セキュリティグループまたは IP アドレスホワイトリストの追加方法の詳細については、「セキュリティグループの設定」または「IP アドレスホワイトリストの設定」をご参照ください。
ステップ 3:VPC リソースへのアクセス
ダイレクトネットワーク接続を作成した後、SQL または Spark を使用して VPC ネットワークにアクセスするには、次の設定を追加する必要があります。
他の種類のジョブについては、ジョブの種類に応じて設定を調整してください。
SQL アクセス
UDF を使用して VPC ネットワークにアクセスするには、次のコードを実行します。詳細については、「UDF を使用した VPC リソースへのアクセス」をご参照ください。
-- ネットワーク接続名を設定します。これは、ダイレクトネットワーク接続用に設定された名前です。この設定は、現在のセッションでのみ有効です。 SET odps.session.networklink=testLink;外部テーブルを使用して VPC ネットワークにアクセスするには、次のコードを実行します。
-- CREATE TABLE 文でパラメーターを設定します。 TBLPROPERTIES( 'networklink'='<networklink_name>')データレイクハウスのネットワークリンクを設定するには、「Data Lakehouse 2.0 ユーザーガイド」をご参照ください。
Spark アクセス
専用線接続を設定した後、以下の設定を spark-defaults.conf または DataWorks 構成に追加してください。
spark.hadoop.odps.cupid.eni.enable = true
# フォーマットは regionid:vpcid です。ここで、vpcid はネットワーク接続の作成時に使用されたターゲット VPC の ID です。
spark.hadoop.odps.cupid.eni.info = regionid:vpc-**********(任意) ステップ 4:ホワイトリストの設定
ご利用のサーバーでアクセス制御が有効になっている場合は、ダイレクトネットワーク接続用のセキュリティグループをサーバーのホワイトリストに追加する必要があります。