Redis 설치

최근 모니터링을 위해 스프링 액추에이터를 건드려보다가 EC2에 Redis가 설치되지 않아서 문제가 생겼었다.

이전에 메일 인증을 구현했던 EC2 인스턴스와 다른 인스턴스에서 테스트를 해서 Redis를 설치하지 않았다.

설치는 어렵지 않지만 다시 설치하려 하니 기존에 어떻게 설치했는지 기억이 안나서 글로 정리해두려고 한다.


EC2 Ubuntu 환경에서 Redis 설치 과정

본인의 EC2 OS는 Ubuntu이므로 우분투를 기준으로 정리한다.

1. 시스템 업데이트

apt를 업데이트 해준다.

sudo apt update

2. Redis 설치

sudo apt install redis-server

3. Redis 설치 확인

아래처럼 redis-cli 로 들어가서 ping 명령어로 레디스가 잘 설치 됐는지 확인한다.


Redis 종료하기

가끔 어떤 이유로든 Redis 서버를 종료해야할 수도 있을 것이다.

이때를 위해 종료 및 재시작 방법도 적어둔다.

1. Redis 서버 종료

sudo systemctl stop redis-server

2. Redis 서버 시작

sudo systemctl start redis-server

 

보안 그룹 설정

이전 글에서 RDS 인스턴스를 생성했다.

RDS 인스턴스를 생성할 때 default와 EC2의 보안 그룹을 추가해주었다.

그래서 현재  EC2에서 접근은 가능하지만 외부에서 접근하려면 추가로 설정해줘야한다.

이 글에서는 생성할 때 추가해둔 default 보안 그룹을 수정해서 로컬에서 접근할 수 있도록 할 것이다.


1. default 보안 그룹 수정

1-1. RDS 인스턴스로 이동

생성된 RDS 인스턴스를 눌러서 인스턴스 정보를 확인하면 아래와 같이 정보를 확인할 수 있다.

1-2. default 보안 그룹 수정 페이지으로 이동

인스턴스 정보 창에서 아래로 쭉 내려오면 보안 그룹 규칙을 확인할 수 있다.

여기서 default 보안 그룹을 눌러서 이동한다.

default 보안 그룹을 클릭해서 이동하면 아래처럼 확인할 수 있다.

보안 그룹 ID를 눌러서 수정 페이지로 이동하자.

1-3. 보안 그룹 수정

로컬에서 RDS에 접근할 수 있게 인바운드 규칙에 아래처럼 내 IP를 추가한다.

1-4. 보안 그룹 수정 확인

아래처럼 새로 추가한 규칙을 확인할 수 있다.

2. 로컬에서 RDS 접근

로컬에서 인텔리제이나 DBeaver 등으로 RDS에 접근한다.

본인은 DBeaver를 이용할 것이다.

2-1. DBeaver로 새 데이터베이스 연결

 

2-2. RDS 접근을 위한 DB 정보 입력

DBeaver를 사용하면 아래와 같은 창을 확인할 수 있다.

다른 어떤 DB 접근 GUI를 쓰더라도 아래와 구조는 같을것이다.

이제 엔드포인트, 포트번호, DB 이름, 사용자 이름, 비밀번호를 입력하면 된다.

이후 Test Connection으로 연결이 잘 되는지 확인하면 끝.

엔드포인트와 포트번호는 RDS 연결 및 보안 탭에서 확인할 수 있다.

DB 이름과 마스터 사용자 이름은 RDS 구성 탭에서 확인할 수 있다.

3. 로컬에서 RDS 접근 확인

Test Connection에 성공하면 아래와 같은 창을 확인할 수 있다.

RDS

지금까지 EC2 인스턴스를 생성하고 이 인스턴스에서 서비스를 배포까지 하였다.

DB는 어떤 서비스든 필요할테니 이제 애플리케이션과 DB를 연동해야 한다.

스프링 서버와 동일한 EC2 인스턴스에서 인메모리로 데이터를 저장할 수도 있지만

이 경우 하나의 EC2 인스턴스가 죽을 경우 DB 데이터 또한 사라진다.

결국 여러 경우를 생각하면 DB는 따로 서버를 둬야한다는 결론이 나온다.

여기서 간단하게 생각하면 두 가지 선택지가 생긴다.

  • DB를 띄운 EC2 인스턴스를 DB 서버로 이용한다.
  • AWS RDS를 이용한다.

두 가지를 비교하자면 비용적인 측면에서는 EC2 인스턴스가 더 저렴하다.

반면 AWS RDS에서는 기본적인 설정은 AWS에서 마친 상태의 DB 서버를 제공해주므로 직접 설정해야하는 DB 설정이 많이 줄어든다.

매니지드(RDS) vs 언매니지드(EC2) 라고 할 수 있다.

프리티어로 RDS도 제공하므로 우선 RDS를 사용하고 추후 DB 설정 공부를 하고 EC2로 직접 DB 서버를 띄워보기로 했다.


1. RDS 인스턴스 생성

1-1. RDS 인스턴스 생성 페이지로 이동

1-2. DB 종류 선택

원하는 종류의 DB를 선택하면 된다.

본인은 써본게 이것 뿐이라 MySQL 8 버전을 선택하겠다.

1-3. 템플릿 선택

프리 티어를 선택하면 가용성 및 내구성은 설정할 수 없다.

1-4. DB 정보 설정

DB 이름, 마스터 이름, 비밀번호를 설정한다.

추후 애플리케이션이나 DBeaver에서 DB에 접근할 때 여기서 입력한 정보로 접속한다.

1-5. 인스턴스 구성 및 스토리지 설정

프리티어를 사용하므로 선택지는 거의 없다.

과금 가능성이 있는 설정만 주의하자.

1-6. 보안 그룹 설정 

EC2 컴퓨팅 리소스에 연결 안 함, 퍼블릭 액세스

로컬에서 DBeaver나 인텔리제이 등에서 MySQL로 DB를 직접 확인해보기 위해 퍼블릭 액세스를 열어두려 한다.

따라서 EC2 컴퓨팅 리소스에 연결 안 함, 퍼블릭 액세스를 허용하겠다.

 

VPC 보안 그룹

해당 보안 그룹을 통해 들어온 요청만 3306 포트로 받아주겠다는 의미다.

기존 항목을 선택해 내가 만든 EC2 인스턴스의 보안 그룹(여기서는 launch-wizard-1)을 선택하면 EC2 인스턴스의 요청을 받는다.

로컬에서도 DB에 접근하기 위해서는 default 보안 그룹을 추가하고 이 보안 그룹을 조금 수정할 것이다.

1-7. 추가 구성

그림에서 생략된 부분은 기본 설정을 따라가면 된다고 생각해서 굳이 추가하지 않았다.


2. RDS 인스턴스 생성 확인

위와 같이 설정하고 데이터베이스 생성을 하면 아래처럼 생성된 RDS 인스턴스를 확인할 수 있다.

인스턴스 생성까지 시간이 좀 걸린다.

RDS 인스턴스를 다시 만들어서 위 설정과는 DB 식별자가 조금 다를테지만 신경쓰지 않아도 된다.

 

참고 자료

 

AWS 2편: RDS 생성 후 EC2 와 연동

Overview 지난 포스팅에서는 AWS 에서 EC2 인스턴스를 생성하고 Spring Boot 서버를 띄워 외부에서 요청하는 것까지 해봤습니다. 이번에는 데이터베이스 연동을 위해 RDS 인스턴스를 생성하고 이전에 만

bcp0109.tistory.com

 

+ Recent posts