서론
https://cobi-98.tistory.com/73
github에 있는 프로젝트를 AWS EC2 ubuntu 환경에서
git clone으로 내려받아 jar 파일을 빌드하여 서버를 배포하고 나니 mysql 문제가 계속 발생했다.
ubuntu 환경에서는 mysql을 확인하지 못하는 이유는
개발 환경에서의 docker mysql 이미지를 사용하였기 때문이다.
여기서 두 가지의 방법이 있다.
ubuntu 환경에서 docker를 설치하고 image를 받아 database를 생성하는 것보다,
ec2 환경에 RDS를 설정하면 DB를 쉽게 사용할 수 있을 것 같아. RDS를 적용하기로 하였다.
이 글의 목차로는 다음과 같다.
- RDS 생성
- 보안 그룹 생성
- Local 접속 테스트
- 파라미터 그룹 설정(DB 설정)
- EC2 연결
1. RDS 생성
1-1 DB 선택
- MySQL - 8.0.33 가장 최신 버전을 선택했다. (버전은 사용자의 환경에 맞춰서 설정해 주면 된다.)
1-2 db 설정
- 식별자는 DB 인스턴스가 어떤것인지 식별하기 위한 것이다.
- 마스터 사용자 이름, 마스터 암호는 SpringBoot yml에서 DB Connection 설정이나, Local에서 Test 할 때 필요하다.
1-3 스토리지 인스턴스 설정
- 중요한 부분이다. (과금의 요소가 있음)
- 윗부분의 인스턴스는 프리티어(db.t2.micro) 사용.
- 스토리지 부분의 할당된 스토리지는 프리티어에서는 20 GB 가 제공된다.
- 스토리지 자동 활성화를 비활성화해야 임계값 초과를 예방할 수 있다.
1-4 연결
- 컴퓨팅 리소스 (연결 안 함)
- 리소스에 연결을 선택하면 EC2 와 자동으로 연결해 주지만,
- 여기서는 보안그룹을 새로 생성해서 할것이기 때문에 선택하지 않는다.
- 퍼블릭 엑세스 (예)
- EC2 뿐 아니라, Local에서도 Test를 진행할 예정이기 때문에, '예'로 지정한다.
- 만약 아니요를 선택한다면 퍼블릭IP가 할당되지 않아, 외부에서 접근이 불가능하기 때문이다
- 보안그룹 (새로 생성)
- 뒷부분에 보안그룹을 Custom해서 EC2, Local 연결할 예정이기 때문이다.
1-5 암호 인증
- DB에 암호를 이용하여 접근 할 예정이기에 '암호 인증'을 선택해준다.
1-6 추가 구성
- 초기 데이터베이스 이름은, DB를 해당이름 으로 만들어주는 것이다
- ({애플리케이션 db})
- 백업 (자동백업을 해제)
- 사이드 프로젝트용, 연습용이라면 백업이 필요가 없고,
- 활성화가 되어있으면, 스냅샷을 생성하는 과정에서 DB 메모리를 많이 사용하기 때문이다.
2. 보안 그룹 생성
EC2와 마찬가지로 RDS 또한 보안그룹 설정이 필요하다.
EC2 생성 시 보안그룹을 설정했었는데,
RDS에서는 server와, Local에서 접속을 해야 하기 때문에 보안그룹을 추가로 설정해주는 작업이 필요하다.
DB 가 생성되고 나면 위의 창이 나오고 그 db의 보안그룹을 추가하여야 한다.
인바운드 보안 그룹을 클릭하여 추가설정을 해주도록 하자.
보안그룹 이름은 {애플리케이션}DBmysql 으로 정하였고,
ec2 보안그룹의 ID를 추가하고 저장하면 된다.
3. Local 접속 테스트 (Dbeaver)
- aws db를 클릭 후, 엔드포인트 복사
- username, password 클릭 후 아래 test connetion 클릭
- 오른쪽과 같다면 연결이 잘 이루어졌다.
4. 파라미터 그룹 설정
AWS RDS DB를 사용할 때,
- TimeZone(시간)
- Character Set
- Max Connection
설정을 하게 되는데, 필수 설정이다.
Character set 같은 경우는 utf8과 같은 것을 설정해 준다고 생각하면 된다.
4-1. 파라미터 그룹 생성
- 파라미터 그룹을 적용할 db
- rds db를 생성할 때 선택한 버전을 따라가면 된다. (mysql 엔진버전)
- 그룹 이름
- {애플리케이션}dbparam을 사용
4-2 Time Zone 설정
- 파라미터에 검색을 해서 time_zone의 설정을 -> Asia/Seoul로 변경.
4-3 Character set
- chracter_set 검색 후 모든 항목(6) 개를 전부 utf8mb4 로 변경한다.
- * utf8mb4 : 이모티콘까지 지원하기에 최근 utf8 보다 많이 쓰인다.
4-4 Collation
- Collation 검색 후 나오는 2개 -> utfmb4_general_ci 로 설정!
- * 2개 항목 확인! -> collation_connection, collation_server
4-5 Max Connection
- 최대 Connection 수를 설정한다.
- - default로 DB 성능에 따른 값이 설정이 되어있다.
4-6 변경사항 저장 후 파라미터 그룹 변경(설정)
- RDS 정보 -> '수정' -> 추가구성 항목 이동
- DB 파라미터 그룹을 방금 설정한 그룹으로 변경
계속을 눌러 변경사항을 확인하고 즉시 적용을 선택하고, 인스턴스 수정을 완료한다.
5. EC2 연결
- application.properties 에서 DB Connection 정보를 RDS로 변경한다.
- clean build
- 로컬 실행 및 테스트
- ec2 서버 실행 및 테스트
을 진행해서 db가 오류 없이 진행된다면 연결이 완료되었다!
'Project > 협업프로젝트' 카테고리의 다른 글
[협업프로젝트] Jenkins와 Docker로 CI/CD pipeline 구축하기 (2) (2) | 2023.10.31 |
---|---|
[협업프로젝트] Jenkins와 Docker로 CI/CD pipeline 구축하기 (1) (0) | 2023.10.30 |
[협업프로젝트] SpringBoot 프로젝트 EC2 배포하기 (1) | 2023.10.29 |
[협업프로젝트] SwaggerUI + Spring RestDocs 로 API 문서화하기 (2) | 2023.10.14 |
[협업 프로젝트] Git Flow, 커밋 컨벤션, Issues 프로젝트 적용하기 (0) | 2023.10.02 |