안녕하세요.
오늘은 RDS와 EC2를 연동해보도록 하겠습니다.
RDS와 EC2를 연동하는 목적은 서버 인스턴스와 DB 인스턴스를 분리하여 사용하기 위한 목적으로
AWS를 사용하는 핵심 이유이기도 할 것입니다.
우리가 웹서버를 운용할때 DB를 운영하는 방법은 두가지가 있습니다.
첫번째, 서버 내에 DB를 설치하는 경우
서버 내에 DB를 설치하여 운영하는 방식은 초보자도 쉽게 관리할 수 있다는 장점이 있으며
AWS를 사용하는 경우 비용도 저렴하다는 장점이 있습니다.
허나 단점은 고가용성 있는 서버를 구축하기가 어렵다는 것입니다.
이에 대한 예시는 분리하여 사용하는 경우를 보면 더욱 이해하기 쉬울 것입니다.
서버와 DB를 분리하는 방식, 즉 RDS와 EC2를 연결하는 방식을 사용하며 위의 이미지처럼
하나의 서버가 고장이 나도 즉시 다른 서버를 새로 추가하여 교체할 수가 있습니다 .
서버에 DB가 설치 되지 않았기 때문에 DB의 정보가 손상될 일이 전혀 없습니다.
RDS와 EC2를 연동하여 사용할때 서버가 어떻게 구축되는지 더욱 자세히 알아보겠습니다.
위의 그림처럼 로드밸런서 그리고 서버(EC2), DB(RDS) 가 구축이 됩니다.
사용자가 웹사이트를 통해 요청을 보내면 로드밸런서는 사용자들의 접속을 여러 서버에 나눠서 분산을 시킵니다.
하지만 사용을 하다보면 서버에 메모리가 꽉차거나 서버가 제대로 동작 하지 않는 경우가 생깁니다.
이때에는 서버를 재시작하거나 작동이 제대로 되지 않는다면 서버를 삭제시키고 새로운 서버를 추가해야합니다.
서버 안에 DB가 설치되어있지 않기 때문에 가능한 구조입니다.
많은 IT 업체들이 클라우드 서비스로 전환하는데에는 바로 이러한 큰 장점이 있습니다.
접속자의 수에 따라 서버를 자유롭게 늘리고 줄일수 있고 이 과정에서 DB에 손상이 일어나지 않기때문에
독립적으로 관리 할 수 있다는 큰 장점이 있습니다.
짧게 말했지만 위의 장점은 웹서비스를 관리하는 관리자나 개발자 입장에서는 엄청난 장점입니다.
또한 웹서비스를 통해 수익을 내는 회사의 대표 입장에서도 나의 웹서비스가 끊기지 않고
지속적으로 사용자들에게 서비스를 제공할 수 있다는 것은 나의 비즈니스 손실과 서버관리 비용을 줄여준다는
큰 장점이 있어 많은 사람들이 위와 같은 방식으로 서버를 구축합니다.
로드밸런서, ec2, RDS 이 세가지를 연동한다면 위의 이미지와 같은 서버를 쉽게 구축할 수 있죠.
여기에 람다식을 추가한다면 웹서비스를 운용하며 일어날 수 있는 변수에 대해 자동으로 대응하게 할 수 있습니다.
자 그렇다면 이제 RDS와 EC2를 연동하겠습니다 .
연동과정은 대략 이러합니다.
- 연동할 EC2 정보 파악
- DB 보안그룹 생성
- DB 서브넷 그룹 생성
- 파라미터 그룹 생성
- DB생성
- EC2로 원격 접속
- 파라미터 추가작업
- 연동할 EC2 정보 파악
우리가 사용해야할 ec2, 보안그룹, 서브넷그룹, rds를 모두 같은 네트워크 안에서 사용되야 하므로
ec2에서 사용하고 있는 vpc와 서브넷ID를 파악합니다.
빨간색 동그라미 친 부분이 중요합니다.
vpc, subnet, 보안그룹을 각각 메모장에 적어두세요.
앞으로 진행할 과정에 이름을 알고 있어야합니다.
- DB 보안그룹 생성
자 그런 다음에는, RDS DB에서 사용할 DB 보안 그룹을 생성하겠습니다.
[EC2]에서 왼쪽 메뉴바의 [네트워크 및 보안]의 [보안그룹]을 선택해서 보안 그룹 생성을 눌러주세요.
그런 다음 위와같이 이름을 지정하고 vpc는 EC2에서 사용하고 있는 vpc로 선택해주세요.
좀전에 메모장에 적어둔 vpc이름과 똑같은걸 선택하면 됩니다.
그런 인바운드 규칙에서 MYSQL을 사용할 것이니 MYSQL 선택하고 포트는 3306을 선택하고
소스는 EC2에서 사용하고 있는 보안그룹 이름과 같은걸 선택해주세요.
- DB 서브넷 그룹 생성
[RDS]에서 [서브넷 그룹] 메뉴를 선택하고 DB서브넷 그룹 생성 버튼을 눌러주세요.
서브넷 그룹 이름을 생성하고 vpc를 이번에도 마찬가지로 ec2에서 사용하고 있는 vpc 로 선택해주세요.
그런 다음 여기에 속해있는 서브넷을 모두 추가해주세요.
ec2 가용영역에 있는 모든 서브넷을 추가하는것 입니다.
- 파라미터 그룹 생성
자 이제 파라미터 그룹만 생성하면 준비단계는 완료입니다.
파라미터 그룹을 생성하는 이유는 한글 사용을 가능하게 하기 위함과 DB의 시간을 한국 시간으로 설정하기 위함입니다.
위와 같이 설정하여 파라미터 그룹을 만들면
이렇게 korean-parameter 가 생성됨을 확인할 수 있습니다.
자 생성이 되었다면 이제 편집을 하겠습니다.
방금 생성된 파라미터 그룹을 누르고 파라미터 그룹 작업의 편집을 누르고 들어오세요.
그런다음 char을 검색하고 모든 값을 utf8으로 바꿔주세요.(boolean타입은 안바꿔도 됩니다.)
그런다음 collation을 검색하고 이번에는 나와 있는 모든 값을 utf8_general_ci로 바꾸세요.
이제 DB 시간설정을 하겠습니다.
이번에는 zone 이라고 검색하고 time_zone을 Asia/Seoul로 바꿔주세요.
저장을 했다면 이제 준비는 모두 끝이 났습니다.
- DB생성
[RDS]에서 [데이터베이스] 메뉴를 선택하고 아래 그림의 설정을 잘 따라와주세요.
vpc는 ec2와 같은 보안그룹 subnet 그룹은 이전에 만든 서브넷그룹으로 vpc보안그룹도 이전에 만든 보안그룹으로
선택해주세요.
자 이제 이렇게 설정하고 생성하기 누르면 완성입니다.
- EC2로 원격 접속
위와 같이 db가 생성됨을 확인했다면 db로 들어가서 엔드포인트를 확인하고 복사합니다 .
mysql -u admin -p --host mydatabase.cppobulgbd5h.ap-northeast-2.rds.amazonaws.com
위의 코드로 ec2 서버의 터미널에서 접속할 수 있습니다.
이제 본인의 db를 복원하여 사용하시면 됩니다.
참고로 자신의 어플리케이션과 연결시킬려면
mysql 접속 경로를 mydatabase.cppobulgbd5h.ap-northeast-2.rds.amazonaws.com로 바꿔주면 되겠죠.
예를 들어 서버에서 db를 다운받아 사용한 경우시라면 localhost 부분을 위의 엔드포인트로 바꿔주면 됩니다 .
- 파라미터 추가작업
이전에 파라미터를 설정했지만 여전히 설정 안되 부분이 있을 것입니다.
mysql에 접속한 상태에서
show variables like 'c%';
라고 입력해보면 여전히 utf8 또는 utf8_general_ci 로 설정 되지 않은 부분이 있을 것입니다.
alter database [DB이름] character set = 'utf8' collate='utf8_general_ci';
위의 코드를 입력하여 나의 db의 characet set을 안 바뀐 부분 까지 한번 더 바꿔줍니다.
'AWS' 카테고리의 다른 글
다중서버에서 세션 관리(Redis 세션 클러스터링, Sticky Session) (0) | 2021.07.24 |
---|---|
스프링부트 aws ec2 리눅스 서버에 배포하기 (0) | 2021.05.23 |
[AWS]EC2 인스턴스 재부팅시 자바 + 톰캣의 메모리 초기화 이유 (0) | 2021.02.01 |
ec2 리눅스 서버에 jconsole과 visualVM 원격접속 [2] (use jconsole and visualVM to remote connect ec2 linux server) (0) | 2021.01.22 |
ec2 리눅스 서버에 jconsole과 visualVM 원격접속 [1] (use jconsole and visualVM to remote connect ec2 linux server) (0) | 2021.01.19 |