【Azure Redis 快取】Azure Cache for Redis服務中,除開放埠6379,6380外,對13000,13001,15000,15001 為什麼也是開放的呢?
- 2021 年 5 月 19 日
- 筆記
- 【Azure Redis 快取】, 6379/6380/13000/15000 埠, Azure Redis
問題描述
在使用安全檢測工具對Azure Redis服務埠進行掃描時,發現Redis對外開放了13001, 13000,15000,15001埠。非常不理解的是,在門戶上只開放了6379,6380這兩個埠。那是為什麼導致 1300N 和 1500N 埠會是開放的呢?並且是對公網開放?
通過 tcpping Redis hostname 13000/13001/15000/15001 測試,均可以ping通。
對6379,6380也是開放的
那麼,這是為什麼呢?
問題分析
其實需要從Redis的架構說起,因為Redis需要實現高可用性(「標準」或「高級」層級中),所以Azure Cache for Redis 在一對 Redis 伺服器上運行。 這兩個伺服器託管在專用 VM 上, 被稱為Master/Slave,也稱為主/從節點(Primay Node / Replica Node)。
Redis 只允許一台伺服器處理數據寫入請求,這一台伺服器是主要節點,而另一伺服器是副本。 預配伺服器節點後,Azure Cache for Redis 可向其分配主要角色和副本角色。
- 主要節點:通常負責為來自 Redis 客戶端的寫入和讀取請求提供服務。 在執行寫入操作時,它會向其內部記憶體提交一個新密鑰和密鑰更新,並立即回復客戶端。 它以非同步方式將操作轉發給副本。
當主節點發生故障不可用是,副本節點會自動升級為新的主節點。而通過Redis的
雖然可以通過13000或者時15000埠連接到Azure Redis服務,但由於Redis所默認的,也是被大眾所推崇的連接埠為6379(非SSL) / 6380(SSL)。所以,1300N,1500N埠是Azure Redis的設計使然。 由因為6379埠可以在設置中關閉。所以1300N埠也是可以關閉的。如:
另外,由於Azure Redis可以啟用集群功能。而集群中需要連接到各個分片就是使用的1300N埠和1500N埠。
啟用群集功能後,如何連接到快取?
連接到快取時,可以使用的終結點、埠和密鑰與連接到未啟用群集功能的快取時使用的相同。 Redis 在後端管理群集功能,因此不需要你通過客戶端來管理它。
可以直接連接到快取的各個分片嗎?
群集協議要求客戶端建立正確的分片連接。 因此客戶端應正確執行此操作。 話雖如此,但每個分片都是由主/副快取對組成的,該快取對統稱為快取實例。 可以在 GitHub 上通過 Redis 存儲庫的 不穩定 分支使用 redis-cli 實用程式連接到這些快取實例。 使用
-c
開關啟動後,此版本可實現基本的支援。 有關詳細資訊,請參閱 //redis.io 上 Redis cluster tutorial(Redis 群集教程)中的操作群集。對於非 TLS,請使用以下命令。
Redis-cli.exe -h <<cachename>> -p 13000 (to connect to instance 0) Redis-cli.exe -h <<cachename>> -p 13001 (to connect to instance 1) Redis-cli.exe -h <<cachename>> -p 13002 (to connect to instance 2) ... Redis-cli.exe -h <<cachename>> -p 1300N (to connect to instance N)對於 TLS,請將
1300N
替換為1500N
。
注意:雖然Redis客戶端默認連接的是主節點,但如果想要連接到副本節點,也是可以的。只是這會引起一些不可預期的潛在問題,如數據丟失,監控圖標上的指標不對等情況。
參考文檔
tcping 下載://www.elifulkerson.com/projects/tcping.php
Azure Cache for Redis 的高可用性 : //docs.azure.cn/zh-cn/azure-cache-for-redis/cache-high-availability#standard-replication
可以直接連接到快取的各個分片嗎?//docs.azure.cn/zh-cn/azure-cache-for-redis/cache-how-to-premium-clustering#how-do-i-connect-to-my-cache-when-clustering-is-enabled