我在Azure批处理任务中的Docker容器中有一个Java进程。
Java进程试图简单地建立到Azure database for MySQL服务的JDBC数据库连接。
连接错误包括"不允许IP地址为'52.224..(etc('的客户端连接到此MySQL服务器。">
因此,我正在尝试学习如何为Azure批处理任务提供连接到Azure Database for MySQL的能力。我找不到任何文件来应对这一挑战。
我可以看到Azure Database for MySQL包含基于IP的防火墙设置,但不知道如何使用它来允许从Azure批处理任务进行访问。由于Azure批量采购虚拟机,我将不知道IP地址是什么,以便将其添加到数据库防火墙规则中。我也不想添加一系列IP地址,让其他Azure帐户连接到此数据库,
在AWS中,这个问题是通过基于角色的数据库访问来处理的。每个AWS批处理实例都可以分配给一个角色,该角色可以访问其所需的任何AWS资源。
我没有找到任何有用的文档来以类似的方式解决Azure Batch的这个问题,MS支持也没有帮助——为我提供了所有可能的Azure IP地址的列表——可能是为了添加到我们的防火墙规则中(不切实际且不安全(。
提前感谢您的帮助!
有两种方法可以实现这一点:
- 最简单的方法是为MySQL数据库使用虚拟网络服务端点(例如通过Azure门户(,并为Azure批处理池计算节点使用相同的虚拟网络(通常在不同的子网中(
- 您可以为Azure批处理池带来自己的基于ARM的公共IP地址,并在MySQL数据库上的IP筛选/ACL中使用这些公共IP地址
在Azure Portal中,为数据库创建了一个专用端点连接,其中包括分配一个专用IP地址。然后,Azure批处理配置可以在JDBC连接中引用数据库的私有IP——假设批处理池引用的是同一个子网。
https://learn.microsoft.com/en-us/azure/private-link/private-endpoint-dns