前提條件

如果您需要從本地 PC 端訪問 Redis 執行個體進行資料操作,可以通過在 ECS 上配置連接埠映射或者連接埠轉寄實現。但必須符合以下前提條件:

  • 若 Redis 執行個體屬於專用網路(VPC),ECS 必須與 Redis 執行個體屬於同一個 VPC。
  • 若 Redis 執行個體屬於傳統網路,ECS 必須與 Redis 執行個體屬於同一節點(地區)。
  • 已將訪問資料庫的 ECS 伺服器私網地址加到目標 Redis 執行個體的白名單中。詳情請參見設定 IP 白名單
  • 已在 ECS 伺服器的安全性群組中添加安全性群組規則,允許本地 PC 的公網地址和 Redis 執行個體的私網地址對 ECS 伺服器的訪問。詳情請參見添加安全性群組規則

ECS Windows 篇

目前ApsaraDB for Redis需要通過 ECS 的內網進行串連訪問,如果您需要本地通過公網訪問ApsaraDB for Redis,可以在 ECS Windows 雲端服務器中通過 netsh 進行連接埠映射實現。

  1. 登入 ECS Windows 伺服器,在 cmd 執行以下命令:
    netsh interface portproxy add v4tov4 listenaddress=ECS伺服器的私網IP地址 listenport=6379 connectaddress=ApsaraDB for Redis的串連地址 connectport=6379

    如果需要查看當前伺服器存在的映射,可用netsh interface portproxy show all命令。

  2. 設定完成後在本地進行驗證測試。

    1. 在本地通過 redis-cli 串連 ECS Windows 伺服器。假設 ECS Windows 伺服器的 IP 是 1.1.1.1,即 telnet 1.1.1.1 6379
    2. 串連上 ECS windows 伺服器後,輸入串連 Redis 的密碼:auth Redis的串連密碼
    3. 進行資料寫入及查詢驗證。

    通過上述步驟即可實現:您本地 PC 或伺服器通過公網串連 ECS Windows 6379連接埠,對ApsaraDB for Redis 進行訪問。

    注意

    因 portproxy 由微軟官方提供,未開源使用,您如果配置使用過程中遇到疑問,可參看 netsh 的 portproxy 使用說明或向微軟官方諮詢確認。或者您也可以考慮通過其他的方案實現,比如通過 portmap 配置代理映射。

  3. 完成相關操作後,如需刪除公網轉寄,可用netsh interface portproxy delete v4tov4 listenaddress=ECS伺服器的私網IP地址 listenport=6379刪除不需要的映射。

ECS Linux 篇

目前ApsaraDB for Redis需要通過 ECS 進行內網串連訪問。如果您本地需要通過公網訪問ApsaraDB for Redis,可以在 ECS Linux 雲端服務器中安裝 rinetd 進行轉寄實現。

  1. 在Elastic Compute Service Linux 中安裝 rinetd。
     wget http://www.boutell.com/rinetd/http/rinetd.tar.gz&&tar -xvf rinetd.tar.gz&&cd rinetd
                            sed -i 's/65536/65535/g' rinetd.c (修改連接埠範圍)
                            mkdir /usr/man&&make&&make install
    注意

    rinetd 安裝包下載地址不確保下載可用性,您可以自行搜尋安裝包進行下載使用。

  2. 開啟設定檔 rinetd.conf。
     vi /etc/rinetd.conf
  3. 在設定檔中輸入如下內容:
     0.0.0.0 6379 Redis 的連結地址 6379
                            logfile /var/log/rinetd.log
    说明 您可以使用 cat /etc/rinetd.conf命令來檢驗設定檔是否修改正確。

  4. 執行如下命令啟動 rinetd。
     rinetd
    • 您可以通過 echo rinetd >>/etc/rc.local 將 rinetd 設定為自啟動。

    • 若遇到綁定報錯,可以執行 pkill rinetd 結束進程,再執行 rinetd啟動進程 rinetd。

    • rinetd 正常啟動後, 執行netstat -anp | grep 6379 確認服務是否正常運行。

  5. 在本地進行驗證測試。
    1. 您可以在本地通過 redis-cli 串連 ECS Linux 伺服器後進行登入驗證,比如安裝了 rinetd 的伺服器的 IP 是 1.1.1.1,即redis-cli -h 1.1.1.1 -a Redis的執行個體ID:Redis密碼。或者通過 telent 串連 ECS Linux 伺服器後進行操作驗證。假設 ECS Linux 伺服器的 IP 是 1.1.1.1,即 telnet 1.1.1.1 6379
    2. 串連上 ECS Linux 伺服器後,輸入串連 Redis 的密碼:auth Redis的串連密碼
    3. 進行資料寫入及查詢驗證。

通過上述步驟即可實現:您本地的 PC 或伺服器通過公網串連 ECS Linux 6379 連接埠,對ApsaraDB for Redis 進行訪問。

注意

您可以通過該方案進行測試使用,因 rinetd 為開源軟體,如在使用過程中存在疑問,您可以參看其官方文檔或與 rinetd 官方進行聯絡確認。