![[AWS] Github Actions, CodeDeploy, Nginx 로 무중단 배포하기 - 3 [AWS] Github Actions, CodeDeploy, Nginx 로 무중단 배포하기 - 3](http://t1.daumcdn.net/tistory_admin/static/images/xBoxReplace_250.png)
총 4개의 시리즈 글로 진행될 것입니다.
3) EC2와 RDS (이번 글)
4) Nginx 설치와 배포 스크립트
▶ 전체 흐름도
우선 전반적인 흐름은 다음과 같습니다!
과정을 진행하면서 막힐 때, 다음 그림을 보면서 생각해보시면 어떤 부분에서 막히고 있는지 이해하기 쉬우실 거예요!
![[AWS] Github Actions, CodeDeploy, Nginx 로 무중단 배포하기 - 3 [AWS] Github Actions, CodeDeploy, Nginx 로 무중단 배포하기 - 3](http://t1.daumcdn.net/tistory_admin/static/images/xBoxReplace_250.png)
이번 시간에는 EC2 와 RDS 가 서로 연동이 되도록 하는 과정을 진행하겠습니다!
3. EC2와 RDS
1. DB Subnet Group 생성하기
지난 글에서 RDS는 Subnet Group 이 필요하다는 말을 했습니다.
Group이 필요한 이유는 2개의 private Subnet이 동일한 RDS를 각각 하나씩, 즉 DB 2중화 를 해서 가용성을 높이기 위해서 입니다.
다만 우리는 Group 까지 만들어 보고 설정은 하되, 실질적인 RDS 생성 단계에서는 단일 subet 하나만 사용할 예정입니다.
즉 우리는 2중화 까지는 하지 않을것 입니다. (RDS 요금이 2배로 드니까....)
DB 서브넷 그룹을 선택해 줍니다.
![[AWS] Github Actions, CodeDeploy, Nginx 로 무중단 배포하기 - 3 -
3. EC2와 RDS
- undefined - 1. DB Subnet Group 생성하기 [AWS] Github Actions, CodeDeploy, Nginx 로 무중단 배포하기 - 3 -
3. EC2와 RDS
- undefined - 1. DB Subnet Group 생성하기](http://t1.daumcdn.net/tistory_admin/static/images/xBoxReplace_250.png)
이후 설정을 다음과 같이 해줍니다.
![[AWS] Github Actions, CodeDeploy, Nginx 로 무중단 배포하기 - 3 -
3. EC2와 RDS
- undefined - 1. DB Subnet Group 생성하기 [AWS] Github Actions, CodeDeploy, Nginx 로 무중단 배포하기 - 3 -
3. EC2와 RDS
- undefined - 1. DB Subnet Group 생성하기](https://blog.kakaocdn.net/dn/uEO4k/btrDFJtd8Q3/09jfgLJX5MqJIYR4bbQIak/img.png)
지난 글에서 만든 Private Subnet 2개를 지정해주시면 됩니다.
(사실 지난 글에서 서브넷을 b 와 d AZ에 만들어 줬는데... b 와 c인 이유는.... 개인적인 이유로 다시 만들었기 때문입니다...
이전 글부터 읽어오시던 분들은 b 와 d 를 선택하시면 됩니다.)
생성 버튼을 누르면 Subnet Group이 생성됩니다.
2. RDS 보안그룹 생성하기
이번에는 인스턴스 단위의 방화벽에 해당되는 보안그룹을 설정해줘야 합니다.
VPC -> 보안 -> 보안그룹생성 을 누르면 다음과 같은 화면이 보입니다.
![[AWS] Github Actions, CodeDeploy, Nginx 로 무중단 배포하기 - 3 -
3. EC2와 RDS
- undefined - 2. RDS 보안그룹 생성하기 [AWS] Github Actions, CodeDeploy, Nginx 로 무중단 배포하기 - 3 -
3. EC2와 RDS
- undefined - 2. RDS 보안그룹 생성하기](https://blog.kakaocdn.net/dn/3MDDI/btrDBtkuBiE/2HtG498CnPMDKFBDUfzj1k/img.png)
지난 글에서 만든 EC2의 publig-sg 를 인바운드 규칙에 허용시켜주면 됩니다.
이 뜻은 RDS는 public-보안 그룹에서 오는 input을 받아들이겠다는 의미 입니다.
그 외의 지점으로부터 오는 접근은 모두 차단하게 됩니다.
이름은 그냥 db-sg-shine으로 만들었습니다. 다른 이름으로 변경하셔도 됩니다!
3. RDS 생성하기
드디어 RDS를 생성해 봅시다!
![[AWS] Github Actions, CodeDeploy, Nginx 로 무중단 배포하기 - 3 -
3. EC2와 RDS
- undefined - 3. RDS 생성하기 [AWS] Github Actions, CodeDeploy, Nginx 로 무중단 배포하기 - 3 -
3. EC2와 RDS
- undefined - 3. RDS 생성하기](https://blog.kakaocdn.net/dn/B4ypA/btrDHd8fhWo/8K90RyzVxrdUINTes98fA0/img.png)
생성 방식으로는 표준 생성을 선택하고, 엔진으로는 MySQL은 선택했습니다.
![[AWS] Github Actions, CodeDeploy, Nginx 로 무중단 배포하기 - 3 -
3. EC2와 RDS
- undefined - 3. RDS 생성하기 [AWS] Github Actions, CodeDeploy, Nginx 로 무중단 배포하기 - 3 -
3. EC2와 RDS
- undefined - 3. RDS 생성하기](https://blog.kakaocdn.net/dn/HjiQL/btrDIoVYPq7/rd7vDqtqr9hDKwZJDky3GK/img.png)
이게 사실 Oracle이나 MySql 과 같이 무료가 아닌 DB들은 시간당 요금이 조금더 비싸긴 한데... free tier 선에서 사용할것 이니 상관없습니다.
템플릿은 프리티어를 꼭 선택해주십쇼! 나머지는 요금이 더 발생할 수 있습니다.
![[AWS] Github Actions, CodeDeploy, Nginx 로 무중단 배포하기 - 3 -
3. EC2와 RDS
- undefined - 3. RDS 생성하기 [AWS] Github Actions, CodeDeploy, Nginx 로 무중단 배포하기 - 3 -
3. EC2와 RDS
- undefined - 3. RDS 생성하기](https://blog.kakaocdn.net/dn/bTzuxm/btrDEQTZYWU/fSpcjKQ98Y32ExUk61t1k1/img.png)
이후 데이터 베이스 설정을 진행합니다.
DB 이름을 설정해주고, DB의 마스터 이름과 비밀번호를 지정해 줍니다. (해당 마스터 이름과 비밀번호를 잘 기억해두십쇼!)
![[AWS] Github Actions, CodeDeploy, Nginx 로 무중단 배포하기 - 3 -
3. EC2와 RDS
- undefined - 3. RDS 생성하기 [AWS] Github Actions, CodeDeploy, Nginx 로 무중단 배포하기 - 3 -
3. EC2와 RDS
- undefined - 3. RDS 생성하기](https://blog.kakaocdn.net/dn/WvUcb/btrDGdAUYo4/Gv3ooSzkfO3dkNFQd2nGj1/img.png)
다음으로 인스턴스는 free tier 범주에 속하는 t2.micro를 선택해 주십쇼!
![[AWS] Github Actions, CodeDeploy, Nginx 로 무중단 배포하기 - 3 -
3. EC2와 RDS
- undefined - 3. RDS 생성하기 [AWS] Github Actions, CodeDeploy, Nginx 로 무중단 배포하기 - 3 -
3. EC2와 RDS
- undefined - 3. RDS 생성하기](https://blog.kakaocdn.net/dn/AQdJP/btrDGJzxOs3/vQy4GLfklQkZllNkDOSO5K/img.png)
주의 할점이 있는데 이게 기본으로 t3.micro로 맨 처음 선택되어 있기 때문에, 잘못 보면 t2.micro인줄 알고 지나쳐 요금이 발생하게 됩니다. 꼭 t2.micro를 선택하셔야 합니다! (아 물론 돈이 많으신분 말고...)
스토리지는 범용 SSD로 20Gib 를 할당하였습니다.
![[AWS] Github Actions, CodeDeploy, Nginx 로 무중단 배포하기 - 3 -
3. EC2와 RDS
- undefined - 3. RDS 생성하기 [AWS] Github Actions, CodeDeploy, Nginx 로 무중단 배포하기 - 3 -
3. EC2와 RDS
- undefined - 3. RDS 생성하기](https://blog.kakaocdn.net/dn/bagDN8/btrDGdno4oC/FJ4OGIf1F5srj9u8J8iBY1/img.png)
원래 우리는 Subnet Group 을 만들었기 때문에 다중 AZ 배포에서 "대기 인스턴스 생성"을 선택하면 DB 2중화가 진행됩니다.
하지만 이전에 말했듯 이러한 기능이 가능함을 소개해드리기 위해 Subnet Group을 만든것 이지, 우리는 사용하지는 않을 것 입니다.
저희는 그냥 다중 배포를 하지 않도록 하겠습니다.
이후 연결 부분에서 다음과 같이 설정을 진행해 줍니다.
서브넷 그룹은 지난번 글에서 만든 서브넷 그룹을 선택해주시면 됩니다.
![[AWS] Github Actions, CodeDeploy, Nginx 로 무중단 배포하기 - 3 -
3. EC2와 RDS
- undefined - 3. RDS 생성하기 [AWS] Github Actions, CodeDeploy, Nginx 로 무중단 배포하기 - 3 -
3. EC2와 RDS
- undefined - 3. RDS 생성하기](https://blog.kakaocdn.net/dn/bAqgul/btrDGcWhyZv/YB2K6N5BWH2IKztWakiVI0/img.png)
퍼블릭 엑세스는 꼭 아니요 를 선택해 주십쇼! 외부에서 우리의 RDS 에 접근할수 없도록 할것 입니다.
이후 보안 그룹은 직전 단락에서 만든 보안그룹을 선택해주시면 됩니다.
인증은 암호인증을 사용합시다.
![[AWS] Github Actions, CodeDeploy, Nginx 로 무중단 배포하기 - 3 -
3. EC2와 RDS
- undefined - 3. RDS 생성하기 [AWS] Github Actions, CodeDeploy, Nginx 로 무중단 배포하기 - 3 -
3. EC2와 RDS
- undefined - 3. RDS 생성하기](https://blog.kakaocdn.net/dn/eVHcjY/btrDGcIJwkw/w0hDkuHaiKK1qAS3HTcpHK/img.png)
이후 추가구성에서 백업 관련된 부분은 전부 해제 하시고, 유지 관리도 선택 해제 하시고 데이터베이스 생성을 누르시면 됩니다.
이후 다음과 같이 생성되는것을 확인하게 됩니다.
![[AWS] Github Actions, CodeDeploy, Nginx 로 무중단 배포하기 - 3 -
3. EC2와 RDS
- undefined - 3. RDS 생성하기 [AWS] Github Actions, CodeDeploy, Nginx 로 무중단 배포하기 - 3 -
3. EC2와 RDS
- undefined - 3. RDS 생성하기](https://blog.kakaocdn.net/dn/S39Rp/btrDEBitWo3/iDKt7Hkj1bw34HRBmEfkr1/img.png)
4. EC2에서 RDS에 접근하기
database-airbnb (저의 RDS 이름)을 클릭하여 상세 페이지로 이동하면 엔드포인트 확인이 가능합니다.
![[AWS] Github Actions, CodeDeploy, Nginx 로 무중단 배포하기 - 3 -
3. EC2와 RDS
- undefined - 4. EC2에서 RDS에 접근하기 [AWS] Github Actions, CodeDeploy, Nginx 로 무중단 배포하기 - 3 -
3. EC2와 RDS
- undefined - 4. EC2에서 RDS에 접근하기](https://blog.kakaocdn.net/dn/J7cOj/btrDF95SL4B/j4Q93FrOVSMHj70s6imlak/img.png)
이 엔드포인트를 통해 EC2에서 RDS 에 접근할수 있게 됩니다.
![[AWS] Github Actions, CodeDeploy, Nginx 로 무중단 배포하기 - 3 -
3. EC2와 RDS
- undefined - 4. EC2에서 RDS에 접근하기 [AWS] Github Actions, CodeDeploy, Nginx 로 무중단 배포하기 - 3 -
3. EC2와 RDS
- undefined - 4. EC2에서 RDS에 접근하기](https://blog.kakaocdn.net/dn/bN6EUE/btrDEo33GgM/9jS4iZc8ZETXnXzgRDKP1k/img.png)
5. SpringBoot에서 application.yml 수정하기
mysql 기준으로 RDS 와 연동하기 위해서, 더 나아가 DB 와 로컬에서라도 연동하려면 다음과 같은 SpringBoot의 설정이 필요합니다.
spring:
profiles:
active: local
datasource:
url: ${datasource}
driver-class-name: com.mysql.cj.jdbc.Driver
username: ${username}
password: ${password}
jpa:
hibernate:
ddl-auto: create
properties:
hibernate:
format_sql: true
database: mysql
logging.level:
org.hibernate.SQL: debug
com.airbnb: debug
datasource, username, password 같은 경우 환경변수로 받을 것 이라, 위와 같이 만들었습니다.
여기까지 EC2 에서 private subnet에 있는 RDS에 접근하는 방법에 대하여 알아보았습니다.
다음 글에서는 마지막으로 배포 스크립트를 작성하여 배포하는 과정에 대하여 알아봅시다!
'DevOps > AWS' 카테고리의 다른 글
[AWS] ECS를 통한 컨테이너 배포 with Docker hub (0) | 2022.10.09 |
---|---|
[AWS] Github Actions, CodeDeploy, Nginx 로 무중단 배포하기 - 4 (5) | 2022.06.02 |
[AWS] Github Actions, CodeDeploy, Nginx 로 무중단 배포하기 - 2 (9) | 2022.05.31 |
[AWS] Github Actions, CodeDeploy, Nginx 로 무중단 배포하기 - 1 (0) | 2022.05.31 |
[AWS] EC2에 SpringBoot 배포하기 (0) | 2022.03.20 |
댓글