以前こちらを書きましたが、いかんせん3年前のものなのでもう一度ウォークスルーします。
注意
ここでは基本的な構成でのウォークスルーを行っています。ご自身のネットワーク要件に基づいて適宜変更してください。
お詫び
2024/8/22まで、セキュリティグループの設定で、アウトバウンドルールの「ワークスペースセキュリティグループへのすべてのTCPおよびUDPアクセスを許可します(内部トラフィック用)」の設定が漏れておりました。大変ご迷惑をおかけしました。
当時は日本語マニュアルもありませんでした。
事前の検討事項
-
構成 どれを選ぶべきかに関してはこちらを参考にしてください。
- バックエンドのみ
- バックエンド+フロントエンド
- バックエンド+フロントエンド+公衆回線からのアクセスをシャットダウン
-
クラスターから外部へのアクセスを許可するかどうか
-
リージョン
-
VPCにおけるIPアドレスのサイズ(CIDR)
Databricksワークスペースで使用するサブネットは最低2つ必要です。それらのサブネットは異なるアベイラビリティゾーンに存在する必要があります。Databricksの計算資源を構成するノード(1台のドライバー/ワーカー)は2つのIPアドレスを必要とします。このため、あるサブネットに配備できるノードの数は、確保しているIPアドレスの半分となります。各サブネットには、/17~/26
のネットマスクが必要です。これら2つのサブネットのサイズを決定した後に、VPCのCIDRを決定します。- サブネットマスク
/17
: IPアドレス数は32,768、確保できるノード数は16,384 - サブネットマスク
/26
: IPアドレス数は64、確保できるノード数は32
- サブネットマスク
ここでは、以下の前提で設定を行います。
- Tokyoリージョン
- バックエンドPrivateLinkのみ
- 外部接続は許可しない
- サブネットのサイズは
/25
(64ノード)
参考資料
AWSマネジメントコンソールでの作業
VPCの作成
以下の設定でVPCを作成します。
- 名前タグ:
privatelink
- IPv4 CIDR ブロック:
10.0.0.0/24
- アベイラビリティゾーン (AZ) の数: 2
- パブリックサブネットの数: 0
- プライベートサブネットの数: 2
- サブネット1のCIDR: 10.0.0.0/25(64ノード)
- サブネット2のCIDR: 10.0.0.128/25(64ノード)
- NAT ゲートウェイ ($): なし
- VPC エンドポイント: S3ゲートウェイ
- DNSオプション: 両方チェック
セキュリティグループの設定
こちらに従って設定を行います。
トラフィックソースとして自分自身を指定するので、ルールが空の状態でセキュリティグループを作成します。
アウトバウンドルール
セキュリティグループを作成した後に、「ワークスペースセキュリティグループへのすべてのTCPおよびUDPアクセスを許可します(内部トラフィック用)」 を追加します。ここでの送信先には、上で作成したセキュリティグループを指定します。
ネットワークACLの設定
ネットワークACLはデフォルトのままとし、すべてのトラフィックを許可します。ワークスペースデプロイの際にはこちらの検証を行います。
ここではVPCエンドポイント用のサブネットは作成せず、ワークスペース用サブネットにVPCエンドポイントを作成します。VPCエンドポイント用のサブネットを作成した場合には、ルートテーブル、セキュリティグループを追加で作成してください。
VPCエンドポイントの作成
バックエンドPrivateLinkの場合は、2つのVPCエンドポイントを作成します。
- セキュアクラスター接続用VPCエンドポイント
- ワークスペース用: コンピュートプレーンへのDatabricks REST API呼び出しのために必要です。
ここでは、ガイドに従い以下の名前でエンドポイントを作成します。
- セキュアクラスター接続用:
databricks-ap-northeast-1-scc-vpce
- ワークスペース用:
databricks-ap-northeast-1-workspace-vpce
セキュアクラスター接続用VPCエンドポイントの作成
エンドポイント名を入力し、その他のエンドポイントサービスを選択します。
こちらのリファレンスでap-northeast-1
を検索します。セキュアなクラスター接続リレーのサービス名はcom.amazonaws.vpce.ap-northeast-1.vpce-svc-02aa633bda3edbec0
となっているので、これをサービス名に貼り付けて、サービスの検証をクリックします。
問題がなければ サービス名が検証されました。 と表示されます。
上のステップで作成した、VPC、AZごとのサブネット、セキュリティグループを選択します。VPCを設定する際に追加設定を展開し、DNS名を有効化にチェックを入れることを忘れない様にしてください。
エンドポイントを作成をクリックします。
ワークスペース用VPCエンドポイントの作成
ワークスペース(REST APIを含む) のサービス名はcom.amazonaws.vpce.ap-northeast-1.vpce-svc-02691fd610d24fd64
なので、上の手順でエンドポイントを作成します。
Databricksアカウントコンソールでの作業
アカウント管理者として https://accounts.cloud.databricks.com/ にログインします。
VPCエンドポイントの登録
クラウドリソース > ネットワーク > VPCエンドポイント にアクセスします。VPCエンドポイントを登録をクリックします。
手順に従い、エンドポイント名、リージョン、上のステップで作成したVPCエンドポイントのIDを指定して設定を行います。
ネットワーク構成の作成
手順に従い、ネットワーク構成を作成します。これまでの手順で作成した、VPCのID、サブネットのID、セキュリティグループのID、上の手順で作成したVPCエンドポイントを指定します。
プライベートアクセス設定オブジェクトの作成
手順に従って、オブジェクトを作成します。
バックエンドPrivateLinkのみの構成なので、パブリックアクセスはTrueに設定してインターネットからのアクセスを許可します。
ワークスペースの作成
このステップでは、上の手順で作成したネットワーク構成オブジェクト、プライベートアクセス設定オブジェクトに加えて、認証情報設定やストレージ設定、Unity Catalogメタストアが必要となります。作成していない場合には、こちらを参考にして設定オブジェクトを作成してください。
ワークスペースにアクセスしてワークスペースの作成をクリックします。
ワークスペース名、リージョン、資格情報、ストレージ設定、Unity Catalogメタストアを設定します。
高度な設定を展開します。上のステップで作成したネットワーク構成オブジェクトとプライベートアクセス設定オブジェクトを選択します。
保存をクリックすると、ワークスペースの作成がスタートします。
AWSマネジメントコンソールでの作業(続き)
ここで、もう一度AWSマネジメントコンソールでの作業に戻ります。こちらにあるように、追加でVPCエンドポイントを作成します。
STS VPCインタフェースエンドポイントの作成
AWSのサービスを選択し、sts
で検索します。com.amazonaws.ap-northeast-1.sts
を選択し、VPC、サブネット、セキュリティグループを選択します。
Kinesis VPCインタフェースエンドポイントの作成
AWSのサービスを選択し、kinesis
で検索します。com.amazonaws.ap-northeast-1.kinesis-streams
を選択し、VPC、サブネット、セキュリティグループを選択します。
Databricksワークスペースでの動作確認
ワークスペースにアクセスして、クラスターに移動します。最小規模のクラスターで構わないので、Personal Computeで作成をクリックします。
コンピューティングを作成をクリックします。
クラスターが起動するかどうかが最初の関門です。起動に失敗する場合には上で設定した内容を再度確認してください。
サイドメニューの新規 > ノートブックを選択してノートブックを作成し、上で作成したクラスターにアタッチします。言語設定はPythonにしておきます。
以下を実行します。
print("hello")
結果が返ってきたら動作確認は完了です。お疲れ様でした!クラスターは停止しておいてください。