azure - 如何从 Azure Batch 访问 Azure 数据库?
问题描述
我在 Azure Batch 任务中的 Docker 容器中有一个 Java 进程。
Java 进程试图简单地建立与 Azure Database for MySQL 服务的 JDBC 数据库连接。
连接错误包括“IP 地址为 '52.224..(etc)' 的客户端不允许连接到此 MySQL 服务器。”
因此,我正在尝试学习如何让 Azure Batch 任务能够连接到 Azure Database for MySQL。我找不到任何似乎可以解决这一挑战的文档。
我可以看到 Azure Database for MySQL 包含基于 IP 的防火墙设置 - 但不知道如何使用它来允许来自 Azure Batch 任务的访问。由于 Azure Batch 采购了虚拟机 - 我不会提前知道 IP 地址是什么,以便将其添加到数据库防火墙规则中。我也不想添加让其他 Azure 帐户连接到该数据库的 IP 地址范围,
在 AWS 中,这个问题是通过对数据库的基于角色的访问来处理的。每个 AWS Batch 实例都可以分配给一个角色,该角色可以访问它需要的任何 AWS 资源。
我没有找到有用的文档来以类似的方式使用 Azure Batch 解决这个问题,并且 MS 支持也没有帮助 - 为我提供了所有可能的 Azure IP 地址的列表 - 大概是为了添加到我们的防火墙规则中(不切实际且不安全)。
提前感谢您的帮助!
解决方案
有两种方法可以做到这一点:
- 最直接的方法是为 MySQL DB 使用虚拟网络服务端点(例如通过 Azure Portal),并为Azure Batch Pool Compute Nodes使用相同的虚拟网络(通常在不同的子网中) 。
- 您可以为 Azure Batch Pool带来自己的基于 ARM 的公共 IP 地址,并在 MySQL DB 上的 IP 筛选/ACL 中使用这些公共 IP 地址。
推荐阅读
- sql - sql Server中两个不同表的两列的日期时间比较
- javascript - 'TypeError: Cannot read properties of undefined (reading 'getters')' 发生在 vue-test-utils
- julia - 在 ODE 模型中加入强制函数以进行贝叶斯估计
- python - 如何使用python将(10Hz)高频记录的数据转换为(1Hz)低频?
- c# - NLog 忽略配置文件
- ios - 为什么 Xcode 一直要求我输入钥匙串密码?
- jfugue - 如何在 JFugue 5.0 中获取 Tempo 字典
- react-native - 写入 Firebase 时反应本机,未处理的拒绝
- graph-tool - 图形工具中有没有办法让边缘与源顶点具有相同的颜色而没有颜色渐变?
- c# - Mapster 忽略列表中的映射