問題描述
在Azure Redis的官方文檔中,介紹了在Windows下,如何通過redis-cli.exe連接Redis, 包含如何配置stunnel使得通過 6380,SSL方式連接到Redis Cache。引用原文內容如下:
為 redis-cli.exe 啟用訪問權限
使用 Azure Cache for Redis 時,默認情況下僅啟用 TLS 端口 (6380)。
redis-cli.exe
命令行工具不支持 TLS。 可通過兩種配置方式使用該命令行工具:
啟用非 TLS 端口 (6379) - 不建議采用此配置,因為在此配置中,系統通過 TCP 以明文形式發送訪問密鑰 。 這種更改可能會影響對緩存的訪問。 僅當訪問測試緩存時才考慮選擇此配置。
下載並安裝 stunnel。
運行 stunnel GUI Start 以啟動服務器 。
右鍵單擊 stunnel 服務器的任務欄圖標,然后單擊“顯示日志窗口” 。
在 stunnel“日志窗口”菜單上,單擊“配置” > “編輯配置”,打開當前配置文件 。
在“服務定義”部分下向 redis-cli.exe 添加以下項 。 將
yourcachename
替換為實際緩存名稱。[redis-cli] client = yes accept = 127.0.0.1:6380 connect = yourcachename.redis.cache.chinacloudapi.cn:6380保存並關閉配置文件。
在 stunnel“日志窗口”菜單中,單擊“配置” > “重新加載配置” 。
本文面臨的情況為: 使用Linux VM 如何連接到Azure Redis, 通過SSL方式(6380)或非SSL方式(6379)
准備條件
- Azure Redis
- Linux VM
- redis-cli
- stunnel4
操作步驟
第一步:安裝Redis-cli
sudo apt-get update
sudo apt-get install redis-tools
注:redis-tools 中包含了redis-cli工具及其他reids工具
第二步:安裝stunnel4
因為redis-cli.exe
工具不支持 TLS(通過6380端口連接),所以使用stunnel 來連接到Redis的6380端口. 當前使用的是第4版本的stunnel,在Linux中的安裝命令如下:
sudo apt-get install stunnel4
注意:
如果要使用非SSL端口6379運行Redis,在這種情況下,您無需使用stunnel,並且可以在Azure Redis緩存中開啟非SSL端口的情況下直接使用以下命令進行訪問:
redis-cli -p 6379 -a <access key> -h <yourcachename.redis.cache.chinacloudapi.cn>
第三步:開啟Stunnel服務,在VM啟動時自動啟動
修改/etc/default/stunnel4配置文件,修改文件中ENABLED的值為1。使用nano編輯文件,命令為:
sudo nano /etc/default/stunnel4
通過鍵盤方向鍵移動到下圖箭頭處,修改ENABLED為1后,使用CRTL + X后,輸入Y,來保存當前的修改。然后回車回到Linux命令窗口。
第四步:在stunnel中添加redis-cli的配置項
在Stunnel中添加redis的配置文件,使用如下命令添加文件並且在文件中配置Redis-cli的鏈接信息
sudo nano /etc/stunnel/redis.conf
打開文件后,輸入配置內容:
[redis-cli] client = yes accept = 127.0.0.1:6380 connect = yourredisname.redis.cache.chinacloudapi.cn:6380
使用CTRL + X, 輸入Y,回車保存
第五步:重啟Stunnel服務,加載Redis配置,使用命令為
sudo systemctl restart stunnel4.service
第六步:檢查stunnel是否已經監聽6380端口,使用命令
sudo netstat -plunt
第七步:使用Redis-cli通過6380(SSL方式)連接到Redis,連接命令
redis-cli -p 6380 -a <your redis access key>
此時,就可以看見連接成功並開始管理Redis。
[以上,希望對您有所幫助。]
排查連接錯誤
在連接到Redis的時候,如果遇見連接錯誤,如何來檢查Redis的網絡情況及端口是否正常ping通。可以使用以下方式。
一:使用telnet 命令,連接到Redis
telnet yourredisname.redis.cache.chinacloudapi.cn port
如:
二:使用tcpping命令長ping redis服務,查看網絡情況
由於TCPPING命令需要在Linux中安裝。命令如下:
####To install tcptraceroute on Debian/Ubuntu: $ sudo apt-get install tcptraceroute
####To install tcptraceroute on CentOS/REHL, first set up RepoForge on your system, and then: $ sudo yum install tcptraceroute
####Finally, download tcpping from the web. $ cd /usr/bin $ sudo wget http://www.vdberg.org/~richard/tcpping $ sudo chmod 755 tcpping
####To measure network latency by using tcpping, simply run it as follows.
$ tcpping yourredisname.redis.cache.chinacloudapi.cn 6379
seq 0: tcp response from 139.219.6.4 [open] 31.382 ms
seq 1: tcp response from 139.219.6.4 [open] 26.407 ms
seq 2: tcp response from 139.219.6.4 [open] 34.900 ms
seq 3: tcp response from 139.219.6.4 [open] 38.130 ms
seq 4: tcp response from 139.219.6.4 [open] 37.641 ms
seq 5: tcp response from 139.219.6.4 [open] 29.953 ms
seq 6: tcp response from 139.219.6.4 [open] 31.179 ms
seq 7: tcp response from 139.219.6.4 [open] 26.353 ms
seq 8: tcp response from 139.219.6.4 [open] 24.195 ms
seq 9: tcp response from 139.219.6.4 [open] 29.222 ms
參考資料:
使用 Redis 命令行工具進行連接: https://docs.azure.cn/zh-cn/azure-cache-for-redis/cache-how-to-redis-cli-tool#enable-access-for-redis-cliexe
Connect to Azure Cache for Redis using SSL Port 6380 from Linux VM: https://techcommunity.microsoft.com/t5/azure-paas-blog/connect-to-azure-cache-for-redis-using-ssl-port-6380-from-linux/ba-p/1186109
How to install tcpping on Linux : https://gist.github.com/cnDelbert/5fb06ccf10c19dbce3a7