承接上篇文章內容,咱們來看一下在Azure Redis部署中提供的其餘選項,上篇講過,在Azure Redis Premium版本中,咱們能夠支持將Redis部署在VNET中,這樣的好處是顯而易見的,咱們能夠經過NSG等規則來控制進出redis的流量,這樣能夠把redis的安全保護好,可是若是不是Premium版本的Redis是否意味着就沒辦法作Redis的網絡安全防禦呢?固然也不是這樣,即便是standard的redis,咱們仍然能夠在Firewall裏以添加白名單的方式保護redis的安全redis
固然這只是針對公網制定的白名單,redis自己仍然是至關於部署在internet中的,而不是一個私有的網絡,若是想讓應用以訪問內容的方式訪問redis,就須要將Redis部署在虛擬網絡中了
api
Redis 虛擬網絡部署主要有如下這些優點:
緩存
有固定的static private ip安全
可使用NSG控制出入站流量服務器
應用訪問延遲更低微信
固然,想要部署在虛擬網絡中,Redis還要求咱們必須有一個獨立的subnet用於redis部署,這是個什麼概念呢?若是用過application gateway的話其實很容易理解這個概念,application gateway也是要求必須部署在一個獨立的subnet中,這個subnet只能部署application gateway資源,不能部署其餘任何資源,redis也是一樣的概念,這是redis部署在虛擬網絡裏的一個前置條件
網絡
另外,若是對於出入站流量有嚴格要求的場景,Redis還要求對一些特定的服務器和地址有入站或者出站的權限,redis須要按期和一些管理節點進行通訊以維護redis自己的狀態
app
如下是這些要求的詳細介紹,若是網絡端口不知足條件的話,會發現redis部署時會報錯超時等狀況
負載均衡
出站端口有七個要求。ide
與 Internet 的全部出站鏈接均可以經過客戶端的本地審覈設備創建。
其中三個端口將流量路由到爲 Azure 存儲和 Azure DNS 提供服務的 Azure 終結點。
剩餘端口範圍,這些端口用於內部 Redis 子網通訊。 內部 Redis 子網通訊不須要子網 NSG 規則。
端口 | 方向 | 傳輸協議 | 目的 | 本地 IP | 遠程 IP |
---|---|---|---|---|---|
80、443 | 出站 | TCP | Azure 存儲/PKI (Internet) 上的 Redis 依賴關係 | (Redis 子網) | * |
53 | 出站 | TCP/UDP | DNS (Internet/VNet) 上的 Redis 依賴關係 | (Redis 子網) | 168.63.129.16 和 169.254.169.254 1 以及子網的任何自定義 DNS 服務器 3 |
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 Microsoft 擁有的這些 IP 地址用於對爲 Azure DNS 提供服務的主機 VM 進行尋址。
3 沒有自定義 DNS 服務器的子網或忽略自定義 DNS 的更新 redis 緩存不須要。
若是在 Azure 虛擬網絡中的緩存之間使用異地複製,請注意,建議的配置是在兩個緩存的入站和出站方向上取消阻止整個子網的端口 15000-15999,這樣即便未來發生異地故障轉移,子網中的全部副本組件也能夠直接相互通訊。
入站端口範圍有八個要求。 這些範圍中的入站請求從同一 VNET 中託管的其餘服務入站,或者是 Redis 子網通訊的內部請求。
端口 | 方向 | 傳輸協議 | 目的 | 本地 IP | 遠程 IP |
---|---|---|---|---|---|
637九、6380 | 入站 | TCP | 與 Redis 的客戶端通訊、Azure 負載均衡 | (Redis 子網) | (Redis 子網)、虛擬網絡、Azure 負載均衡器 2 |
8443 | 入站 | TCP | Redis 的內部通訊 | (Redis 子網) | (Redis 子網) |
8500 | 入站 | TCP/UDP | Azure 負載均衡 | (Redis 子網) | Azure 負載均衡器 |
10221-10231 | 入站 | TCP | Redis 的內部通訊 | (Redis 子網) | (Redis 子網)、Azure 負載均衡器 |
13000-13999 | 入站 | TCP | 與 Redis 羣集的客戶端通訊、Azure 負載均衡 | (Redis 子網) | 虛擬網絡、Azure 負載均衡器 |
15000-15999 | 入站 | TCP | 與 Redis 羣集的客戶端通訊、Azure 負載均衡和異地複製 | (Redis 子網) | 虛擬網絡、Azure 負載均衡器(地域副本對等子網) |
16001 | 入站 | TCP/UDP | Azure 負載均衡 | (Redis 子網) | Azure 負載均衡器 |
20226 | 入站 | TCP | Redis 的內部通訊 | (Redis 子網) | (Redis 子網) |
2 可使用服務標記「AzureLoadBalancer」(資源管理器)或「AZURE_LOADBALANCER」(經典)來創做 NSG 規則。
在虛擬網絡中,可能一開始不符合 Azure Redis 緩存的網絡鏈接要求。 在虛擬網絡中使用時,Azure Redis 緩存須要如下全部項才能正常運行。
與全球 Azure 存儲終結點創建的出站網絡鏈接。 這包括位於 Azure Redis 緩存實例區域的終結點,以及位於其餘 Azure 區域的存儲終結點。 Azure 存儲終結點在如下 DNS 域之下解析:table.core.chinacloudapi.cn、blob.core.chinacloudapi.cn、queue.core.chinacloudapi.cn 和 file.core.chinacloudapi.cn。
與 ocsp.msocsp.com、mscrl.microsoft.com 和 crl.microsoft.com 創建的出站網絡鏈接。 須要此鏈接才能支持 SSL 功能。
虛擬網絡的 DNS 設置必須可以解析前面幾點所提到的全部終結點和域。 確保已針對虛擬網絡配置並維護有效的 DNS 基礎結構便可符合這些 DNS 要求。
與如下 Azure 監視終結點(在下列 DNS 域下進行解析)的出站網絡鏈接:shoebox2-black.shoebox2.metrics.nsatc.net、north-prod2.prod2.metrics.nsatc.net、azglobal-black.azglobal.metrics.nsatc.net、shoebox2-red.shoebox2.metrics.nsatc.net、east-prod2.prod2.metrics.nsatc.net、azglobal-red.azglobal.metrics.nsatc.net。
因此,總結來講,想要將redis部署到虛擬網絡,須要知足如下三個條件
有一個獨立的subnet用於redis部署
知足redis的出入站要求
Premium版本Redis
部署的過程相對來講就很簡單了,在部署redis的時候選擇P級別redis, 而後挑選合適的vnet和subnet,能夠看到若是subnet不知足條件,會提示subnet中已經有其餘資源