DatabricksのPrivateLink構成を組む際、自分でもよく「ワークスペースは構築できたけど、クラスターが起動しない」状況に遭遇するので、その際の確認手順をまとめます。
設定の確認
セキュリティグループ
許可するポートが間違っているケースがあるのでこちらを参考に適切にインバウンドルール、アウトバウンドルールが設定されていることを確認します。
送信先に自分自身のセキュリティグループを指定した際に警告が出ることがあります。この場合は、一度ルールが空の状態でセキュリティグループを作成してから、再度編集を行なってみてください。
エンドポイント
エンドポイントにはサブネットとセキュリティグループを関連づける必要があります。S3エンドポイントはメインルートテーブルと関連づけます。
エンドポイント | サブネット | セキュリティグループ | ルートテーブル |
---|---|---|---|
VPCエンドポイントサービス(Workspace VPC endpoint service) | VPCエンドポイント向けサブネット | VPCエンドポイント向けサブネット用セキュリティグループ | - |
VPCエンドポイントサービス(Back-end SCC relay service) | VPCエンドポイント向けサブネット | VPCエンドポイント向けサブネット用セキュリティグループ | - |
S3 VPCゲートウェイエンドポイント | ワークスペース向けサブネット1、ワークスペース向けサブネット2 | ワークスペース向けサブネット用セキュリティグループ | メインルートテーブル |
STS VPCインタフェースエンドポイント | ワークスペース向けサブネット1、ワークスペース向けサブネット2 | ワークスペース向けサブネット用セキュリティグループ | - |
Kinesis VPCインタフェースエンドポイント | ワークスペース向けサブネット1、ワークスペース向けサブネット2 | ワークスペース向けサブネット用セキュリティグループ | - |
Glue VPCインタフェースエンドポイント | ワークスペース向けサブネット1、ワークスペース向けサブネット2 | ワークスペース向けサブネット用セキュリティグループ | - |
VPCエンドポイントサービスを登録した後にプライベートDNS名が有効になっていることを確認します。
ネットワークオブジェクト
コマンド実行時に以下の設定を適切にしていることを確認してください。
curl -X POST -u <アカウントオーナーのメールアドレス>:<アカウントオーナーのパスワード> \
'https://accounts.cloud.databricks.com/api/2.0/accounts/<DatabricksアカウントID>/networks' \
-d '{
"network_name": "databricks-privatelink",
"vpc_id": "<VPC privatelink-testのid>",
"subnet_ids": [
"<サブネットdatabricks-ws-1のid>",
"<サブネットdatabricks-ws-2のid>"
],
"security_group_ids": [
"<セキュリティグループpl-sg-1のid>"
],
"vpc_endpoints": {
"dataplane_relay": [
"<Back-end SCC relay serviceの登録時に取得したvpc_endpoint_id>"
],
"rest_api": [
"<Workspace VPC endpoint serviceの登録時に取得したvpc_endpoint_id>"
]
}
}' | jq
パラメーター | 説明 |
---|---|
vpc_id | VPCのID |
subnet_ids | 2つのワークスペース向けサブネットのID |
security_group_ids | ワークスペース向けサブネット用セキュリティグループのID |
dataplane_relayvpc_endpoint_id | Back-end SCC relay serviceの登録時に取得したVPCエンドポイントID。AWSのVPCエンドポイントIDではなく、登録時の結果に出力されるvpc_endpoint_id です。 |
rest_api | Workspace VPC endpoint serviceの登録時に取得したVPCエンドポイントID。AWSのVPCエンドポイントIDではなく、登録時の結果に出力されるvpc_endpoint_id です。 |
Glueメタストアへの接続
こちらを参照いただき、インスタンスプロファイルを設定してもカタログにアクセスできない場合には、クラスターのSpark設定にspark.databricks.hive.metastore.glueCatalog.enabled true
があることを確認してください。
疎通確認
よくあるのがクラスターが稼働するデータプレーンと、コントロールプレーンの通信ができていないケースです。上述の設定を確認することに加え、実際に疎通しているのかを確認することも切り分けに有効です。
Reachability Analyzerを使う手もありますが、ここではSageMakerノートブックを使います。
- SageMakerにアクセスし、ノートブックインスタンスをクリックします。
- インスタンスを作成します。
- インスタンスが起動したらJupyterにアクセスします。
- 右上のNewから一番下のTerminalを選択してターミナルを開きます。これでDatabrikcsクラスターが稼働するサブネットからの疎通確認を行うことができます。
- 以下のコマンドを実行してSuccessが帰ってくることを確認します。疎通できていない場合には関連するエンドポイント、サブネットなどの設定を確認します。
# Verify access to the web application
nc -zv tokyo.cloud.databricks.com 443
# Verify access to the secure cluster connectivity relay
nc -zv tunnel.ap-northeast-1.cloud.databricks.com 443
# Verify S3 regional access
nc -zv s3.ap-northeast-1.amazonaws.com 443
# Verify STS regional access
nc -zv sts.ap-northeast-1.amazonaws.com 443
# Verify regional Kinesis access
nc -zv kinesis.ap-northeast-1.amazonaws.com 443
注意
上の接続先は東京リージョンの場合です。他のリージョンでの接続先に関してはこちらを参照ください。