0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Azure DatabricksをPlivate Link構成でデプロイしてみた

Posted at

はじめに

Azure Databricks を Private Link 構成によるデプロイを試してみました。
構成は以下のようなイメージとなります。

image.png

今回は標準デプロイで実施しました。詳細は以下のドキュメントをご確認ください。

仮想ネットワークを作成

Databricksをデプロイするための仮想ネットワークは以下の要件を満たす必要があります。

image.png

今回は以下のように仮想ネットワークを作成しました。

仮想ネットワーク① 仮想ネットワーク②
仮想ネットワーク名 vnet_hub vnet_spoke-01
アドレス範囲 172.16.0.0/16 10.1.0.0/16
サブネット① private-endpoint databricks_host
サブネット①範囲 172.16.0.0/27 10.1.0.0/24
サブネット①用途 プライベートエンドポイント用 Databricks のホストサブネット(パブリックサブネット)
サブネット② default databricks_container
サブネット②範囲 172.16.0.32/29 10.1.1.0/24
サブネット②用途 DatabricksへアクセスするためのVM用 Databricks のコンテナサブネット(プライベートサブネット)
サブネット③ - private-endpoint
サブネット③範囲 - 10.1.2.0/27
サブネット③用途 - プライベートエンドポイント用

Azure Databricks ワークスペースとプライベートエンドポイントを作成

以下のドキュメントの手順を基に作成しました。

ワークスペースの設定値は以下となります。価格レベルは Premium としています。

image.png

Nat Gatewayについて
ドキュメントの手順には無かった、Nat Gateway の設定値があります。おそらくですが、Azure の仮想マシンの既定の送信アクセス接続の廃止が予定されているため、クラスター(VM)のアウトバウンド用に Nat Gateway が強制的に作成されるようです。
既定の送信アクセスについてはこちらをご確認ください。

ワークスペースと同時にバックエンド用のプライベートエンドポイントを作成します。

image.png

上記以外(暗号化や Security & compliance)の設定値はデフォルトのままで作成しました。

続いてフロントエンド用のプライベートエンドポイントを作成します。設定値は以下の通り。

image.png

最後に Web ブラウザー認証用のプライベートエンドポイントを作成します。

image.png

Web ブラウザー認証用のプライベートエンドポイントについて
Web ブラウザー認証用のプライベートエンドポイントをホストするためのワークスペースを別途作成することが推奨されていますが、今回はワークスペースを1つにしています。
詳細はこちらをご確認ください。

また、プライベート DNS ゾーンは以下のように設定しています。

  • privatelink.azuredatabricks.net は 以下のようにレコードをセットして vnet_spoke-01 にリンク

image.png

  • azuredatabricks.net は 以下のようにレコードをセットして vnet_hub にリンク

image.png

adb-dp-xxx.xxのレコードセットについて
クラスターの Spark UI を表示するために必要なレコードとなります。
Spark UI を新規タブで開いて、URL を確認してみるとワークスペースの FQDN とは異なることがわかります。
そのため別途名前解決が必要なようです。

  • Spark UI の URL

image.png

  • ワークスペースの URL

image.png

テスト

Databricks ワークスペースへの接続テスト

vnet_hub 内にワークスペースへの接続用VM(vm-connect-check)をデプロイします。これにより、プライベートDNSゾーン(azuredatabricks.net)でフロントエンドとWeb ブラウザー認証用のプライベートエンドポイントへの名前解決が可能となるため、ワークスペースへの接続が可能となります。
リモートデスクトップ接続でVMに入って、ワークスペースに接続すると以下のように接続できます。

image.png

ローカル端末からの接続について
以下のように接続に失敗します。これはローカル端末が存在するネットワークと仮想ネットワークがつながっていないためとなります。
これによりパブリックネットワークからのアクセスが無効となっていることが確認できます。

image.png

クラスターテスト

クラスター(Personal Compute)を作成して JSON を表示すると、プライベート IP とパブリック IP を確認することができます。
プライベート IP はコンテナサブネットの範囲、パブリック IP はホストサブネットの範囲になっていることがわかります。
今回は Vnet インジェクションでデプロイしているため、どちらもプライベート IP となっていますが、既定のデプロイの場合は片方がパブリック IP となるはずです。

image.png

また、以下のようにインターネットへ出ていく際のグローバル IP を取得してみると、強制的に作成された Nat Gateway のパブリック IP が表示されます。

image.png

グローバル IP を取得するサンプルコード
import requests

def get_public_ip():
    response = requests.get('https://api.ipify.org?format=json')
    ip = response.json()['ip']
    return ip

# グローバルIPアドレスを取得する
public_ip = get_public_ip()
print(public_ip)

おわりに

Databricks の閉域構成について以下の記事がとても参考になりました。
併せてご参照ください。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?