어렴풋이는 알고 있었지만 정확하게 어떤 과정을 거쳐 VM이 띄워지게 되는지 모르고 있었다.이번 기회에 정리하여 정확하게 이해한 것들로 머리에 넣어보자.1. 사용자 요청일단 첫 단계로 사용자가 FE를 통해서 혹은 OpenStack CLI를 통해 VM 생성을 요청하게 된다. (openstack server create 등)이때 여러 옵션들을 입력하겠지만 지금은 여기에 집중하진 않겠다.2. 스케줄링nova-scheduler가 어느 하이퍼바이저(compute node)에 이 VM을 띄울지 선택한다.3. VM 생성선택된 compute node의 nova-compute가 Libvirt 드라이버를 통해 가상머신 정의 xml을 구성하고 libvirt에 전달한다.이 xml은 QEMU/KVM에서 VM 생성시에 사용된다.4..
1. 문제OpenStack Nova에서 인스턴스 빌드 시 DB에 instance_system_metadata 값 저장 단계에서 오류 발생원인 : boot_roles 값이 컬럼 최대 길이(255자)를 초과하여 DB 저장 실패이로 인해 인스턴스 빌드가 중단되어 인스턴스 생성에 실패함2. 원인 분석instance_system_metadata : 인스턴스의 부팅/운영에 직접 사용되는 값은 아니며, Nova가 내부적으로 인스턴스 상태를 보존하기 위해 사용하는 key-value 저장소boot_roles : 인스턴스를 생성한 유저의 Keystone roles이 저장됨CloudKitty 서비스가 추가로 rating role을 부여하면서, role 문자열이 길어져 VARCHAR(255) 제한을 초과하게 됨커뮤니티에서도 ..
시스템을 구축하면서 만났던 이슈들을 적어보기로 했다. 물론 훨씬 많은데 개인 노션에 정리해두었던것들부터 정리해보자 컨테이너 메모리 부족 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..
1, 2, 3, 4편에서 인프라 구축, 로깅 / 모니터링 / 경보 시스템 구축, CI/CD 구축을 직접 해보았다면 이번 글에서는 테라폼으로 이것들을 수행할 수 있는 내용을 작성해보겠다. 원래는 인프라 구축을 AWS 내에서만 진행했기 때문에 AWS CloudFormation 으로 진행했었는데 다양한 프로바이더의 확장성을 고려하여 Terraform 으로 교체하게 되었다. 인프라 구축 terraform-aws-modules 사용하여 코드 작성 https://registry.terraform.io/namespaces/terraform-aws-modules terraform-aws-modules 이 없는 모듈은 직접 resource 와 module 만들어서 사용 Terraform Registry registry...
앞의 글에서 인프라 구축, 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 ..
Grafana를 Terraform 으로 프로비저닝하기 전에 UI 에서 직접 설정을 해보자 1️⃣ Data Source 2️⃣ Dashboard 로그를 전부 보여주는 Dashboard Error 로그의 count 를 보여주는 Dashboard (Alert 만들기용) 3️⃣ Alert Alert Rules Contact Points 슬랙으로 경보를 쏴주어야 하기에 Slack Contact Point 를 만들어준다. 경보를 보낼 내용의 템플릿을 생성할 수 있다. {{ define "Alert Instance Template" }} 에러 메시지 : {{ .Labels.log }} {{ end }} Notification Policies Label 을 필터링하여 contact point 를 설정한다. defaul..
프로세스 1️⃣ 이미지 준비 API Server Dockerfile 을 통해 API Server 이미지를 생성하여 ECR 에 올려서 준비하기 (추후 CI/CD 를 통해 자동화됨) Grafana 프로비저닝이 필요하다면 아키텍처에 맞는 grafana / loki 이미지를 pull 받아 프로비저닝된 이미지로 생성하여 ECR 에 올려서 준비하기 이 프로젝트에서는 기본 이미지를 사용한 후 나중에 Terraform 으로 프로비저닝 해줄 예정이기에 ECR 에 올리는거 생략하고 기본 Grafana 이미지를 준비한다. Loki 프로비저닝이 필요하여 아래의 config 파일과 Dockerfile 로 이미지 생성하여 ECR 에 올려서 준비하기 더보기 auth_enabled: false server: http_listen_p..
ECS 환경에서 구축할 시스템의 기술을 선택하는데 있어서 여러가지 선택지가 있었다. 1️⃣ AWS CloudWatch Logs AWS에서 제공하는 로그 데이터 수집 및 관리 서비스 AWS 리소스 및 애플리케이션에서 생성되는 로그 데이터를 쉽게 수집, 저장, 모니터링하고 필요한 경우 검색 가능 장점 AWS의 관리형 로깅 서비스로 무료로 제공 ECS EC2 환경과 더 쉽게 통합 가능 로그 데이터 수집, 저장, 간단한 검색 및 분석이 가능 단점 고급 로그 분석 기능이 부족할 수 있음 가격은 사용량에 따라 다르며, 로그 데이터의 용량과 보존 기간에 따라 비용이 발생 2️⃣ ELK / EFK 장점 무료로 구축 가능 (오픈소스) 데이터 시각화 및 대시보드 생성됨 단점 구축 및 운영이 복잡하여 구축 및 운영 비용 발..
- Total
- Today
- Yesterday
- ECS
- Hook
- Workflow
- github action
- 리액트
- react
- SG
- subnet
- ecr
- AWS
- CSS
- js
- Grafana
- 서버
- 인프라
- 로깅
- springboot
- LOKI
- ci/cd
- Service
- 모니터링
- Docker
- javascript
- RDS
- redux
- ALB
- html
- VPC
- EC2
- Grafana Alert
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |