連線至 Redis 執行個體

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

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

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

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

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

  2. 使用 apt-get 安裝 telnet

    sudo apt-get install telnet
    
  3. 在終端機中,透過 telnet 連線至 Redis 執行個體的 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 執行個體

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

  1. 如果沒有使用 Redis 執行個體授權網路的 Compute Engine VM,請按照在特定子網路中建立 VM 執行個體建立 VM 並連線。

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

    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 SETGET 指令,確認您已與執行個體建立經過驗證的連線。

  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 執行個體。

  1. 如果您還沒有啟用傳輸中加密的 Redis 執行個體,請按照「建立啟用傳輸中加密的 Redis 執行個體」一文的說明建立一個。

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

    1. 執行下列指令,安裝本指南所需的工具:

      sudo apt-get install stunnel4
      
      sudo apt-get install telnet
      
  3. 設定 Compute Engine VM,以便搭配 Stunnel 使用:

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

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

      gcloud redis instances describe instance-id --region=region
      

      最多可有三個 CA。

    3. 複製所有可見的憑證授權單位,包括 -----BEGIN CERTIFICATE----- 行和 -----END CERTIFICATE----- 行,然後貼上並儲存至您先前建立的 server_ca.pem 檔案。

    4. 執行下列指令,建立新檔案來放置 Stunnel 設定資訊:

      sudo vim /etc/stunnel/redis-client.conf
      

      將下列文字貼入檔案,並將 redis-instance-ip 替換為 Redis 執行個體的 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
      

      執行下列指令來啟動 stunnel:

      sudo stunnel /etc/stunnel/redis-client.conf
      

      確認 stunnel 正在執行:

      ps aux | grep stunnel
      

    5. 執行下列指令,重新啟動 Stunnel:

      sudo systemctl restart stunnel4
      
  4. 如要使用 Telnet 連線至 Redis 執行個體,請執行下列指令:

    telnet localhost 6378
    
  5. 在 Telnet 工作階段中,對 Redis 執行個體執行 ping 指令:

    輸入:

    PING
    

    結果:

    PONG
    

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

在開發期間,從本機電腦連線至 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 的區域。

    這項指令會建立具備 f1-micro 機器類型的 Compute Engine VM,以提高成本效益。如要選擇其他機器類型,請點選該選項。

  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 通道連線就會持續運作。

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

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

從執行 bash 殼層的 Pod 連線

  1. 前往 Google Cloud 控制台的 GKE 頁面。
    GKE
  2. 按一下要進行連線的 GKE 叢集。如果沒有叢集,請建立一個並啟用 IP 別名。如需瞭解如何建立啟用 IP 別名的叢集,請參閱建立虛擬私有雲原生叢集
  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 別名的叢集,請參閱建立虛擬私有雲原生叢集

  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=gcr.io/google_containers/redis:v1 -- sh
  5. 執行 redis-cli 指令,並將 HOST-IP 替換為 Redis 執行個體的主機 IP 位址:
    redis-cli -h HOST-IP info
  6. 您也可以選擇執行 Redis benchmark 指令,並同樣將 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 執行個體: