Redis 인스턴스에 연결

이 페이지에서는 Telnet 및 redis-cli를 사용하여 Redis 인스턴스에 연결하는 방법을 설명합니다. 또한 이 페이지에서는 읽기 복제본, AUTH, 전송 중인 암호화와 같은 기능을 사용할 때 연결하는 방법을 설명합니다. 마지막으로 이 페이지에서는 Google Kubernetes Engine 환경에서 연결하는 방법을 안내합니다.

Memorystore for Redis가 지원하는 Google Cloud 환경 목록은 지원되는 환경을 참조하세요. Memorystore가 지원하는 일부 서버리스 환경에는 서버리스 VPC 액세스 커넥터가 필요합니다. 자세한 내용은 서버리스 VPC 액세스 커넥터 요구사항을 참조하세요.

텔넷을 사용하여 Compute Engine VM에서 Redis 인스턴스에 연결

지원되는 RFC 1918 IP 주소를 사용하여 Redis 인스턴스의 승인된 네트워크를 사용하는 모든 Compute Engine VM에서 Redis 인스턴스에 연결할 수 있습니다.

  1. Redis 인스턴스와 동일한 승인된 네트워크를 사용하는 Compute Engine VM이 아직 없으면 빠른 시작: Linux VM 사용을 따라 VM을 만들고 연결합니다.

  2. apt-get을 사용하여 telnet을 설치합니다.

    sudo apt-get install telnet
    
  3. 터미널에서 Redis 인스턴스의 IP 주소를 텔넷으로 연결하고 variables를 적절한 값으로 바꿉니다.

    telnet instance-ip-address 6379
    

    성공하면 명령어가 다음 결과를 반환합니다.

    Trying instance-ip-address…
    Connected to instance-ip-address
    
  4. 텔넷 세션에서 몇 가지 Redis 명령어를 입력합니다.

    입력:

    PING
    

    결과:

    PONG
    

    입력

    SET HELLO WORLD
    

    결과:

    +OK
    

    입력:

    GET HELLO
    

    결과:

    $5
    WORLD
    

redis-cli을 사용하여 Compute Engine VM에서 Redis 인스턴스에 연결

지원되는 RFC 1918 IP 주소를 사용하여 Redis 인스턴스의 승인된 네트워크를 사용하는 모든 Compute Engine VM에서 Redis 인스턴스에 연결할 수 있습니다.

  1. Redis 인스턴스에 승인된 네트워크를 사용하는 Compute Engine 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. Redis 인스턴스와 동일한 승인된 네트워크를 사용하는 Compute Engine VM이 아직 없으면 빠른 시작: Linux VM 사용을 따라 VM을 만들고 연결합니다.

  2. Compute Engine SSH 터미널에서 다음 명령어를 실행하여 Compute Engine VM에 redis-cli를 설치합니다.

    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. Redis 인스턴스와 동일한 승인된 네트워크를 사용하는 Compute Engine VM이 아직 없으면 빠른 시작: Linux VM 사용을 따라 VM을 만들고 연결합니다.

  2. apt-get을 사용하여 telnet을 설치합니다.

    sudo apt-get install telnet
    
  3. 인스턴스의 읽기 복제본 정보 보기를 통해 인스턴스의 읽기 엔드포인트의 IP 주소를 찾습니다.

  4. variables를 적절한 값으로 바꿔 터미널에서 Redis 인스턴스의 읽기 엔드포인트 IP 주소에 텔넷으로 연결합니다.

    telnet read-endpoint-ip 6379
    

    성공하면 명령어가 다음 결과를 반환합니다.

    Trying read-endpoint-ip…
    Connected to read-endpoint-ip
    
  5. 텔넷 세션에서 몇 가지 Redis 명령어를 입력합니다.

    입력:

    PING
    

    결과:

    PONG
    

Stunnel 및 telnet을 사용해 Redis 인스턴스에 안전하게 연결하기

이 섹션에서는 Stunnel을 통해 전송 중인 데이터 암호화가 사용 설정된 Redis 인스턴스에 연결하는 방법의 예시를 제공합니다.

  1. 전송 중인 데이터 암호화가 사용 설정된 Redis 인스턴스가 없으면 전송 중인 데이터 암호화로 Redis 인스턴스 만들기를 수행하여 인스턴스를 만듭니다.

  2. 이전 단계의 Redis 인스턴스와 동일한 승인된 네트워크를 사용하는 Compute Engine VM이 아직 없으면 Linux VM을 사용한 빠른 시작에 따라 VM을 만들고 연결합니다.

    1. 다음 명령어를 실행하여 이 가이드에 필요한 도구를 설치합니다.

      sudo apt-get install stunnel4
      
      sudo apt-get install telnet
      
  3. Stunnel과 함께 사용할 Compute Engine VM을 구성합니다.

    1. 다음 명령어를 실행하여 인증 기관(CA)을 배치할 새 파일을 만듭니다.

      sudo vim /tmp/server_ca.pem
      
    2. Google Cloud 리소스를 관리하는 데 사용하는 표준 터미널(Compute Engine 터미널이 아님)에서 다음 명령어를 실행하여 Redis 인스턴스의 인증 기관을 확인합니다.

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

      CA는 최대 3개까지 있을 수 있습니다.

    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
    

    결과:

    PONG
    

포트 전달을 사용하여 로컬 머신에서 연결

개발 중에 로컬 머신에서 Redis 인스턴스에 연결하면 도움이 될 수 있습니다. 이렇게 하려면 포트를 Redis 인스턴스로 전달하는 데 사용할 Compute Engine 인스턴스를 만들어야 합니다.

  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. 포트가 Compute Engine VM을 통해 트래픽을 전달하는 SSH 터널을 만들려면 다음 명령어를 실행합니다.

    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 인스턴스에 연결

Redis 인스턴스와 동일한 승인 네트워크를 사용하는 Google Kubernetes Engine 클러스터에서만 Redis 인스턴스에 연결할 수 있습니다.

Bash 셸을 실행하는 포드에서 연결

  1. Google Cloud 콘솔에서 GKE 페이지로 이동합니다.
    GKE
  2. 연결하려는 GKE 클러스터를 클릭합니다. 아직 클러스터가 없으면 IP 별칭을 사용 설정하여 클러스터를 만듭니다. IP 별칭이 사용 설정된 클러스터를 만드는 방법은 VPC 기반 클러스터 만들기를 참조하세요.
  3. 클러스터 이름 오른쪽에 있는 연결 버튼을 클릭한 다음 나타나는 창에서 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 HOST-IP PORT
  8. 기본 Redis 명령어를 입력하여 연결을 확인합니다.
    PING
    +PONG
  9. 텔넷 연결을 닫으려면 Control+C(Mac에서는 Command+C)를 누르면 됩니다. 포드에서 bash 셸을 종료하려면 return을 입력합니다. 작업이 완료되어 더 이상 Redis에 연결할 필요가 없으면 /k8s-custom-iptables/ 디렉터리에서 다음 명령어를 실행합니다.
    ./uninstall.sh

Google Kubernetes Engine 포드에서 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 포드를 시작합니다.
    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 포드를 종료하려면 return을 입력합니다. 작업이 완료되어 더 이상 Redis에 연결할 필요가 없으면 /k8s-custom-iptables/ 디렉터리에서 다음 명령어를 실행합니다.
    ./uninstall.sh

다음 단계

다음에서 실행되는 샘플 애플리케이션을 사용하여 Redis 인스턴스에 연결