首页 > 解决方案 > 如何从 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 地址的列表 - 大概是为了添加到我们的防火墙规则中(不切实际且不安全)。

提前感谢您的帮助!

标签: azureazure-batchazure-database-mysql

解决方案


有两种方法可以做到这一点:

  1. 最直接的方法是为 MySQL DB 使用虚拟网络服务端点例如通过 Azure Portal),并为Azure Batch Pool Compute Nodes使用相同的虚拟网络(通常在不同的子网中) 。
  2. 您可以为 Azure Batch Pool带来自己的基于 ARM 的公共 IP 地址,并在 MySQL DB 上的 IP 筛选/ACL 中使用这些公共 IP 地址。

推荐阅读