Redis 클러스터 생성 설정값
‘클러스터 모드’ 비활성화
AWS ElastiCache for Redis 생성시 default로 잡히는 포트는
6379그러나 보안을 위해 default 포트는 피해서
6480으로 설정암호화는 ‘저장 중 암호화, 전송 중 암호화’ 모두 활성화하여 생성
Redis 접근
Redis 접근 조건
로컬에서 AWS Redis에 cli로 접근하기 위해서는 “로컬 → Redis”로 다이렉트로 접근할 수 없음 외부 접근 비허용. 같은 VPC 내부의 인스턴스를 통해서만 접근할 수 있음
이러한 특징 때문에 로컬에서 Redis에 접속하기 위해서는 Bastion Host가 필요
Bastion Host Port Forwarding
- 로컬에서 Redis에 접근하기 위해 “Local - Bastion Host - AWS ElastiCache for Redis”로 연결된 포트포워딩
ssh -L 6480:{Redis Endpoint}:{Redis Port} {Bastion Host 접속 유저명}@{Bastion Host IP} -p {Bastion Host 접근할 수 있도록 보안그룹에 인바운드 오픈한 TCP port}
# 만약 pem키를 통해서 Bastion Host에 접근해야한다면
# ssh -i "{pem 키 경로/키 이름.pem}" -L 6480:{Redis Endpoint}:{Redis Port} {Bastion Host 접속 유저명}@{Bastion Host IP} -p {Bastion Host 접근할 수 있도록 보안그룹에 인바운드 오픈한 TCP port}
# ex)
ssh -L 6480:master.dev-redis.xxxxxx.euc1.cache.amazonaws.com:6480 {IPA ID}@10.14.21.85 -p 70
- 포트포워딩이 정상적으로 연결 되었는지 확인
# 방법 1
lsof -i4 -P | grep -i "listen" | grep 6480
# 연결 정상일 경우 결과
ssh 26646 user 29u IPv4 0xb9b737e263825d0b 0t0 TCP localhost:6480 (LISTEN)
# 방법 2
nc -zv 127.0.0.1 6480
# 연결 정상일 경우 결과
Connection to 127.0.0.1 port 6480 [tcp/sun-sr-http] succeeded!
redis-cli 사용하여 Redis DB 접속
redis-cli 설치 :
brew install redisredis-cli 명령어를 통해 AWS ElastiCache for Redis 접속
redis-cli -c -h {redis-endpoint or host} --tls -p {port}
# 옵션 -c: AWS ElastiCache for Redis의 클러스터가 '클러스터 모드 비활성화'인 경우 생략 가능
# 옵션 -h: {redis-endpoint or host}부분이 localhost면 생략 가능
# 옵션 -p: 기본값 포트 6379면 생략 가능
# 옵션 --tls: AWS ElastiCache for Redis의 클러스터의 '전송 중 암호화'설정이 활성화일때 사용 필요(TLS 프로토콜을 사용하여 통신하겠다는 옵션)
# ex)
redis-cli -h localhost --tls -n 1 -p 6480
# 로컬에서 redis까지 포트포워딩된 6480포트를 통해
# TLS 프로토콜을 사용하여 터널링하겠다는 명령.
# 옵션 "-n 1" : 그 중에서도 1번 데이터베이스에 접속한다는 옵션(명시하지 않을경우 default로 0번 데이터베이스에 접속)

AWS ElastiCache for Redis 1번 DB 접속 성공
※ --tls 옵션에 대하여
위의 과정은 Mac M1 환경에서 진행되었다.
이 환경에서 brew를 통해 설치한 redis-cli 패키지의 경우 기본적으로 --tls옵션이 지원되었으나,
기본적으로 SSL/TLS는 Redis에서 버전 6부터 컴파일 시 활성화해야 하는 선택적 기능으로 지원된다고한다.
따라서, redis-cli 사용시 tls 지원을 받기 위해서는 다음 링크에서 방법을 찾을 수 있다.
참고 링크 1. (AWS 공식문서) https://docs.aws.amazon.com/ko_kr/AmazonElastiCache/latest/red-ug/GettingStarted.ConnectToCacheNode.html
참고링크 2. (Redis 공식문서) https://redis.io/docs/management/security/acl/
번외. Redis GUI Tools
위의 과정 중에는 포트포워딩 이후 redis-cli로 Redis DB에 접속하는 방법을 살펴보았다. 이러한 CLI 접속 방법 외에도 GUI 툴을 통해 Redis DB를 확인 및 관리할 수도 있다.
아래 두 툴들은 모두 무료. Medis2의 경우 엄청 심플한 구성으로 다루기 쉽다는 장점이 있지만, 무료버전으로는 클러스터를 하나만 연결 가능하다. 업무 간 두개 이상의 클러스터 연결이 필요한 상황도 있어서 Medis2에서 Redis-insight로 바꿈.
- Medis2

- Redis-insight
