GCP Memorystore - Redis
웹세션에만 사용
Basic Tier(단일 Redis 인스턴스) vs Standard tier (고가용성 구성 Redis 인스턴스)
개발시에도 Redis 장애시 처리 코드 필요
스펙 : 8G. M2. 16G이상으로.
비용문제가 아니면 Standard tier
개요
개요 https://cloud.google.com/memorystore/docs/redis/redis-overview
https://cloud.google.com/memorystore/docs/redis/pricing
가격은 서비스 등급, 프로비저닝된 용량, 인스턴스가 프로비저닝된 리전에 따라 다릅니다.
개발환경
서비스등급 : 기본
프로비저닝 용량 : M1(1~4GB)
리전 : 서울
프로덕션
서비스등급 : 표준 (여러 영역에 복제하는 고가용성 제공)
프로비저닝 용량 : M1(1~4GB) 제일 작게 시작하고 모니터링하면서 M2(5~10GB) 등으로 변경
리전 : 서울
Redis 지원버전. 2021.10.6 기준 2021년 9월 7일 최종 업데이트가 된 6.2.0
https://cloud.google.com/memorystore/docs/redis/supported-versions
간단한 가이드
https://cloud.google.com/memorystore/docs/redis/quickstart-console
https://cloud.google.com/memorystore/docs/redis/quickstart-gcloud
서비스 프로젝트에서 공유 VPC 네트워크에 Redis 인스턴스 만들기
아래 문서 참고해야 함.
공유 VPC 네트워크에 Redis 인스턴스 만들 때에만 비공개 서비스 액세스 구성이 필요함.
활성화 Google Cloud Memorystore for Redis API
gcloud services enable redis.googleapis.com
공유 VPC 네트워크에 Redis 인스턴스 만들기.
REGION="asia-northeast3"
ZONE="$REGION-a"
HOST_PROJECT="sample-gw-shared-vpc"
PROJECT="sample-gw-dev-324106"
SHARED_VPC="sample-gw-shared-vpc-1"
REDIS_INSTANCE="sample-gw-redis-01-dev"
REDIS_SIZE="1"
# --network=projects/sample-gw-shared-vpc/global/networks/sample-gw-shared-vpc-1 \
# --project=SERVICE_PROJECT_ID \
gcloud redis instances create $REDIS_INSTANCE --size=$REDIS_SIZE --region=$REGION \
--redis-version=redis_6_x \
--tier=BASIC \
--network=projects/$HOST_PROJECT/global/networks/$SHARED_VPC \
--connect-mode=private-service-access
gcloud redis instances list --region=$REGION
gcloud redis instances describe $REDIS_INSTANCE --region=$REGION
만들 때의 상세 옵션 https://cloud.google.com/sdk/gcloud/reference/redis/instances/create
개발환경에서는 --tier=BASIC 으로 구성(기본값)하고 프로덕션에서는 --tier=STANDARD 로 구성을 함.
redis-version
은 redis_6_x
가 기본값(현재의 최신값)이지만 명시적으로 지정을 해 주었음.
네트워크 연결 : --connect-mode=PRIVATE_SERVICE_ACCESS
또는 --connect-mode=DIRECT_PEERING
의 두 가지 연결 모드 중 하나를 사용하여 Redis 인스턴스를 만들 수 있습니다. PRIVATE_SERVICE_ACCESS
연결 모드를 사용하는 것이 좋습니다. 자세한 내용은 네트워킹을 참조하세요.
Redis ip확인
# check redis ip
gcloud redis instances describe $REDIS_INSTANCE --region=$REGION | grep ^host | awk '{ print $2 }'
Redis 설치 후 web or was에 서 telnet 으로 해당 IP의 6379 포트에 접근을 해서 테스팅 (https://cloud.google.com/memorystore/docs/redis/connecting-redis-instance )
개발 중에 로컬 머신에서 Redis 인스턴스에 연결하려면 포트 포워딩을 이용하면 됨.
유지보수
유지보수 설명
유지보수 알림을 사용하면 예약되기 최소 7일전에 알림이 전송됨. 그러면 이 알림을 이용해서 수동으로 유지보수를 할 수 있음. Redis 표준 등급 인스턴스 (여러 영역에 복제하는 고가용성 제공) 를 사용하고 애플리케이션에서 Redis 접속에 문제가 있을 경우 재시도를 하도록 설정을 해 놓으면 자동으로 유지보수가 되어도 괜찮을 것임. (개발에서 해당 부분 반영을 해서 개발 해야 함)
https://cloud.google.com/memorystore/docs/redis/maintenance-policy
유지보수 기간을 사용하면 서비스 중단이 발생하는 유지보수 업데이트를 수행할 시간과 요일을 선택할 수 있습니다.
유지보수 업데이트 프로세스를 원활하게 실행하려면 인스턴스의 유지보수 기간을 설정해야 하며 유지보수 알림을 사용 설정해야 합니다. 이 두 단계를 모두 수행하면 인스턴스의 유지보수 업데이트가 예약되기 최소 7일 전에 알림이 전송됩니다.
유지보수가 기본 등급 인스턴스에 미치는 영향 및 권장사항 : 유지보수가 적용되면 캐시가 플러시되고 유지보수 후에 데이터가 복원되지 않습니다. 다운타임은 보통 10~15분 정도입니다. (테스트로 만든 1G Redis를 클라이언트 연결이 없는 상태에서 2G로 변경시 9분 정도 걸렸음)
유지보수가 표준 등급 인스턴스에 미치는 영향 및 권장사항 : 표준 등급 인스턴스는 복제본으로 장애 조치하여 다운타임을 최소화합니다. 이 프로세스는 동일한 연결 문자열과 IP 주소를 사용하며 일반적으로 몇 분 안에 완료됩니다.
유지보수 업데이트 설정하기
https://cloud.google.com/memorystore/docs/redis/managing-maintenance-updates#gcloud
시간은 UTC 기준이며 UTC 12시는 KST 21시.
유지보수 알림
인스턴스가 아닌 프로젝트 수준에서 설정됩니다. 알림을 수신할 모든 이메일 주소를 개별적으로 추가해야 합니다. 유지보수 알림을 사용 설정하면 예약된 유지보수가 수행되기 최소 7일 전에 이메일로 알림이 전송됩니다. 알림에 대한 이메일 필터를 설정하려면 이메일 제목은 "Upcoming maintenance for your Cloud Memorystore instance [your-instance-name]"
이 됩니다.
유지보수 알림은 인스턴스가 아닌 프로젝트 수준에서 설정됩니다. 이메일 알림은 Google 계정과 연결된 이메일 주소로 전송됩니다. 커스텀 이메일 별칭(예: 팀 이메일 별칭)을 구성할 수 없습니다. → 따로 이메일 주소를 넣는 부분은 안 나옴. 이렇게 하면 여러 명이 관리를 하려는 경우 불편한데.
Google Cloud Console의 커뮤니케이션 페이지로 이동 → 제품알림 → 이메일 사용 클릭함.
이 부분은 문서에서도 웹콘솔에서 작업을 하고 있고 CLI가 없는 것으로 보임.