連線至 Redis 執行個體

本頁面說明如何使用 Telnet 和 redis-cli 連線至 Redis 執行個體。此外,本頁也說明如何在使用唯讀副本、AUTH 和傳輸中加密等功能時連線。最後,這個頁面會提供從 Google Kubernetes Engine 環境連線的說明。

如需 Memorystore for Redis 支援的 Google Cloud 環境清單,請參閱「支援的環境」。Memorystore 支援的部分無伺服器環境需要無伺服器 VPC 存取連接器。詳情請參閱「無伺服器 VPC 存取連接器需求」。

使用 telnet 從 Compute Engine VM 連線至 Redis 執行個體

您可以從任何使用執行個體授權網路的 Compute Engine VM,透過支援的 RFC 1918 IP 位址連線至 Memorystore for Redis 執行個體。

  1. 如果沒有 Compute Engine VM 與執行個體使用相同的授權網路,請建立一個,並透過 SSH 連線至該 VM。如要執行這項操作,請按照「在 Compute Engine 中建立 Linux VM 執行個體」中的步驟操作。

  2. 使用 apt-get 安裝 telnet:

    sudo apt-get install telnet
    
  3. 在終端機中,透過 telnet 連線至執行個體的 IP 位址。將 VARIABLES 替換為適當的值。

    telnet INSTANCE_IP_ADDRESS 6379
    

    如果可以連線至執行個體,指令會傳回下列結果:

    Trying INSTANCE_IP_ADDRESS…
    Connected to INSTANCE_IP_ADDRESS
    
  4. 在 Telnet 工作階段中,輸入一些 Redis 指令:

    輸入:

    PING
    

    結果:

    PONG
    

    Enter 鍵

    SET HELLO WORLD
    

    結果:

    +OK
    

    輸入:

    GET HELLO
    

    結果:

    $5
    WORLD
    

使用 redis-cli 從 Compute Engine VM 連線至 Redis 執行個體

您可以從任何 Compute Engine VM 連線至 Redis 執行個體,前提是 VM 必須使用 Redis 執行個體的授權網路,且具備支援的 RFC 1918 IP 位址。

  1. Compute Engine VM 必須使用 Redis 執行個體的授權網路,如果不存在這樣的 VM,請按照「在特定子網路中建立 VM 執行個體」一文的說明,建立及連線至 VM。

  2. 在 Compute Engine SSH 終端機中執行下列指令,在 Compute Engine VM 上安裝 redis-cli:

    sudo apt-get install redis-tools
    
  3. 在 Compute Engine 終端機中執行下列指令,並將 variables 替換為適當的值。

    redis-cli -h redis-instance-ip-address
    

    您現在已使用 redis-cli 連線至 Redis 執行個體。

  4. 測試完 Redis 執行個體的連線後,建議您刪除用於連線至 Redis 執行個體的 Compute Engine VM。這樣可以避免 Cloud Billing 帳戶產生費用。

連線至使用 AUTH 的 Redis 執行個體

本節說明如何連線至已啟用 AUTH 功能的 Redis 執行個體。

  1. Compute Engine VM 必須與 Redis 執行個體使用相同的授權網路,如果不存在這樣的 VM,請按照快速入門導覽課程:使用 Linux VM 來建立及連線至 VM。

  2. 在 Compute Engine VM 上安裝 redis-cli,方法是在 Compute Engine SSH 終端機中執行下列指令:

    sudo apt-get install redis-tools
    
  3. 取得執行個體的 AUTH 字串

  4. 執行下列指令,使用 redis-cli 驗證並連線至執行個體,並將 variables 替換成適當的值:

    redis-cli -h instance-ip-address -a auth-string
    

    或:

    redis-cli -h instance-ip-address
    AUTH auth-string
    
  5. 執行 Redis SET 和 GET 指令,確認您已建立與執行個體的已驗證連線。

  6. 測試與 Redis 執行個體的連線後,建議刪除用於連線至 Redis 執行個體的 Compute Engine VM。這樣可以避免 Cloud Billing 帳戶產生費用。

使用讀取端點連線至 Redis 執行個體

如果執行個體已啟用唯讀副本,請按照下列操作說明連線至讀取端點:

  1. Compute Engine VM 必須與 Redis 執行個體使用相同的授權網路,如果不存在這樣的 VM,請按照快速入門導覽課程:使用 Linux VM 來建立及連線至 VM。

  2. 使用 apt-get 安裝 telnet:

    sudo apt-get install telnet
    
  3. 如要找出執行個體讀取端點的 IP 位址,請查看執行個體的唯讀副本資訊。

  4. 在終端機中,透過 telnet 連線至 Redis 執行個體的讀取端點 IP 位址,並將 variables 替換為適當的值。

    telnet read-endpoint-ip 6379
    

    如果執行成功,指令會傳回下列結果:

    Trying read-endpoint-ip…
    Connected to read-endpoint-ip
    
  5. 在 Telnet 工作階段中,輸入一些 Redis 指令:

    輸入:

    PING
    

    結果:

    PONG
    

使用 Stunnel 和 telnet 安全地連線至 Redis 執行個體

本節提供範例,說明如何使用 Stunnel 連線至已啟用傳輸中加密功能的 Redis 執行個體。Stunnel 是一種 Proxy,可為用戶端和伺服器新增傳輸層安全標準 (TLS) 加密功能,而無須變更其程式碼。詳情請參閱 Stunnel 說明文件。

  1. 如果沒有已啟用傳輸中加密功能的 Redis 執行個體,請建立一個。詳情請參閱「建立啟用傳輸中資料加密功能的 Redis 執行個體」。

  2. 如果沒有與上一個步驟中的 Redis 執行個體使用相同授權網路的 Compute Engine VM,請建立並連線至 VM。詳情請參閱「在 Compute Engine 中建立 Linux VM 執行個體」。

  3. 執行下列指令,安裝此程序所需的工具:

    sudo apt-get install stunnel4
    
    sudo apt-get install telnet
    

    除非另有說明,否則本程序中的其餘步驟,都會在您建立並連線的 Compute Engine VM 的 SSH 終端機中進行。

  4. 設定 Compute Engine VM,以便與 Stunnel 搭配使用:

    1. 執行下列指令,為憑證授權單位 (CA) 建立檔案:

      sudo vim /tmp/server_ca.pem
      
    2. 在用於管理 Google Cloud 資源的標準終端機 (而非 Compute Engine 終端機) 中,執行下列指令,查看 Redis 執行個體的 CA:

      gcloud redis instances describe INSTANCE_ID --region=REGION
      

      請依指示取代下列項目:

      • INSTANCE_ID:Redis 執行個體的 ID
      • REGION:執行個體所在的區域

      最多可有三個 CA。

    3. 複製所有 CA,包括 -----BEGIN CERTIFICATE----- 行和
      -----END CERTIFICATE----- 行,然後將內容貼到您建立的 server_ca.pem 檔案並儲存。

      請確認 CA 的文字完全靠左對齊,且 CA 的任何一行開頭都沒有空白字元。

    4. 執行下列指令,為 Stunnel 設定資訊建立檔案:

      sudo vim /etc/stunnel/redis-client.conf
      
    5. 將下列文字貼入檔案,並將 REDIS_INSTANCE_IP 替換為執行個體的 IP 位址:

      output=/tmp/stunnel.log
      CAfile=/tmp/server_ca.pem
      client=yes
      pid=/var/run/stunnel.pid
      verifyChain=yes
      sslVersion=TLSv1.2
      [redis]
      accept=127.0.0.1:6378
      connect=REDIS_INSTANCE_IP:6378
      
    6. 執行下列指令,啟動 Stunnel:

      sudo stunnel /etc/stunnel/redis-client.conf
      
    7. 確認 Stunnel 是否正在執行:

      ps aux | grep stunnel
      
    8. 執行下列指令,重新啟動 Stunnel:

      sudo systemctl restart stunnel4
      

      您可以在重新啟動 Stunnel 前後使用 ps aux | grep stunnel 指令,確認重新啟動是否成功。如果 ps aux | grep stunnel 指令顯示的 Stunell 程序 ID 不同,表示 Stunell 已成功重新啟動。

  5. 如要使用 telnet 連線至 Redis 執行個體,請執行下列指令:

    telnet localhost 6378
    
  6. 在 telnet 工作階段中測試連線。

    1. 選用:如果執行個體已啟用 Redis AUTH,則必須先進行驗證,才能測試連線。

      執行下列指令:

      AUTH AUTH_STRING
      

      將 AUTH_STRING 替換為執行個體的驗證字串。

      結果:

      OK
      

    執行下列指令:

    PING
    

    結果:

    PONG
    
  7. 選用:除了 telnet 之外,您也可以透過本機 Stunnel 通訊埠使用 redis-cli 連線,並傳遞 AUTH 字串。

    執行下列指令:

    redis-cli -h 127.0.0.1 -p 6378 -a AUTH_STRING
    

使用通訊埠轉送功能從本機連線

在開發期間,從本機電腦連線至 Redis 執行個體可能很有幫助。如要這麼做,您必須建立 Compute Engine 執行個體,用於將通訊埠轉送至 Redis 執行個體。

  1. 執行下列指令,建立 Compute Engine 執行個體:

    gcloud compute instances create COMPUTE_VM_NAME --machine-type=f1-micro --zone=ZONE
    

    其中:

    • COMPUTE_VM_NAME 是您為 Compute Engine VM 指定的名稱。
    • ZONE 是要佈建 VM 的可用區。

    這個指令會建立 Compute Engine VM,並使用 f1-micro 機器類型,以提高成本效益。您可以選擇其他機型。

  2. 在本機上開啟新的終端機。

  3. 執行下列指令,建立 SSH 通道,透過 Compute Engine VM 轉送流量:

    gcloud compute ssh COMPUTE_VM_NAME --zone=ZONE -- -N -L 6379:REDIS_INSTANCE_IP_ADDRESS:6379
    

    其中:

    • COMPUTE_VM_NAME 是 Compute Engine VM 的名稱。
    • ZONE 與 Compute Engine VM 所在的可用區相同。
    • REDIS_INSTANCE_IP_ADDRESS 是 Redis 執行個體的 IP 位址。
  4. 如要測試連線,請開啟新的終端機視窗,然後執行下列指令:

    redis-cli ping
    

    如果運作正常,結果應會傳回:

    PONG
    

    您現在已連線至 Redis 執行個體,可以使用這個開啟的 SSH 通道,將指令傳送至 Redis 執行個體。如果尚未安裝 redis-cli,請先安裝,才能執行這個指令。

  5. 只要終端機視窗保持開啟,且 SSH 通道連線正常運作,SSH 通道就會保持開啟。

從 Google Kubernetes Engine 叢集連線至 Redis 執行個體

如要確認叢集是否使用 IP 別名,請使用 gcloud container clusters describe。

您可以從與 Redis 執行個體使用相同授權網路的 Google Kubernetes Engine 叢集,連線至 Redis 執行個體。

從執行 Bash Shell 的 Pod 連線

  1. 前往 Google Cloud 控制台的 GKE 頁面。
    GKE
  2. 按一下要連線的 GKE 叢集。如果您還沒有叢集,請建立一個並啟用 IP 別名。如要瞭解如何建立已啟用 IP 別名的叢集,請參閱「建立 VPC 原生叢集」。
  3. 按一下叢集名稱右側的 [Connect] (連線) 按鈕,然後在隨即顯示的視窗中按一下 [Run in Cloud Shell] (在 Cloud Shell 中執行) 按鈕。
  4. 如要設定 kubectl 指令列的存取方式,請執行以下指令:
    gcloud container clusters get-credentials CLUSTER_NAME --zone=CLUSTER_ZONE --project=PROJECT_ID
    • CLUSTER_NAME 是叢集名稱。
    • CLUSTER_ZONE 是叢集所在的區域。您的 Redis 執行個體也必須位在這個區域中。
    • PROJECT_ID 是叢集和 Redis 執行個體所在的專案。
    您應該會看到成功訊息:kubeconfig generated for CLUSTER_NAME
  5. 如果您的叢集為 1.8 以上版本且已啟用 IP 別名,請略過此步驟。如果叢集版本為 1.7 以下,或叢集版本為 1.8 以上但未啟用 IP 別名,請先按照下列解決方法步驟操作,再嘗試連線至執行個體: 如要進一步瞭解 IP 別名,包括如何建立啟用這項設定的叢集,請參閱「建立 VPC 原生叢集」。
  6. 使用下列指令連線至 bash 殼層:
    kubectl run -i --tty busybox --image=busybox -- sh
  7. 使用主機位址與通訊埠編號建立與 Redis 執行個體的 Telnet 連線:
    telnet HOST-IP PORT
  8. 輸入 Redis 基本指令以驗證連線:
    PING
    +PONG
  9. 如要關閉 Telnet 連線,請按下 Ctrl+C 或 Command+C (Mac)。如要結束 pod 中的 bash 殼層,請輸入「return」。完成後,如果不再需要連線至 Redis,請從 /k8s-custom-iptables/ 目錄執行下列指令:
    ./uninstall.sh

從 Google Kubernetes Engine Pod 連線至 Redis 執行個體

在開始連線之前,您需要具有 GKE 叢集。如果沒有叢集,請建立並啟用 IP 別名。如要瞭解如何建立已啟用 IP 別名的叢集,請參閱「建立 VPC 原生叢集」。

  1. 在控制台的右上方,點按「啟用 Cloud Shell」在這個步驟中,您將啟用 Cloud Shell。 按鈕。
  2. 如要設定 kubectl 指令列的存取方式,請執行以下指令:
    gcloud container clusters get-credentials CLUSTER_NAME --zone CLUSTER_ZONE --project PROJECT_ID
    • CLUSTER_NAME 是叢集名稱。
    • CLUSTER_ZONE 是叢集所在的區域。您的 Redis 執行個體也必須位在這個區域中。
    • PROJECT_ID 是叢集和 Redis 執行個體所在的專案。
    您應該會看到成功訊息:kubeconfig generated for CLUSTER_NAME
  3. 如果您的叢集為 1.8 以上版本且已啟用 IP 別名,請略過此步驟。如果叢集版本為 1.7 以下,或叢集版本為 1.8 以上但未啟用 IP 別名,請先按照下列解決方法步驟操作,再嘗試連線至執行個體: 如要進一步瞭解 IP 別名,包括如何建立已啟用這項設定的叢集,請參閱「建立 VPC 原生叢集」。
  4. 使用下列指令啟動執行 redis-cli 的 Redis Pod:
    kubectl run -i --tty redisbox --image=redis:7.2 -- sh
  5. 執行 redis-cli 指令,並將 HOST-IP 替換為 Redis 執行個體的主機 IP 位址:
    redis-cli -h HOST-IP info
  6. (選用) 執行 Redis 基準測試指令,並再次將 HOST-IP 替換為 Redis 執行個體的主機 IP 位址:
    redis-benchmark -c 100 -n 100000 -d 1024 -r 100000 -t PING,SET,GET,INCR,LPUSH,RPUSH,LPOP,RPOP,SADD,SPOP,MSET -h HOST-IP -q
  7. 如要退出 Redis Pod,請輸入 return。如果已完成操作,且不再需要連線至 Redis,請從 /k8s-custom-iptables/ 目錄執行下列指令:
    ./uninstall.sh

後續步驟

使用在下列環境中執行的應用程式範例連線至 Redis 執行個體: