Redis란?
Redis(레디스)는 Remote Dictionary Server의 약자로 "키-값" 구조의 비정형 데이터를 저장하고 관리하기 위한 오픈 소스 기반의 비관계형 데이터베이스 관리 시스템(DBMS)이다. 2009년 살바토르 산필리포가 처음 개발했다. 2015년 부터는 Redis Labs가 지원하고 있다. 모든 데이터를 메모리로 불러와 처리하는 메모리 기반 DBMS이다.
ElastiCache for Redis란?
Redis용 Amazon ElastiCache는 인터넷 규모의 실시간 애플리케이션을 지원할 수 있도록 1밀리초 미만의 지연 시간을 제공하는 놀랍도록 빠른 인 메모리 데이터 스토어입니다. 오픈 소스 Redis를 기반으로 구축되고 Redis API와 호환되는 Redis용 ElastiCache는 Redis 클라이언트와 연동되며 개방형 Redis 데이터 형식을 사용하여 데이터를 저장합니다. 자가 관리형 Redis 애플리케이션은 코드 변경 없이 Redis용 ElastiCache과 원활하게 연동될 수 있습니다. ElastiCache for Redis는 오픈 소스 Redis의 속도, 간편성 및 다양성과 Amazon의 관리 편의성, 보안 및 확장성을 결합하여 게임, 광고 기술, 전자 상거래, 의료 서비스, 금융 서비스 및 IoT 분야에서 가장 까다로운 실시간 애플리케이션을 지원합니다.
1. Redis 클러스터 생성
먼저 콘솔창에 ElastiCache라고 검색을 한다.
그 후 왼쪽 메뉴를 보면 Redis 클러스터가 있는데 그걸 클릭 해 준다.
그 후 Redis 클러스터 생성을 클릭 해 준다.
먼저 클러스터를 우리는 새로 생성할 것이기 때문에 새 클러스터 구성 및 생성을 클릭한다.
그 다음 클러스터 모드를 지정한다.
우리는 일단 클러스터 모드를 비활성화됨으로 선택한다.
이 두 가지 모드의 차이점은 마지막에 설명 할 것이다.
그 후 Redis 클러스터의 이름을 작성해 준다.
그 후 Redis가 위치할 곳을 선택 해 준다. 우리는 AWS 클라우드 내에 만들 것이므로 AWS 클라우드를 선택 해 준다.
다중 AZ는 기본적으로 사용에 선택이 되어 있다.
다중 AZ를 사용하는 경우 자동 장애 조치 역시 기본적으로 사용할 수 있다.
다중 AZ를 사용하지 않더라도 자동 장애조치는 사용할 수 있다.
그 다음은 여러 옵션을 통해서 클러스터를 구성하는 것이다.
먼저 엔진 버전을 선택한다. 만약 클러스터 모드를 활성화 시키려면 엔진 버전을 무조건 3.2 이상으로 실행해야 한다.
우리는 일단 최신 버전의 엔진인 6.2를 선택하고 포트 역시 Redis의 기본 포트인 6379를 유지한다.
파라미터 그룹은 기본으로 놓고 노드 유형은 가장 작은 크기의 노드를 선택 해 준다.
복제본의 개수는 최대 5개까지 가능하며 나는 이중화를 생각하고 있기 때문에 복제본을 한개를 생성해 프라이머리 1개 복제본 1개를 생성 해 줬다.
그 후 서브넷 그룹을 만들어 주었다. Redis도 RDS 처럼 따로 서브넷 그룹을 생성해 줘야 한다.
나는 기존에 만들어 놓은 VPC를 선택한 후 Private Subnet 존에 서브넷을 선택했다.
그 후 가용영역 A존에 프라이머리를 C존에는 복제본을 놓은 후 다음을 클릭했다.
EC2로 넘어가 보안그룹 생성하기
그 다음 EC2로 들어와서 보안그룹을 만들어 주었다. 나는 ubt bastion에서 들어가길 원하므로 포트는 6379로 지정한 후 ubt bastion이 사용하는 보안그룹을 인입점으로 잡아 주었다.
다시 Redis로 돌아온 후 위에서 만든 보안그룹을 사용해 준다.
나는 보안과 백업 모두 선택하지 않았다.
그 후 로그 및 유지관리 역시 모두 선택하지 않고 그냥 다음을 눌러 주었다.
2. EC2 접속 및 Redis 설치
먼저 EC2 우분투 20.04 버전으로 띄웠다.
그 후
sudo apt-get update
sudo apt-get upgrade
를 진행 했다.
sudo apt-get update
sudo apt-get upgrade
그리고 sudo apt-get install redis-server 를 설치 해 준다.
sudo apt-get install redis-server
그리고 redis-cli -h 엔드포인트 를 입력해서 redis로 들어와 준다.
redis-cli -h (redis 엔드포인트 :6379는 제거해야함)
그 후 set 명령어를 통해서 Jin 이라는 Key 와 Hello 라는 Value를 넣어준다.
Set Jin "Hello"
그 후 get 명령어를 통해 Key를 입력하면 Value가 나오게 된다.
get Jin
그 후 keys *을 통해서 어떤 Key가 존재하는지 파악했다.
keys *
그리고 flushall을 통해서 모든 key를 삭제 해 주었다.
flushall
그리고 다시 keys * 명령어를 입력하니 Keys가 모두 삭제 된 것을 확인할 수 있다.
keys*
3. Redis 클러스터 모드 설명 및 차이점
Redis 버전 3.2부터는 서로 다른 두 Redis 클러스터(API/CLI의 경우 복제 그룹) 유형 중 하나를 생성할 수 있습니다. Redis(클러스터 모드 비활성화됨) 클러스터에는 최대 5개의 읽기 전용 복제본 노드가 있는 단일 샤드(API/CLI의 경우 노드 그룹)가 항상 있습니다. Redis(클러스터 모드 활성화됨) 클러스터에는 각각 읽기 전용 복제본 노드가 1~5개인 샤드가 최대 500개 있습니다.
이런식으로 비활성화 클러스터는 최대 5개의 읽기 전용 복제본 노드가 있는 단일 샤드이며
활성화가 된 클러스터는 1 ~5개의 읽기 전용 복제본 노드가 있는 샤드가 최대 500개가 존재하는 것이다.
위 표를 통해서 클러스터 모드에 따른 차이점을 알 수 있다.
- 조정과 파티셔닝 - 비즈니스 요구는 변화합니다. 최고 수요가 발생할 때를 대비하거나 수요가 변화함에 따라 조정해야 합니다. Redis(클러스터 모드 비활성화됨)은 조정을 지원합니다. 복제본 노드를 추가하거나 삭제하여 읽기 용량을 조정하거나 더 큰 노드 유형까지 확장하여 용량을 조정할 수 있습니다. 이 두 작업은 모두 시간이 소요됩니다. 자세한 정보는 복제본 노드가 있는 Redis(클러스터 모드 비활성화됨) 클러스터 조정을 참조하십시오.Redis(클러스터 모드 활성화됨)는 최대 500개의 노드 그룹으로 데이터 분할을 지원합니다. 비즈니스에 변경이 필요할 때마다 샤드 수를 동적으로 변경할 수 있습니다. 파티셔닝의 이점 중 하나는 로드를 더 많은 엔드포인트로 분산시켜 최고 수요가 발생할 때 액세스 병목 현상을 줄이는 것입니다. 또한 데이터가 여러 서버에 분산될 수 있으므로 더 큰 데이터 세트를 수용할 수 있습니다. 파티션 확장에 대한 자세한 내용은 Redis(클러스터 모드 활성화됨)에서 클러스터 조정 섹션을 참조하세요.
- 노드 크기와 노드 수 - Redis(클러스터 모드 비활성화됨) 클러스터에는 샤드가 하나만 있기 때문에 노드 유형이 클러스터의 모든 데이터와 필요한 오버헤드를 수용할 수 있을 만큼 충분히 커야 합니다. 반면 Redis(클러스터 모드 활성화됨) 클러스터를 사용하면 데이터를 여러 샤드에 파티셔닝할 수 있기 때문에 데이터가 더 필요해도 노드 유형이 더 작을 수 있습니다. 자세한 정보는 노드 크기 선택을 참조하십시오.
- 읽기와 쓰기 - 클러스터의 기본 로드가 데이터를 읽는 애플리케이션인 경우 읽기 전용 복제본을 추가하고 삭제하여 Redis(클러스터 모드 비활성화됨) 클러스터를 조정할 수 있습니다. 그러나 5개 읽기 전용 복제본의 최대치가 있습니다. 클러스터의 로드가 주로 쓰기 작업인 경우 여러 샤드가 있는 Redis(클러스터 모드 활성화됨) 클러스터의 추가 쓰기 엔드포인트가 유용할 수 있습니다.
출처
복제: Redis(클러스터 모드 비활성화됨) 대 Redis(클러스터 모드 활성화됨) - Amazon ElastiCache for Redis
댓글