Availability-Groups

可用性組只讀路由不適用於通過混合連接連接的 Azure 應用服務

  • January 4, 2020

我們有以下可用性組本地配置:

server1.domain.com - primary
server2.domain.com - sync secondary
server3.domain.com - async secondary

sql-listener.domain.com - availability group listener DNS name

最近我們設置了只讀路由 (ROR) 只讀路由 URL:

server1 - TCP://server1.domain.com:1433
server2 - TCP://server2.domain.com:1433
server3 - TCP://server3.domain.com:1433

只讀路由列表:

server1: server2, server3, server1
server2: server1, server3, server2
server3: server2, server1, server3

問題/問題:

我們的 Azure 應用服務(應用程序)之一是使用混合連接連接到本地 AG 偵聽器 (sql-listener.domain.com) 混合連接設置:

Endpoint host: sql-listener
Entpoint port: 1433

應用程序正在使用連接字元串:

Server=sql-listener,1433;Initial Catalog=MyDatabase;User Id=SQLAuthLogin;    
Password=SQLPassword;App=MyApp;MultiSubnetFailover=True

如果沒有"ApplicationIntent=ReadOnly"部分,應用程序可以很好地連接到本地數據庫

當我將"ApplicationIntent=ReadOnly"部分添加到連接字元串時,應用程序無法連接到本地數據庫並引發錯誤:

Error: A network-related or instance-specific error occurred while 
establishing a connection to SQL Server. 
The server was not found or was not accessible. 
Verify that the instance name is correct and that SQL Server 
is configured to allow remote connections. 
(provider: TCP Provider, error: 0 - No such host is known.)

附加資訊:當我將"Server=sql-listener,1433"部分替換為"Server=192.168.xxx.xxx"(AG 偵聽器的 IP 地址)時,應用程序未集成到任何 VNET應用程序無法連接

在Google搜尋類似的主題後,我發現當應用程序連接到 AG 偵聽器時"ApplicationIntent=ReadOnly",偵聽器響應並向應用程序提供可讀的輔助數據庫伺服器地址(我假設它是“server2.domain.com”DNS 地址,而不是 IP 地址?)

因此,我在 Azure 中創建了額外的混合連接,其端點主機和埠為"server1" "server2" "server3"and 1433,並確保將這些混合連接添加到 Application 並連接到本地伺服器上的混合連接管理器

我希望通過這種方式"server1" "server2" "server3"DNS 名稱對應用程序“可見”,並且當 AG 偵聽器響應應用程序(使用 conn 字元串"ApplicationIntent=ReadOnly")選項並將其定向到"server2"(server2.domain.com)時,應用程序將能夠連接

但應用程序仍然拋出錯誤“網路相關或特定於實例的錯誤……”

我錯過了什麼?

如何使只讀路由與通過混合連接連接的 Azure 應用服務一起工作?

微軟支持工程師在我的案例中回復如下:

我(支持工程師)已經聯繫了我的技術主管,以便對此進行緊急更新,並且我能夠得到它。

不幸的是,產品組證實了我最初的懷疑,即由於混合連接的限制,您想要實現的設置是不可能的,因此不支持這一點。這是一種設計行為,目前混合連接不支持這種情況。產品組工程師向我證實,正在考慮此功能,但他們沒有 ETA 可分享。

混合連接不支持 AG 只讀路由——就這麼簡單

我在 Azure 網站上創建了功能請求,如果可以,請登錄並投票贊成 https://feedback.azure.com/forums/169385-web-apps/suggestions/38917648-enable-hybrid-connections-to-work -with-read-only-r

引用自:https://dba.stackexchange.com/questions/245906