You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从Databricks Spark连接启用TLS的Document DB集群?

连接启用TLS的Document DB(Databricks环境)解决方案

1. 确保CA证书在集群所有节点部署到位

  • 将rds-combined-ca-bundle.pem上传到DBFS指定路径,比如dbfs:/databricks/ca-certs/rds-combined-ca-bundle.pem
  • 创建集群初始化脚本,将证书同步到每个节点的系统信任目录:
    #!/bin/bash
    # 针对RHEL/CentOS系节点
    cp /dbfs/databricks/ca-certs/rds-combined-ca-bundle.pem /etc/pki/ca-trust/source/anchors/
    update-ca-trust extract
    
    # 如果是Debian/Ubuntu系节点,替换为以下两行
    # cp /dbfs/databricks/ca-certs/rds-combined-ca-bundle.pem /usr/local/share/ca-certificates/
    # update-ca-certificates
    
    将脚本上传到DBFS后,在集群配置中指定为初始化脚本。

2. 配置Spark全局SSL参数

在集群的Spark配置页面添加以下参数,确保Driver和Executor都使用正确的证书:

spark.driver.extraJavaOptions -Djavax.net.ssl.trustStore=/etc/pki/ca-trust/extracted/java/cacerts -Djavax.net.ssl.trustStorePassword=changeit
spark.executor.extraJavaOptions -Djavax.net.ssl.trustStore=/etc/pki/ca-trust/extracted/java/cacerts -Djavax.net.ssl.trustStorePassword=changeit

如果直接使用PEM文件(部分驱动支持),可以替换为:

spark.driver.extraJavaOptions -Djavax.net.ssl.trustStoreType=PEM -Djavax.net.ssl.trustStore=/dbfs/databricks/ca-certs/rds-combined-ca-bundle.pem
spark.executor.extraJavaOptions -Djavax.net.ssl.trustStoreType=PEM -Djavax.net.ssl.trustStore=/dbfs/databricks/ca-certs/rds-combined-ca-bundle.pem

3. 验证单节点SSL连接有效性

集群启动后,运行以下代码测试单个节点能否通过证书连接Document DB:

import ssl
import socket

# 替换为你的Document DB端点和端口
host = "your-documentdb-endpoint.example.com"
port = 27017  # 对应你的Document DB TLS端口

context = ssl.create_default_context(cafile="/dbfs/databricks/ca-certs/rds-combined-ca-bundle.pem")
with socket.create_connection((host, port)) as sock:
    with context.wrap_socket(sock, server_hostname=host) as ssock:
        print("SSL连接测试成功")
        print("服务器证书信息:", ssock.getpeercert())

如果测试通过,说明证书部署没问题,再调试Spark连接逻辑。

4. 调整Document DB连接配置

若使用Python驱动(如pymongo):

from pymongo import MongoClient

client = MongoClient(
    "mongodb://<username>:<password>@<documentdb-endpoint>:<port>/",
    tls=True,
    tlsCAFile="/dbfs/databricks/ca-certs/rds-combined-ca-bundle.pem"
)
# 验证连接
db = client.test_database
print(db.list_collection_names())

若使用Spark MongoDB连接器:

df = spark.read.format("mongodb") \
    .option("uri", "mongodb://<username>:<password>@<documentdb-endpoint>:<port>/<target-db>.<target-collection>") \
    .option("ssl", "true") \
    .option("sslCAFile", "/dbfs/databricks/ca-certs/rds-combined-ca-bundle.pem") \
    .load()

df.show()

5. 排查网络与安全规则

  • 确认Databricks集群的安全组已开放Document DB的TLS端口访问权限
  • 检查Document DB的防火墙规则,允许Databricks集群所在的IP范围或VPC访问

内容的提问来源于stack exchange,提问作者Rajesh Kumar Dash

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 07:31:06