如何从Azure Batch访问Azure数据库?

问题描述

我在Azure批处理任务的Docker容器内有一个Java进程。

Java进程正在尝试简单地建立与MysqL服务的Azure数据库的JDBC数据库连接。

连接错误包括“不允许IP地址为'52 .224 ..(etc)的客户端'连接到该MysqL服务器。

因此,我正在尝试学习如何使Azure Batch任务具有连接到MysqL的Azure数据库的能力。我找不到任何似乎可以解决这一挑战的文档。

我可以看到MysqL的Azure数据库包含基于IP的防火墙设置-但不知道如何将其用于允许从Azure Batch任务进行访问。由于Azure Batch采购虚拟机-我不知道要将该IP地址添加数据库防火墙规则的时间是什么。我也不想添加允许其他Azure帐户与此数据库建立连接的IP地址范围,

在AWS中,通过对数据库的基于角色的访问来解决此问题。每个AWS Batch实例都可以分配给一个角色,可以访问其所需的任何AWS资源。

我没有找到有用的文档来以类似的方式解决Azure Batch的问题,并且MS支持也无济于事-向我提供了所有可能的Azure IP地址的列表-可能会添加到我们的防火墙规则中(不切实际和不安全)。

在此先感谢您的帮助!

解决方法

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

  1. 最直接的方法是使用virtual network service endpoint for the MySQL DBexample via Azure Portal)并为Azure Batch Pool Compute Nodes使用相同的虚拟网络(通常在不同的子网中)。
  2. 您可以携带自己的ARM-based Public IP addresses for an Azure Batch Pool并使用IP filtering/ACLs on the MySQL DB中的那些公共IP地址。
,

在Azure门户中,为数据库创建了专用端点连接,其中包括分配专用IP地址。然后,Azure批处理配置可以在JDBC连接中引用数据库的私有IP-假设批处理池引用了同一子网。

https://docs.microsoft.com/en-us/azure/private-link/private-endpoint-dns