對連線問題進行疑難排解 - Azure 事件方格
用戶端應用程式無法連線至事件方格主題/網域的原因有很多。 您遇到的連線問題可能是永久性或暫時性的。 如果問題持續發生 (永久),您可以檢查組織的防火牆設定、IP 防火牆設定、服務標籤、私人端點等等。 如果是暫時性問題,則執行命令以檢查捨棄的封包,以及取得網路追蹤等做法,可能會有助於問題的疑難排解。
本文提供對 Azure 事件方格的連線問題進行疑難排解的秘訣。
針對永久性連線問題進行疑難排解
如果應用程式完全無法連線至事件方格,請依照本節中的步驟對問題進行疑難排解。
檢查是否有服務中斷的情形
在 Azure 服務狀態網站上檢查 Azure 事件方格的服務中斷。
檢查組織的防火牆是否未封鎖與事件方格通訊所需的連接埠
確認用來與 Azure 事件方格通訊的連接埠未在組織的防火牆上遭到封鎖。 請參閱下表,了解您需要開啟哪些輸出連接埠以便與 Azure 事件方格進行通訊。
通訊協定 | 連接埠 |
---|---|
HTTPS | 443 |
以下是檢查 443 連接埠是否遭到封鎖的範例命令。
.\psping.exe -n 25 -i 1 -q {sampletopicname}.{region}-{suffix}.eventgrid.azure.net:443 -nobanner
在 Linux 上:
telnet {sampletopicname}.{region}-{suffix}.eventgrid.azure.net 443
確認您的公司防火牆中允許 IP 位址
在使用 Azure 時,有時候必須在公司防火牆或 Proxy 中允許特定 IP 位址範圍或 URL 存取您所使用或嘗試使用的所有 Azure 服務。 確認事件方格所使用的 IP 位址上允許該流量。 如需 Azure 事件方格所使用的 IP 位址:請參閱 Azure IP 範圍和服務標籤 - 公用雲端與服務標籤 - AzureEventGrid。
Azure IP 範圍和服務標籤 - 公用雲端文件也會依區域列出 IP 位址。 您可以在公司防火牆或 Proxy 中允許主題區域和配對區域的位址範圍。 若想了解某區域的配對區域,請參閱 Azure 中的跨區域複寫:商務持續性和災害復原。
注意
新的 IP 位址可以新增至 AzureEventGrid 服務標籤,但此做法並不常見。 因此,最好每週檢查服務標籤。
確認您的網路安全性群組中允許 AzureEventGrid 服務標籤
如果應用程式在子網路內執行,而且有相關聯的網路安全性群組,請確認是否允許網際網路輸出,或是否允許 AzureEventGrid 服務標籤。 請參閱服務標籤
檢查主題/網域的 IP 防火牆設定
確認 EventGrid 主題/網域 IP 防火牆並未封鎖應用程式執行所在機器的公用 IP 位址。
根據預設,只要要求具備有效的驗證和授權,便可以從網際網路存取事件方格主題/網域。 透過 IP 防火牆,您可以將其進一步限制為僅允許一組 IPv4 位址,或是使用 CIDR (無類別網域間路由) 標記法來設定 IPv4 位址範圍。
IP 防火牆規則會在事件方格主題/網域層級套用。 因此,規則會套用至來自用戶端的所有連接 (使用任何受支援的通訊協定)。 任何來自某個 IP 位址的連線嘗試,只要不符合事件方格主題/網域上允許的 IP 規則,就會遭到禁止和拒絕。 回應不會提及 IP 規則。
如需詳細資訊,請參閱設定 Azure 事件方格主題/網域的 IP 防火牆規則。
尋找被 IP 防火牆封鎖的 IP 位址
啟用事件方格主題/網域的診斷記錄 啟用診斷記錄。 您會看到連線遭到拒絕的 IP 位址。
{
"time": "2019-11-01T00:17:13.4389048Z",
"resourceId": "/SUBSCRIPTIONS/SAMPLE-SUBSCRIPTION-ID/RESOURCEGROUPS/SAMPLE-RESOURCEGROUP-NAME/PROVIDERS/MICROSOFT.EVENTGRID/TOPICS/SAMPLE-TOPIC-NAME",
"category": "PublishFailures",
"operationName": "Post",
"message": "inputEventsCount=null, requestUri=https://SAMPLE-TOPIC-NAME.region-suffix.eventgrid.azure.net/api/events, publisherInfo=PublisherInfo(category=User, inputSchema=EventGridEvent, armResourceId=/SUBSCRIPTIONS/SAMPLE-SUBSCRIPTION-ID/RESOURCEGROUPS/SAMPLE-RESOURCEGROUP-NAME/PROVIDERS/MICROSOFT.EVENTGRID/TOPICS/SAMPLE-TOPIC-NAME), httpStatusCode=Forbidden, errorType=ClientIPRejected, errorMessage=Publishing to SAMPLE-TOPIC-NAME.{region}-{suffix}.EVENTGRID.AZURE.NET by client {clientIp} is rejected due to IpAddress filtering rules."
}
檢查 EventGrid 主題/網域是否只能使用私人端點來存取
如果事件方格主題/網域設定為只能透過私人端點來存取,請確認用戶端應用程式會透過私人端點來存取主題/網域。 若要確認這一點,請檢查用戶端應用程式執行於子網路內,且該子網路中是否有事件方格主題/網域的私人端點。
Azure Private Link 服務可讓您透過虛擬網路中的私人端點來存取 Azure 事件方格。 私人端點是一種網路介面,其可以私人且安全的方式連線至 Azure Private Link 所支援服務。 私人端點會使用您 VNet 中的私人 IP 位址,有效地將服務帶入您的 VNet 中。 服務的所有流量都可以透過私人端點路由傳送,因此不需要閘道、NAT 裝置、ExpressRoute 或 VPN 連線或公用 IP 位址。 虛擬網路和服務間的流量會在通過 Microsoft 骨幹網路時隨之減少,降低資料在網際網路中公開的風險。 您可以連線至 Azure 資源的執行個體,以提供您存取控制中最高層級的細微性。
如需詳細資訊,請參閱設定私人端點。
針對暫時性連線問題進行疑難排解
如果您遇到間歇性的連線問題,請參閱下列各節以取得疑難排解秘訣。
執行命令以檢查捨棄的封包
如果有間歇性的連線問題,請執行下列命令來檢查是否有任何封包遭到捨棄。 此命令會嘗試每隔 1 秒便與服務建立 25 個不同的 TCP 連線。 然後,您可以檢查其中有多少連線成功/失敗,另外也可以查看 TCP 連線延遲。 您可以從這裡下載 psping
工具。
.\psping.exe -n 25 -i 1 -q {sampletopicname}.{region}-{suffix}.eventgrid.azure.net:443 -nobanner
如果您使用其他工具,例如tcpping
tcpping.exe,您可以使用對等的命令。
如果先前的步驟無法提供協助,請取得網路追蹤,然後使用 Wireshark 等工具進行分析。 如有需要,請連絡 Microsoft 支援服務。
服務升級/重新啟動
由於後端服務升級和重新啟動,可能會發生暫時性連線問題。 在發生這些問題時,您可能會看到下列徵兆:
- 內送郵件/要求可能會下降。
- 記錄檔可能包含錯誤訊息。
- 應用程式可能會與服務中斷連線數秒。
- 要求可能會立即節流。
攔截這些暫時性錯誤、退出,然後再試著呼叫一次,便會確保程式碼能從這些暫時性問題復原。
下一步
如果您需要更多協助,請將您的問題張貼在 Stack Overflow 論壇,或開啟支援票證。