Redis용 Memorystore 클러스터 인스턴스에 연결

이 페이지에서는 Redis용 Memorystore 클러스터 인스턴스에 연결하는 방법을 설명합니다.

클라이언트 지원

Memorystore for Redis 클러스터는 자체 클라이언트 라이브러리를 제공하지 않고 Redis 프로토콜을 지원하는 기존 타사 클라이언트 라이브러리를 지원합니다. Redis 클라이언트 페이지에서 클라이언트 목록의 예시를 확인할 수 있습니다.

Redis-py 클라이언트 권장사항

redis-py Python 클라이언트를 사용하여 Redis용 Memorystore 클러스터 인스턴스에 연결하려면 Redis 클러스터를 선언할 때 skip_full_coverage_check=True를 추가해야 합니다.

from rediscluster import RedisCluster
endpoints = [{"host": "IPADDRESS", "port": "6379"}]

rdb = RedisCluster(
    startup_nodes=endpoints,
    skip_full_coverage_check=True, # Required for Memorystore
    decode_responses = True)

print(rdb.set('PYTHON', 'CLUSTER'))
print(rdb.get('PYTHON'))
print(rdb.unlink('PYTHON'))

리전 간 액세스

Memorystore 인스턴스가 있는 리전과 다른 리전에 있는 클라이언트에서 Redis용 Memorystore 클러스터 인스턴스에 액세스할 수 있습니다.

클러스터의 검색 엔드포인트 보기

Memorystore 클러스터의 검색 엔드포인트를 보려면 다음 안내를 따르세요.

콘솔

  1. Google Cloud 콘솔에서 Memorystore for Redis 클러스터 페이지로 이동합니다.

    Memorystore for Redis 클러스터

  2. 클러스터 ID를 클릭합니다.

  3. 이 인스턴스에 연결 섹션에서 내부 IP 주소연결 포트를 기록해 둡니다. 이 두 값은 함께 사용되는 클러스터의 검색 엔드포인트입니다.

gcloud

클러스터의 검색 엔드포인트를 보려면 인스턴스 세부정보 보기 섹션에 설명된 대로 describe gcloud CLI를 실행합니다.

출력은 다음과 비슷하게 표시됩니다.

createTime: '2023-05-30T19:47:37.850985390Z'
discoveryEndpoints:
- address: 10.142.0.10
  port: 6379
  pscConfig:
     network: projects/my-project-364018/global/networks/default
     projectId: my-project-364018
name: projects/my-project-364018/locations/us-east1/clusters/my-cluster-1
replicaCount: 0
shardCount: 3
sizeGb: 39
state: ACTIVE
transitEncryptionMode: TRANSIT_ENCRYPTION_MODE_DISABLED
uid: 87b47146-217d-472e-96e5-13962c0e8706

discovery_endpoints: 섹션에 나열된 엔드포인트 주소와 포트 번호를 기록해 둡니다. 이 두 값은 함께 사용되는 클러스터의 검색 엔드포인트입니다.

redis-cli를 사용하여 Compute Engine VM에서 연결

Memorystore 인스턴스의 승인된 네트워크를 사용하는 모든 Compute Engine VM에서 Memorystore for Redis 클러스터 인스턴스에 연결할 수 있습니다.

인스턴스에 연결하려면 다음 안내를 따르세요.

  1. Memorystore for Redis 클러스터 인스턴스에 승인된 네트워크를 사용하는 Compute Engine VM이 아직 없으면 VM을 만들고 빠른 시작: Linux VM 만들기를 따라 연결합니다.

  2. Compute Engine VM에 redis-cli를 설치합니다. Linux Debian 기반 VM을 만든 경우 Compute Engine SSH 터미널에서 다음 명령어를 실행할 수 있습니다.

    sudo apt-get update
    sudo apt-get install redis
    
  3. 클러스터의 검색 엔드포인트를 보고 기록해 둡니다.

  4. Memorystore for Redis 클러스터 터미널에서 다음 명령어를 실행하여 변수를 적절한 값으로 바꿉니다.

    redis-cli -h DISCOVERY_ENDPOINT_ADDRESS -p PORT_NUMBER -c
    

    각 항목의 의미는 다음과 같습니다.

    • DISCOVERY_ENDPOINT_ADDRESSPORT_NUMBER는 이전 단계에서 기록해 둔 값입니다.
  5. 연결되면 Redis 명령어를 몇 가지 입력합니다.

    다음을 입력합니다.

    PING
    

    결과:

    PONG
    

    입력

    SET HELLO WORLD
    

    결과:

    OK
    

    입력:

    GET HELLO
    

    결과:

    "WORLD"
    
  6. Redis 인스턴스에 대한 연결 테스트를 완료한 후 Redis 인스턴스에 연결하는 데 사용한 Compute Engine VM을 삭제하는 것을 고려해야 합니다. 이렇게 하면 Cloud Billing 계정에 비용이 청구되지 않습니다.

Stunnel 및 telnet을 사용해 Memorystore 클러스터에 안전하게 연결하기

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

  1. 전송 중인 데이터 암호화가 사용 설정된 Memorystore 클러스터가 아직 없는 경우 전송 중인 데이터 암호화로 인스턴스 만들기를 따라 클러스터를 만듭니다.

  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 alpha redis clusters get-cluster-certificate-authority  --cluster-id=CLUSTER_ID
      
    3. -----BEGIN CERTIFICATE----- 줄 및 -----END CERTIFICATE----- 줄을 포함해 표시된 모든 인증 기관을 복사하여 이전에 만든 server_ca.pem 파일에 붙여넣고 저장합니다.

    4. Stunnel 구성 정보를 저장할 새 파일을 만듭니다.

      sudo vim /etc/stunnel/redis-client.conf
      
    5. DISCOVERY_ENDPOINT_ADDRESS를 클러스터의 Private Service Connect 엔드포인트 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:6379
      connect=DISCOVERY_ENDPOINT_ADDRESS:PORT_NUMBER
      

      stunnel을 시작합니다.

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

      stunnel이 실행 중인지 확인합니다.

      ps aux | grep stunnel
      
    6. stunnel을 다시 시작합니다.

      sudo systemctl restart stunnel4
      
  4. Redis-CLI를 사용하여 Redis 인스턴스에 연결하려면 다음 명령어를 실행합니다.

    redis-cli -h DISCOVERY_ENDPOINT_ADDRESS -p PORT_NUMBER -c
    
  5. 연결되면 Redis 명령어를 몇 가지 입력합니다.

    다음을 입력합니다.

    PING
    

    결과:

    PONG