CrowdFunding 아키텍쳐 구현(cloudwatch, autoScale) - Day 2

지정온·2023년 7월 20일
0

[DevOps]CrowdFunding

목록 보기
2/9
  1. fargate 서비스 cloudwatch연결
  2. autoscale 연결 확인 -> 부하 test로 확인
  3. fargate + rds연결 (확장성 고려)
    • autoscale group적용될 때 확장된 것과 db의 연결은?
    • w/r, read only로 나눌 수 있을까?
  4. loadbalance로 두개의 cluster를 다르게 접근하기 위해 route hosting은 어떻게?

1. fargate 와 cloudwatch

awslogs로 cloudwatch와 연결하여 간단한 로그를 확인 할 수 있다

awslogs 사용하는 방법
https://docs.aws.amazon.com/ko_kr/AmazonECS/latest/developerguide/using_awslogs.html




(+추가 container insights)

https://catalog.us-east-1.prod.workshops.aws/workshops/8c9036a7-7564-434c-b558-3588754e21f5/ko-KR/03-console/05-monitoring/01-insights
https://docs.aws.amazon.com/ko_kr/AmazonCloudWatch/latest/monitoring/Container-Insights-metrics-ECS.html


container insights를 사용하게 되면 다음과 같은 metric들을 확인 할 수 있다

ecs에서 서비스 생성시 서비스 연결이라는 항목이 있는데 처음에는 이것을 통해 모니터링 시스템과 연결할 수 있겠다고 생각을 했으나 검색을 통해 외부시스템과 연결하기 위한 방법임을 알게 됨
이보다는 Container insight가 더 올바른 tool이다 (비용에 주의!)

fatgate에 대한 모니터링 tool 확인

2. 오토스케일링과 부하테스트

  • 서비스 autoscale 클러스터내 서비스 증가 감소 => 우리에게 해당 되는 것!
  • 클러스터 autoscale 클러스터가 증가 감소

처음 서비스 생성시 autoscale의 지표를 cpu사용량으로 설정하고 부하테스트를 시도했으나 설정한 대상값만큼 사용량이 올라오지 못함

loadbalance를 붙인 상태여서 지표를 counter per target으로 설정가능

https://catalog.us-east-1.prod.workshops.aws/workshops/8c9036a7-7564-434c-b558-3588754e21f5/ko-KR/03-console/07-autoscale/01-service/loadtest

cloud9을 통해 쉽게 서비스 부하테스트 가능!

1) 부하테스트 시작

2) 경보상태

3) task 생성

4) task 생성 이벤트 로그

5) 테스트 종료

6) 종료 후 task 줄어드는 log 확인(오랜기간이 지난후에 확인 가능)

fargate autoscale, 부하test 확인

3. fargate rds 연결


위의 고민 끝에 아래와 같은 결과물을 만들어보자고 생각!

각각의 작업정의 3개를 만들고(코드를 작성할 때 쯤에 굳이 3개로 만들어야하나, 2개를 만들고 funding task 하나를 두개의 서비스로만 쪼개고 대상그룹으로만 나누면 되었겠다 라는 생각)
서비스화 시켜주고 왼(/funding), 오(/payment)하고 /funding은 r/w, r로 나누고 rds를 생성해서 replica를 나누고 연결을 시켜주면 되겠다 라고 생각!

fargate와 rds 구조 구상 완료

4. loadbalance route hosting 방법

문제 1) 기존에 생성되어있는 로드밸런서에 붙이려고 하면 문제가 생김

각각의 서비스마다 고유의 로드밸런서로 생성해보기 -> 잘 됨!

로드밸런스 쪽이 문제라고 생각해서 로드밸런스 부분을 확인한 결과 target에 관한 rule 설정이 잘 못 되어진걸 확인!

로드밸런서를 생성할 때 이미 만들어져있는 rule에 들어가면 routing이 안되어서 rule을 다음과 같이 수정해야 찾아갈 수있게 만들 수 있음

get 요청이 오면 funding과 funding_rw로 반반으로 나누어져서 들어감


문제 2) 코드상 라우팅을 `/` 이렇게 해주어도 rule을 `/funding` 이런식으로해 주면 그렇게 찾아갈 거라고 생각을 했지만

이렇게 작성을 해주어야 다음과 같은 결과가 나온다

로드밸런서 타겟그룹과 rule을 통해 route hosting

추후 예정

부하테스트 로깅 !
서버가 오토스케일링의 상황이 될 때 로깅 !

참고

모니터링
http://ecs.catsdogs.kr.s3-website.ap-northeast-2.amazonaws.com/ko/5.-monitoring/

autoScale, 부하테스트
http://ecs.catsdogs.kr.s3-website.ap-northeast-2.amazonaws.com/ko/7.-autoscale/

로드밸런서 route hosting
https://catalog.us-east-1.prod.workshops.aws/workshops/8c9036a7-7564-434c-b558-3588754e21f5/ko-KR/03-console/04-ecs/03-service/cats

profile
가보쟈고

1개의 댓글

comment-user-thumbnail
2023년 7월 20일

잘 봤습니다. 좋은 글 감사합니다.

답글 달기