設定 進階版 Azure Cache for Redis 實例的虛擬網路 (VNet) 支援

Azure 虛擬網絡 部署提供增強的安全性和隔離,以及:子網、存取控制原則和其他功能,以進一步限制存取。 使用虛擬網路設定 Azure Cache for Redis 實例時,無法公開定址。 相反地,實例只能從虛擬網路內的虛擬機器和應用程式存取。 本文說明如何設定進階版層 Azure Cache for Redis 實例的虛擬網路支援。

注意

傳統部署模型將于 2024 年 8 月淘汰。 如需詳細資訊,請參閱 2024 年 8 月 31 日即將淘汰雲端服務 (傳統) 部署模型。

重要

Azure Cache for Redis 建議使用 Azure Private Link,以簡化網路架構,並保護 Azure 中端點之間的連線。 您可以透過私人端點從虛擬網路連線到 Azure 快取實例,該端點會指派虛擬網路內子網中的私人 IP 位址。 Azure Private Links 提供于所有層,包括Azure 原則支援,以及簡化的 NSG 規則管理。 若要深入瞭解,請參閱 Private Link 檔 。 若要將 VNet 插入快取移轉至 Private Link,請參閱 從 VNet 插入式快取遷移至 Private Link 快 取。

VNet 插入的限制

  • 建立和維護虛擬網路組態通常容易發生錯誤。 疑難排解也是一項挑戰。 不正確的虛擬網路設定可能會導致問題:
    • 來自快取實例的阻礙計量傳輸
    • 複本節點無法從主要節點複寫資料
    • 潛在的資料遺失
    • 管理作業失敗,例如調整
    • 在最嚴重的情況下,可用性遺失
  • VNet 插入快取僅適用于進階版層 Azure Cache for Redis,而非其他層。
  • 使用 VNet 插入快取時,您必須將 VNet 變更為快取相依性,例如 CRL/PKI、AKV、Azure 儲存體、Azure 監視器等等。
  • 您無法將現有的 Azure Cache for Redis 實例插入虛擬網絡。 當您建立 快取時 ,必須選取此選項。

設定虛擬網路支援

虛擬網路支援是在建立快取期間于 [新增 Azure Redis 快取] 窗格上設定。

  1. 若要建立進階版層快取,請登入 Azure 入口網站 ,然後選取 [ 建立資源 ]。 您也可以使用 Resource Manager 範本、PowerShell 或 Azure CLI 來建立它們。 如需如何建立 Azure Cache for Redis 實例的詳細資訊,請參閱 建立快取

    Screenshot that shows Create a resource.

  2. 在 [ 新增] 頁面上,選取 [ 資料庫 ]。 然後選取 [Azure Cache for Redis ]。

    Screenshot that shows selecting Azure Cache for Redis.

  3. 在 [ 新增 Redis 快 取] 頁面上,設定新進階版層快取的設定。

    設定 建議的值 描述
    DNS 名稱 輸入全域唯一名稱。 快取名稱必須是介於 1 到 63 個字元之間的字串,只包含數位、字母或連字號。 名稱必須以數位或字母開頭和結尾,且不能包含連續連字號。 快取實例的 主機名稱 將會是 \<DNS name>.redis.cache.windows.net
    訂用帳戶 從下拉式清單中選取您的訂用帳戶。 用來建立這個新 Azure Cache for Redis 實例的訂用帳戶。
    資源群組 從下拉式清單中選取資源群組,或選取 [ 新建 ],然後輸入新的資源組名。 要在其中建立快取和其他資源的資源群組名稱。 藉由將所有應用程式資源放在一個資源群組中,您可以輕鬆地一起管理或刪除它們。
    地點 從下拉式清單中選取位置。 選取將使用快取之其他服務附近的區域
    快取類型 從下拉式清單中選取進階版層快取,以設定進階版層功能。 如需詳細資訊,請參閱 Azure Cache for Redis 定價 定價層會決定快取可用的大小、效能和功能。 如需詳細資訊,請參閱 Azure Cache for Redis 概觀
  4. 選取 [ 網路] 索引 標籤,或選取 頁面底部的 [網路] 按鈕。

  5. 在 [ 網路] 索引 標籤上,選取 [虛擬網絡 ] 作為您的連線方法。 若要使用新的虛擬網路,請先遵循使用 Azure 入口網站 建立虛擬網路或使用 Azure 入口網站 建立虛擬網路中的步驟 來建立虛擬網路。 然後返回 [ 新增 Azure Cache for Redis ] 窗格,以建立和設定您的進階版層快取。

    重要

    當您將 Azure Cache for Redis 部署至 Resource Manager 虛擬網路時,快取必須位於專用子網中,其中包含除了 Azure Cache for Redis 實例以外的其他資源。 如果您嘗試將 Azure Cache for Redis 執行個體部署到包含其他資源、或已指派 NAT 閘道的 Resource Manager 虛擬網路子網路,則部署會失敗。 失敗是因為 Azure Cache for Redis 使用與 NAT 閘道不相容的基本負載平衡器。

    設定 建議的值 描述
    虛擬網路 從下拉式清單中選取您的虛擬網路。 選取與您快取位於相同訂用帳戶和位置的虛擬網路。
    子網路 從下拉式清單中選取您的子網。 子網的位址範圍應為 CIDR 標記法(例如 192.168.1.0/24)。 其必須包含在虛擬網路的位址空間中。
    靜態 IP 位址 (選擇性)輸入靜態 IP 位址。 如果您未指定靜態 IP 位址,則會自動選擇 IP 位址。

    重要

    Azure 會在每個子網路中保留一些 IP 位址,但這些位址無法使用。 子網路的第一個和最後一個 IP 位址會保留給相容的通訊協定,以及用於 Azure 服務的額外 3 個位址。 如需詳細資訊,請參閱在這些子網路內使用 IP 位址是否有任何限制?

    除了 Azure 虛擬網路基礎結構使用的 IP 位址外,子網路中的每個 Azure Cache for Redis 執行個體都會為每個分區使用兩個 IP 位址,為負載平衡器使用一個其他的 IP 位址。 非叢集快取會視為有一個分區。

  6. 選取 [ 下一步:進階 ] 索引標籤,或選取頁面底部的 [ 下一步:進階 ] 按鈕。

  7. 在進階版層快取實例的 [ 進階 ] 索引標籤上,設定非 TLS 埠、叢集和資料持續性的設定。

  8. 選取 [ 下一步:標籤 ] 索引標籤,或選取頁面底部的 [ 下一步:標籤 ] 按鈕。

  9. 或者,如果您想要分類資源,請在 [ 標籤 ] 索引標籤上輸入名稱和值。

  10. 選取 [檢閱 + 建立]。 系統會帶您前往 Azure 驗證設定的 [ 檢閱 + 建立] 索引標籤。

  11. 綠色 [驗證通過 的訊息] 出現之後,選取 [ 建立 ]。

快取需要一段時間才能建立。 您可以在 Azure Cache for Redis 概觀 頁面上監視進度。 當 [狀態 ] 顯示為 [執行中] ,快取已準備好使用。 建立快取之後,您可以從 [資源 ] 功能表選取 [虛擬網絡 ,以檢視虛擬網路的 組態。

Virtual network

Azure Cache for Redis 虛擬網路常見問題

下列清單包含 Azure Cache for Redis 網路功能常見問題的解答。

Azure Cache for Redis 和虛擬網路有哪些常見的設定錯誤問題?

當 Azure Cache for Redis 裝載于虛擬網路時,會使用下表中的埠。

重要

如果下表中的埠遭到封鎖,快取可能無法正常運作。 當您在虛擬網路中使用 Azure Cache for Redis 時,有一或多個埠遭到封鎖是最常見的設定錯誤問題。

輸出埠需求

有九個輸出埠需求。 這些範圍的輸出要求為:a) 輸出至快取運作所需的其他服務,或 b) 內部 Redis 子網內部以進行節點間通訊。 針對異地複寫,主要和複本快取子網之間有其他輸出需求。

連接埠 方向 傳輸通訊協定 目的 本機 IP 遠端 IP
80、443 輸出 TCP Azure 儲存體/PKI 上的 Redis 相依性 (網際網路) (Redis 子網) * 4
443 輸出 TCP Azure 金鑰保存庫和 Azure 監視器上的 Redis 相依性 (Redis 子網) AzureKeyVault、AzureMonitor 1
53 輸出 TCP/UDP DNS 上的 Redis 相依性 (網際網路/虛擬網路) (Redis 子網) 168.63.129.16 和 169.254.169.254 2 和子網 3 的任何自訂 DNS 伺服器
8443 輸出 TCP Redis 的內部通訊 (Redis 子網) (Redis 子網)
10221-10231 輸出 TCP Redis 的內部通訊 (Redis 子網) (Redis 子網)
20226 輸出 TCP Redis 的內部通訊 (Redis 子網) (Redis 子網)
13000-13999 輸出 TCP Redis 的內部通訊 (Redis 子網) (Redis 子網)
15000-15999 輸出 TCP Redis 和異地複寫的內部通訊 (Redis 子網) (Redis 子網)(異地複本對等子網)
6379-6380 輸出 TCP Redis 的內部通訊 (Redis 子網) (Redis 子網)

1 您可以使用服務標籤 AzureKeyVault 和 AzureMonitor 搭配 Resource Manager 網路安全性群組 (NSG)。

2 這些 Microsoft 所擁有的 IP 位址是用來定址服務 Azure DNS 的主機 VM。

3 沒有自訂 DNS 伺服器或較新的 Redis 快取忽略自訂 DNS 的子網不需要此資訊。

4 如需詳細資訊,請參閱 其他虛擬網路連線需求

異地複寫對等埠需求

如果您在 Azure 虛擬網路中的快取之間使用異地複寫:a) 針對輸入和輸出 方向中整個子網解除封鎖埠 15000-15999,以及 b) 兩個快取。 使用此設定時,子網中的所有複本元件都可以彼此直接通訊,即使未來會有異地容錯移轉也一樣。

輸入埠需求

有八個輸入埠範圍需求。 這些範圍內的輸入要求可能是來自相同虛擬網路中裝載的其他服務輸入。 或者,它們是 Redis 子網通訊的內部。

連接埠 方向 傳輸通訊協定 目的 本機 IP 遠端 IP
6379, 6380 傳入 TCP 對 Redis、Azure 負載平衡的用戶端通訊 (Redis 子網) (Redis 子網)、(用戶端子網)、AzureLoadBalancer 1
8443 傳入 TCP Redis 的內部通訊 (Redis 子網) (Redis 子網)
8500 傳入 TCP/UDP Azure 負載平衡 (Redis 子網) AzureLoadBalancer
10221-10231 傳入 TCP 對 Redis 叢集的用戶端通訊、Redis 的內部通訊 (Redis 子網) (Redis 子網)、(用戶端子網)、AzureLoadBalancer
13000-13999 傳入 TCP 對 Redis 叢集、Azure 負載平衡的用戶端通訊 (Redis 子網) (Redis 子網)、(用戶端子網)、AzureLoadBalancer
15000-15999 傳入 TCP 與 Redis 叢集、Azure 負載平衡和異地複寫的用戶端通訊 (Redis 子網) (Redis 子網)、(用戶端子網)、AzureLoadBalancer、(異地複本對等子網)
16001 傳入 TCP/UDP Azure 負載平衡 (Redis 子網) AzureLoadBalancer
20226 傳入 TCP Redis 的內部通訊 (Redis 子網) (Redis 子網)

1 您可以使用 AzureLoadBalancer for Resource Manager 的服務標籤,或針對傳統部署模型使用AZURE_LOADBALANCER來撰寫 NSG 規則。

其他虛擬網路連線需求

Azure Cache for Redis 有網路連線需求,可能一開始無法在虛擬網路中符合。 Azure Cache for Redis 需要下列所有專案在虛擬網路內使用時正常運作:

  • 全球 Azure 金鑰保存庫端點的輸出網路連線能力。 Azure 金鑰保存庫端點解析在 DNS 網域 vault.azure.net 下。
  • 全球Azure 儲存體端點的輸出網路連線。 包含與 Azure Cache for Redis 實例位於相同區域中的端點,以及位於 其他 Azure 區域的儲存體端點。 Azure 儲存體端點解析在下列 DNS 網域下: table.core.windows.netblob.core.windows.netqueue.core.windows.netfile.core.windows.net
  • 對 、 crl4.digicert.com 、、 ocsp.msocsp.commscrl.microsoft.comcrl3.digicert.com 、、 cacerts.digicert.comoneocsp.microsoft.com 和 的 crl.microsoft.com 輸出網路連線 ocsp.digicert.com 。 需要此連線才能支援 TLS/SSL 功能。
  • 虛擬網路的 DNS 組態必須能夠解析先前點中提及的所有端點和網域。 確保為虛擬網路設定和維護有效的 DNS 基礎結構,即可符合這些 DNS 需求。
  • 下列 Azure 監視器端點的輸出網路連線能力,這些端點會解析在下列 DNS 網域下: shoebox2-black.shoebox2.metrics.nsatc.net 、、 north-prod2.prod2.metrics.nsatc.netazglobal-black.azglobal.metrics.nsatc.netshoebox2-red.shoebox2.metrics.nsatc.neteast-prod2.prod2.metrics.nsatc.netazglobal-red.azglobal.metrics.nsatc.netshoebox3.prod.microsoftmetrics.comshoebox3-black.prod.microsoftmetrics.comshoebox3-red.prod.microsoftmetrics.comazredis-red.prod.microsoftmetrics.com 和 。 azredis-black.prod.microsoftmetrics.com

如何確認我的快取在虛擬網路中運作?

重要

當您連線到裝載在虛擬網路中的 Azure Cache for Redis 實例時,快取用戶端必須位於相同的虛擬網路或虛擬網路中,且虛擬網路中已啟用相同 Azure 區域內的虛擬網路對等互連。 目前不支援全域虛擬網路對等互連。 這項需求適用於任何測試應用程式或診斷 ping 工具。 不論用戶端應用程式裝載在哪個位置,都必須設定 NSG 或其他網路層,以允許用戶端的網路流量到達 Azure Cache for Redis 執行個體。

如上一節所述設定埠需求之後,您可以依照下列步驟來確認快取是否正常運作:

  • 重新開機 所有快取節點。 如果無法連線到所有必要的快取相依性,快取將無法成功重新開機---如輸入埠需求 輸出埠需求 中所述 。
  • 快取節點重新開機之後,如Azure 入口網站中的快取狀態所報告,您可以執行下列測試:
    • 使用 ,從與快取位於相同虛擬網路內的電腦,使用 tcping 埠 6380 偵測快取端點。 例如:

      tcping.exe contosocache.redis.cache.windows.net 6380

      tcping如果工具報告埠已開啟,則快取可供虛擬網路中的用戶端連線。

    • 另一種測試方式:建立連線至快取的測試快取用戶端,然後從快取新增和擷取某些專案。 測試快取用戶端可能是使用 StackExchange.Redis 的主控台應用程式。 將範例用戶端應用程式安裝到與快取位於相同虛擬網路中的 VM 上。 然後,執行它來驗證快取的連線能力。

當我嘗試連線到虛擬網路中的 Azure Cache for Redis 實例時,為什麼收到指出遠端憑證不正確錯誤?

當您嘗試連線到虛擬網路中的 Azure Cache for Redis 實例時,您會看到憑證驗證錯誤,如下所示:

{"No connection is available to service this operation: SET mykey; The remote certificate is invalid according to the validation procedure.; …"}

原因可能是您透過 IP 位址連線到主機。 我們建議您使用主機名稱。 換句話說,請使用下列字串:

[mycachename].redis.cache.windows.net:6380,password=xxxxxxxxxxxxxxxxxxxx,ssl=True,abortConnect=False

請避免使用類似下列連接字串的 IP 位址:

10.128.2.84:6380,password=xxxxxxxxxxxxxxxxxxxx,ssl=True,abortConnect=False

如果您無法解析 DNS 名稱,某些用戶端程式庫會包含 如 sslHost 的組態選項,這是 StackExchange.Redis 用戶端所提供的。 此選項可讓您覆寫用於憑證驗證的主機名稱。 例如:

10.128.2.84:6380,password=xxxxxxxxxxxxxxxxxxxx,ssl=True,abortConnect=False;sslHost=[mycachename].redis.cache.windows.net

是否可以搭配標準或基本快取使用虛擬網路?

虛擬網路只能與進階版層快取搭配使用。

為何在某些子網中建立 Azure Cache for Redis 實例失敗,但無法在其他子網中失敗?

如果您要將 Azure Cache for Redis 實例部署到虛擬網路,則快取必須位於不含其他資源類型的專用子網中。 如果嘗試將 Azure Cache for Redis 實例部署到包含其他資源的 Resource Manager 虛擬網路子網---例如Azure 應用程式閘道實例和輸出 NAT---部署通常會失敗。 建立新的 Azure Cache for Redis 執行個體之前,請先刪除其他類型的現有資源。

您也必須有足夠的 IP 位址可在子網中使用。

子網位址空間需求為何?

Azure 會在每個子網路中保留一些 IP 位址,但這些位址無法使用。 子網路的第一個和最後一個 IP 位址會保留給相容的通訊協定,以及用於 Azure 服務的額外 3 個位址。 如需詳細資訊,請參閱在這些子網路內使用 IP 位址是否有任何限制?

除了 Azure 虛擬網路基礎結構所使用的 IP 位址之外,子網中的每個 Azure Cache for Redis 實例都會針對每個叢集分區使用兩個 IP 位址,如果有的話,還會針對其他複本使用 IP 位址。 負載平衡器會再使用一個 IP 位址。 非叢集快取會被視為具有一個分區。

我可以從對等互連的虛擬網路連線到我的快取嗎?

如果虛擬網路位於相同的區域,您可以使用虛擬網路對等互連或VPN 閘道 VNET 對 VNET 連線來連線。

如果對等互連的 Azure 虛擬網路位於 不同的 區域:區域 1 中的用戶端 VM 無法透過其負載平衡 IP 位址存取區域 2 中的快取,因為具有基本負載平衡器的條件約束。 也就是說,除非它是具有標準負載平衡器的快取,但目前只有使用 可用性區域 建立的快取。

如需虛擬網路對等互連條件約束的詳細資訊,請參閱虛擬網絡 - 對等互連 - 需求和條件約束。 其中一個解決方案是使用VPN 閘道 VNET 對 VNET 連線,而不是虛擬網路對等互連。

當快取裝載在虛擬網路中時,所有快取功能是否都能運作?

當您的快取是虛擬網路的一部分時,只有虛擬網路中的用戶端可以存取快取。 因此,下列快取管理功能目前無法運作:

  • Redis 主控台:因為 Redis 主控台 會在本機瀏覽器中執行---在未連線到虛擬網路的開發人員電腦上---無法接著連線到快取。

已啟用 Azure Lighthouse 的快取是否支援 VNet 插入?

否,如果您的訂用帳戶已啟用 Azure Lighthouse,您就無法在 Azure Cache for Redis 實例上使用 VNet 插入。 請改用私人連結。

搭配 Azure Cache for Redis 使用 ExpressRoute

客戶可以將 Azure ExpressRoute 線路連線到其虛擬網路基礎結構。 如此一來,他們就會將其內部部署網路延伸至 Azure。

根據預設,新建立的 ExpressRoute 線路不會在虛擬網路上使用強制通道(預設路由公告 0.0.0.0/0)。 因此,直接從虛擬網路允許輸出網際網路連線。 用戶端應用程式可以連線到其他 Azure 端點,其中包括 Azure Cache for Redis 實例。

常見的客戶設定是使用強制通道(公告預設路由),這會強制輸出網際網路流量改為在內部部署流動。 如果輸出流量遭到內部部署封鎖,此流量會中斷與 Azure Cache for Redis 的連線,讓 Azure Cache for Redis 實例無法與其相依性通訊。

解決方案是在包含 Azure Cache for Redis 實例的子網上定義一或多個使用者定義的路由(UDR)。 UDR 會定義將接受的子網特定路由,而不是預設路由。

可能的話,請使用下列組態:

  • ExpressRoute 組態預設會公告 0.0.0.0/0,而且預設會強制通道內部部署的所有輸出流量。
  • 套用至包含 Azure Cache for Redis 實例之子網的 UDR 會定義 0.0.0.0/0,以及 TCP/IP 流量至公用網際網路的工作路由。 例如,它會將下一個躍點類型設定為 網際網路

這些步驟的結合效果是子網層級 UDR 優先于 ExpressRoute 強制通道,並確保從 Azure Cache for Redis 實例進行輸出網際網路存取。

使用 ExpressRoute 從內部部署應用程式連線 Azure Cache for Redis 實例不是一般使用案例,因為效能原因。 為了獲得最佳效能,Azure Cache for Redis 用戶端應該位於與 Azure Cache for Redis 實例相同的區域中。

重要

UDR 中定義的路由必須 足夠特定,才能優先于 ExpressRoute 組態所公告的任何路由。 下列範例使用廣泛的 0.0.0.0/0 位址範圍,因此,可能會不小心覆寫使用更特定位址範圍的路由公告。

警告

ExpressRoute 設定不支援 Azure Cache for Redis,這些 設定會錯誤地交叉通告從公用對等互連路徑到私人對等互連路徑 的路由。 已設定公用對等互連的 ExpressRoute 設定會針對一組大型的 Microsoft Azure IP 位址範圍接收來自 Microsoft 的路由公告。 如果這些位址範圍在私人對等互連路徑上不正確地交叉通告,結果就是來自 Azure Cache for Redis 實例子網的所有輸出網路封包會錯誤地強制傳送至客戶的內部部署網路基礎結構。 此網路流程會中斷 Azure Cache for Redis。 此問題的解決方案是停止從公用對等互連路徑到私人對等互連路徑的跨廣告路由。

虛擬網路流量路由 提供 UDR 的背景資訊。

如需 ExpressRoute 的詳細資訊,請參閱 ExpressRoute 技術概觀

深入瞭解 Azure Cache for Redis 功能。