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

将白名单动态IP改为静态IP后数据库连接失败求助

问题分析与解决方案

问题背景

我正尝试将动态生成的白名单IP替换为静态IP,这样就能用单个IP连接数据库测试,不用在会话过期时重新生成IP,也不用反复添加IP到可信列表。

原有动态IP实现代码

#Get IP for Whitelist
def get_external_ip(x):
    hostname = socket.gethostname()
    r = requests.get("https://api.ipify.org/")
    public_IP = r.content
    return f"#{x} From {hostname} with publicIP {public_IP}."

print('DRIVER:')
rdd1 = get_external_ip(0)
print(rdd1)

尝试的静态IP代码(运行失败)

# 静态IP获取函数
def get_static_ip(x):
    hostname = socket.gethostname()
    static_IP = "172.161.48.227"  # 在此处指定静态IP地址
    return f"#{x} From {hostname} with publicIP {static_IP}."

# 显示驱动程序的IP地址
print('DRIVER:')
rdd1 = get_static_ip(0)
print(rdd1)

# 显示工作节点的IP地址
print('WORKERS:')
rdd2 = sc.parallelize(range(1, 4)).map(get_static_ip)
datacoll2 = rdd2.collect()
for row in datacoll2:
    print(row)

报错信息

Error: (-10709, 'Connection failed (RTE:[89013] Socket closed by peer  (10.0.0.8:50354 -> e79bc323--.hana.prod-eu10.hanacloud.ondemand.com:443))')

解决方向

  • 检查白名单配置:确认静态IP 172.161.48.227 已被添加到数据库的可信IP列表中,这是连接被拒最常见的原因。
  • 验证Worker节点实际出口IP:Spark集群的Worker节点可能使用和Driver不同的出口IP,你硬编码的静态IP可能和Worker实际访问数据库的IP不匹配。可以在每个Worker节点上执行curl https://api.ipify.org获取真实出口IP,再替换代码中的静态值。
  • 测试网络连通性:从Driver和Worker节点分别测试到数据库地址e79bc323--.hana.prod-eu10.hanacloud.ondemand.com:443的连通性,用telnet e79bc323--.hana.prod-eu10.hanacloud.ondemand.com 443或nc -zv e79bc323--.hana.prod-eu10.hanacloud.ondemand.com 443验证端口是否可达。
  • 确认静态IP的网络权限:检查该静态IP是否被集群防火墙或云服务商限制,无法访问外部数据库服务。

内容的提问来源于stack exchange,提问作者WqX He

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 13:12:23