【Azure Redis 快取】Azure Cache for Redis服務中,除開放埠6379,6380外,對13000,13001,15000,15001 為什麼也是開放的呢?

路邊兩盞燈發表於2021-05-19

問題描述

在使用安全檢測工具對Azure Redis服務埠進行掃描時,發現Redis對外開放了13001, 13000,15000,15001埠。非常不理解的是,在門戶上只開放了6379,6380這兩個埠。那是為什麼導致 1300N1500N 埠會是開放的呢?並且是對公網開放?

通過 tcpping Redis hostname  13000/13001/15000/15001 測試,均可以ping通。

【Azure Redis 快取】Azure Cache for Redis服務中,除開放埠6379,6380外,對13000,13001,15000,15001 為什麼也是開放的呢?

對6379,6380也是開放的

【Azure Redis 快取】Azure Cache for Redis服務中,除開放埠6379,6380外,對13000,13001,15000,15001 為什麼也是開放的呢?

 

那麼,這是為什麼呢?

 

問題分析

其實需要從Redis的架構說起,因為Redis需要實現高可用性(“標準”或“高階”層級中),所以Azure Cache for Redis 在一對 Redis 伺服器上執行。 這兩個伺服器託管在專用 VM 上, 被稱為Master/Slave,也稱為主/從節點Primay Node / Replica Node)。

Redis 只允許一臺伺服器處理資料寫入請求,這一臺伺服器是主要節點,而另一伺服器是副本。 預配伺服器節點後,Azure Cache for Redis 可向其分配主要角色副本角色。 

  • 主要節點:通常負責為來自 Redis 客戶端的寫入和讀取請求提供服務。 在執行寫入操作時,它會向其內部記憶體提交一個新金鑰和金鑰更新,並立即回覆客戶端。 它以非同步方式將操作轉發給副本。

【Azure Redis 快取】Azure Cache for Redis服務中,除開放埠6379,6380外,對13000,13001,15000,15001 為什麼也是開放的呢?

 

當主節點發生故障不可用是,副本節點會自動升級為新的主節點。而通過Redis的

雖然可以通過13000或者時15000埠連線到Azure Redis服務,但由於Redis所預設的,也是被大眾所推崇的連線埠為6379(非SSL) / 6380(SSL)。所以,1300N,1500N埠是Azure Redis的設計使然。 由因為6379埠可以在設定中關閉。所以1300N埠也是可以關閉的。如:

【Azure Redis 快取】Azure Cache for Redis服務中,除開放埠6379,6380外,對13000,13001,15000,15001 為什麼也是開放的呢?

 

另外,由於Azure Redis可以啟用叢集功能。而叢集中需要連線到各個分片就是使用的1300N埠和1500N埠。

啟用群集功能後,如何連線到快取?

連線到快取時,可以使用的終結點、埠和金鑰與連線到未啟用群集功能的快取時使用的相同。 Redis 在後端管理群集功能,因此不需要你通過客戶端來管理它。

可以直接連線到快取的各個分片嗎?

群集協議要求客戶端建立正確的分片連線。 因此客戶端應正確執行此操作。 話雖如此,但每個分片都是由主/副快取對組成的,該快取對統稱為快取例項。 可以在 GitHub 上通過 Redis 儲存庫的 不穩定 分支使用 redis-cli 實用程式連線到這些快取例項。 使用 -c 開關啟動後,此版本可實現基本的支援。 有關詳細資訊,請參閱 https://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 下載https://www.elifulkerson.com/projects/tcping.php

Azure Cache for Redis 的高可用性https://docs.azure.cn/zh-cn/azure-cache-for-redis/cache-high-availability#standard-replication

可以直接連線到快取的各個分片嗎?https://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

 

相關文章