gpt4 book ai didi

azure - 根据 Azure SQL 数据库的数据中心转换连接字符串

转载 作者:行者123 更新时间:2023-12-03 02:57:36 26 4
gpt4 key购买 nike

我正在将单个数据中心 .NET 应用程序转换为地理分布式应用程序。目前,一台 VM 上的 IIS 中运行一个 Web 应用程序。它使用配置中的连接字符串连接到单个数据库服务器。

我已经将配置转换用于开发、UAT 和生产,这些配置转换是在部署时从我的构建服务器应用的。

在地理分布式设置中,Web 应用程序将部署到 2 个或更多(可能最多 10 个)不同的数据中心。

每个数据中心都将保存异地复制的 Azure SQL 数据库。

我需要每个数据中心中的每个虚拟机访问位于同一数据中心的 Azure SQL 数据库。

我不想在项目中为每个数据中心创建配置,并在每个配置转换中指定不同的连接字符串。这是不可维护或可扩展的。

示例

| Data centre      | VM  | DB server                |
| ------------- |-----| -------------------------|
| UK South | VM1 | db1.database.windows.net |
| South Central US | VM2 | db2.database.windows.net |
| West US | VM3 | db3.database.windows.net |
| West Europe | VM4 | db4.database.windows.net |
| ... | ... | ... |

如您所见,每个数据库服务器的服务器名称都不同,这是 Azure SQL 的要求。您不能在不同的数据中心使用相同的名称,因为该名称是全局的。

我无法找到将 1 个连接字符串映射到上述每个数据库服务器名称的方法。

Azure 流量管理器能够为您执行地理 DNS,但 Azure SQL 要求您在连接字符串中包含服务器名称(db1、db2...)(作为“服务器名称”的一部分或与“登录”例如“user@db1”)。

解决这个问题的最佳方法是什么?是我为每个数据中心创建配置转换的唯一选择,还是还有其他方法?

最佳答案

我不知道有任何内置功能可以将 SQL Azure 地理分布式数据库与相应区域相匹配以输出正确的连接字符串(我可能是错的)。我所知道的唯一地理感知数据库(在 azure 中)是 CosmosDB。我建议不要自己编写此类功能(我怀疑这种功能很脆弱并且会增加开销),而是从不同的方向进行处理。

您提到了您的构建环境。相同的代码根据部署到的区域具有不同的设置是很常见的,我通常将这些设置作为 CI\CD 管道的一部分进行管理。当应用程序部署(通过管道)时,它会更新该区域的设置,作为部署到该特定区域的一部分。如果部署到新区域,您只需使用正确的连接字符串更新 CI\CD 即可。相同的规则适用于 dev\stage 等。管理构建中的复杂性并在其他地方保持简单。

关于azure - 根据 Azure SQL 数据库的数据中心转换连接字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51657975/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com