시스템을 구축하면서 만났던 이슈들을 적어보기로 했다. 물론 훨씬 많은데 개인 노션에 정리해두었던것들부터 정리해보자 컨테이너 메모리 부족 Issue : 컨테이너 배포시에 메모리 부족으로 배포가 안되는 문제 service (서비스 이름) was unable to place a task because no container instance met all of its requirements. The closest matching container-instance (컨테이너 인스턴스 아이디) has insufficient memory available. For more information, see the Troubleshooting section of the Amazon ECS Developer Guide. P..
앞의 글에서 인프라 구축, Grafana 설정까지 완료하였으니 CI/CD 구축을 해보자 이전에는 Github Actions 를 사용했었는데 비용 문제 등으로 인해 AWS CodePipeline 으로 넘어갔다. 추후 Terraform 코드로 작성할테지만 UI 로 설정해보자 Pipeline 은 Github Actions의 Job 처럼 생성하는 사람 마음대로 구성할 수 있다. Source -> Build -> Deploy 순으로 실행되도록 파이프라인을 구성했다. 0️⃣ CodePipeline 1️⃣ Source Github 의 특정 Repository 의 branch 와 연결하는 단계이다. 해당 Repository 에 특정 branch 에 commit/push 되면 트리거가 걸려 이 Code Pipeline ..
그동안 Docker를 로컬/ec2 인스턴스에서 적용해본다거나 Docker Compose를 로컬에서 띄워본다거나 동시에 3개의 app을 클러스터링 해본다거나 등등은 해보았으나 CI/CD까지 구성해보진 못했었다. 이번 글에서는 test용 인스턴스 생성 -> test용 repository 생성 + NestJS 코드 import -> Dockerizing (Dockerfile 만들기) + 이미지 생성 -> CI/CD 구성하여 인스턴스에 자동 배포 순서로 해보려고 하고, github repo, github action, ec2 instance, ECR, NestJS 등등을 사용한다. test용 인스턴스 생성 test용 repository 생성 + NestJS 코드 import 내 팀 깃허브에 레포를 하나 만들었다..
이후 docker-image.yaml 코드를 작성하면서 발생한 오류들을 차근차근 살펴보자. 바보같은 오류도 있었지만 하나하나 리뷰하려고 한다. 1. import worker-gridge code 과정에서 missing Dockerfile 에러메시지 : ERROR: failed to solve: rpc error: code = Unknown desc = failed to solve with frontend dockerfile.v0: failed to read dockerfile: open /var/lib/docker/tmp/buildkit-mount2011953406/Dockerfile: no such file or directory 문제 : Dockerfile을 로컬에서만 만들고 git에는 안올렸었다. ..
13번의 시도 동안 어떤 에러였는지 어떻게 해결했는지 써보겠다! 1. dory-test 대상 : AWS::EC2::EIPAssociation 에러 메시지 : The networkInterface ID 'eni-0b76d551207121168' does not exist (Service: AmazonEC2; Status Code: 400; Error Code: InvalidNetworkInterfaceID.NotFound; Request ID: 5ec40d3a-ccb6-42ce-a75c-f3049cfdd437; Proxy: null) 문제 : networkInterfaceId를 입력하는데 networkInterface는 EIP가 생성되고 나서 나오기때문에 지정하는 것이 불가능함 솔루션 : networkIn..
AWS의 관계형 데이터베이스인 Amazon RDS를 통해 관계형 데이터베이스를 생성해보자. DB 구성 과정에서 필요한 두가지의 항목을 먼저 준비해야 한다. 1. 데이터베이스 인스턴스의 인바운드, 아웃바운드 규칙을 제어하는 Security Group 2. 데이터베이스의 위치를 제어하게 될 Subnet Group 데이터베이스 인스턴스의 인바운드, 아웃바운드 규칙을 제어하는 Security Group 생성하기 RDS를 생성하는 과정에서도 SG를 만들 수 있지만 SG의 소스가 나의 IP로 자동 지정 되어서 SG 메뉴로 다시 돌아가 소스의 IP 대역을 다시 수정하는 번거로움이 있기 때문에 미리 RDS에서 사용하기 위한 SG를 만든다. VPC > SG > Create SG VPC는 내가 RDS를 만들 VPC 선택한..
Amazon RDS를 사용하여 MySQL 데이터베이스를 복수의 가용영역(AZ)에 이중화로 구성하고 Linux 기반의 가상 서버와 MySQL 데이터베이스를 연결해보자 RDS가 복수의 가용영역에 구성되게 되면 한 데이터베이스는 Master로, 한 RDS는 Standby로 구성되며, Master의 데이터베이스에 장애가 생기면 자동으로 Standby되어있는 데이터베이스로 대체되어 서로의 역할이 바뀌게 된다. 읽기 전용(Read Replica) 데이터베이스는 실시간으로 Master 데이터베이스와 싱크를 맞추며 변경사항을 업데이트 한다. 1. Amazon RDS를 통한 MySQL 데이터베이스 이중화(Multi-AZ) 구성 RDS용 SG 생성 Subnet Group 생성 복수의 AZ에 DB 생성 DB 엔진 DB 인스..
Auto Scaling 구성에 필요한 3가지 항목들을 먼저 준비해보자 1. 현재 Private subnet의 웹서버에 대한 Custom AMI 2. EC2 인스턴스를 미리 설정한 값에 따라 생성할수 있게 해주는 Launch Template 3. Auto Scaling에서 사용할 Application Load Balancer private-ec2-a1의 Custom AMI를 생성해보자 Custom AMI로 Launch Template을 만들어 보자 AWS에서는 미리 설정한 구성 값에 따라서 인스턴스를 생성할 수 있게 해주는 기능으로 Launch Configuration, Launch Template 두가지를 제공하고 있다. 이 두가지는 비슷하긴 한데 Launch Template이 더 상세하고 유연한 설정을..
- Total
- Today
- Yesterday
- 인프라
- subnet
- javascript
- 서버
- react
- Service
- VPC
- github action
- Workflow
- 로깅
- AWS
- Docker
- LOKI
- redux
- 모니터링
- ecr
- SG
- RDS
- html
- js
- ci/cd
- 리액트
- ECS
- Grafana Alert
- springboot
- Hook
- ALB
- CSS
- Grafana
- EC2
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |