ddps-lab / architect-cloud

Kubernetes , AWS Serveless
6 stars 4 forks source link

2.CloudArchitectHighAvailability 에서 나오는 실습 최신화 #35

Open red0sena opened 4 months ago

red0sena commented 4 months ago

ALB, AutoScaling, 로드 테스트, CloudFormation 실습 업데이트

ALB, AutoScaling, 로드 테스트는 제가 진행한 모놀리식 오토스케일링으로 수정하면 될 것 같습니다. 해당 링크: https://mighty-almanac-36a.notion.site/39afb6a0499641779886781ac089c6dd?pvs=4

CloudFormation은 커피 공급업체 리스팅 시나리오에서 사용하긴 하는데 클라우드 포메이션을 사용하면 이렇게 편하다! 정도로 실습하면 어떨까 싶습니다.

kmu-leeky commented 4 months ago

CF 는 기본 실습은 지금 있는걸 유지해도 괜찮을것 같은데.. 리스팅 시나리오 에서는 어떻게 적용이 되는지 모르겠네. 최소한 한번은 VPC 설정부터 ASG 설정까지 모두 다 수동을 해보면 좋겠다.

kh3654po commented 4 months ago

현재까지 진행상황입니다. 양이 많아 노션으로 공유드립니다. https://www.notion.so/slide2-503a8c4cee9b4e428c6e62a7030272d2?pvs=4

kmu-leeky commented 4 months ago

노션 링크는 접속 불가. userdata 관련 문제는 처음보는 문제인데. 크게 이슈가 될 부분이 아닌것 같은데. 오늘 만나서 이야기해보자.

kh3654po commented 4 months ago

넵 userdata는 간단한 문제라 환경변수 설정만 해결하면 바로 자료만드는데 문제가 없을거같습니다. 링크를 다시 달겠습니다. https://purple-society-3a6.notion.site/slide2-503a8c4cee9b4e428c6e62a7030272d2?pvs=4

kh3654po commented 4 months ago

금방 해결해서 커피 웹페이지에 접속이 되는 것을 확인했습니다.

image

이대로 ami 생성하고 로드밸런서 및 오토스케일링 실습 진행하겠습니다.

kh3654po commented 4 months ago

@mumat0103 로드밸런서 실습의 경우 웹서버를 프라이빗 서브넷에 생성하고 퍼블릭 ip를 할당하지 않기 때문에 웹에 접근시 에러가 나옵니다. 해당 메타데이터 처리를 https://github.com/ddps-lab/architect-cloud/blob/master/2024/monolithic_code/index.js 에서 하는거 같은데 에러처리를 하여 에러발생시 공백으로 출력되도록 수정해주실수 있나요?

image
mumat0103 commented 4 months ago

41 새로 PR 생성하였습니다. 풀 받아서 확인해보시고 추가 수정사항 있으면 말씀해주세요.

kmu-leeky commented 4 months ago

이게 굳이 에러 처리가 필요할까? 우리가 완전한 서비스를 개발하는게 아니고 " 웹서버를 프라이빗 서브넷에 생성하고 퍼블릭 ip를 할당하지 않기 때문에 웹에 접근시 에러가 나옵니다." --> 이건 NAT Gateway 를 통해서 접근을 하면 문제가 없어야 할것 같은데. 석현이가 어떤 상황인지 조금 더 정리를 해줄래?

이건 서버의 설정을 바꿔야지, 앱에서 에러 처리할 문제는 아닌것 같아.

kh3654po commented 4 months ago

alb 및 오토스케일링 실습에서 웹서버 ami를 private 서브넷에 public ip를 할당하지 않고 생성하는데 웹페이지에서 인스턴스의 public ip를 get하려고 해서 생기는 에러입니다. 인스턴스 자체의 퍼블릭 ip 주소가 없기에 생기는 문제로 파악했습니다. 메타데이터 정보는 http://169.254.169.254/latest/meta-data/public-ipv4 url을 통해 얻을 수 있는데 이는 NAT 게이트웨이를 통과하지 않는 내부 요청이기에 NAT 게이트웨이를 통해서 접근하지 않습니다.

그래서 로드밸런서 및 오토스케일링 실습을 진행하기위해 퍼블릭 ip가 없을 경우 로컬 ip를 출력하도록 수정요청을 했습니다. 혹시 제가 잘못알고 있는게 있을까요?

kmu-leeky commented 4 months ago

public ip 는 메타데이터에서 확인해오는게 아닐텐데? 외부서비스에 요청을 해서 해당 서버가 외부로 라우팅 될때 사용하는 ip, 해당 ip 의 지역 정보등를 얻어와서 보여주는 식이야. 석현이 비롯해서 다들 이 부분을 파악하고 있는지 확인해줘.

mumat0103 commented 4 months ago

퍼블릭 아이피 받아오는 Api가 요청 횟수 제한 에러가 떠서 메타데이터에서 받아오는 방식으로 변경했습니다. 다른 api가 있는지 확인 후 사용가능하면 변경하도록 하겠습니다.

kmu-leeky commented 4 months ago

외부 서비스에서 블락 당했다는 거지? 그렇다면 위치정보도 얻어올수 없고 실습 내용이 제한되겠다. 앞으로 이런 상황이 생기면 공유 해서 함께 해결하도록 하자. 비슷한 서비스들이 많이 있을테니 찾아보자.

mumat0103 commented 4 months ago

로드밸런서를 사용해서 인스턴스에 접근할 때, health check 로 인해서 api가 블락 당하는 상황입니다. 최대한 빨리 고쳐보겠습니다.

저번에 NAT gateway 아이피가 보였을 때는 health check로 인해 블락 당하기 전에 접근해서 가능했던 것으로 예상됩니다.

스크린샷 2024-04-29 17 50 01
mumat0103 commented 4 months ago
스크린샷 2024-04-29 18 06 51

예상대로 api 서버측에서 요청을 차단했습니다. 해결 방안 강구해보겠습니다.

kmu-leeky commented 4 months ago

아 healthcheck 요청이 올때마다 페이지 로드가 일어나고, 그때마다 해당 api 로 요청이 생겨서 그렇구나. 전에는 이런 제약이 없었던것 같은데, 새롭게 생긴것 같다. 페이지가 로드 될때마다 요청이 매번 외부로 나가는걸 방지해야 하려나. 버튼 같은걸 만들어서 해당 버튼을 클릭하면 해당 버튼 클릭시에만 요청이 보내지고, 해당 필드를 업데이트 하게끔 할수는 있을것 같은데.. 코드 수정은 조금 필요할것 같네. 다른 방법이 있을런지도 고민해보자.

kh3654po commented 4 months ago

2번 슬라이드의 피드백을 받아 수정완료했습니다. 전체 슬라이드의 최신화를 완료했고 처음부터 진행하며 실습이 잘되는것을 확인했습니다.

kmu-leeky commented 4 months ago

응 석현아 수고했다. 내용이 많이 다듬어 졌네. 한가지 걸리는건 scale-out 을 하는 시나리오가 슬라이드에 준비해준 화면으로는 효과가 눈에 띄지는 않는것 같아. cpu 점유율의 변화가 노드 추가 후 눈에 띄지 않고? 이건 요청수가 계속 늘어나서 그런건가? 그런 관점에서 locust 에서 입력하는 값들의 의미를 조금 자세히 설명할 필요가 있겠다. 1번 슬라이드에서 사용한다면 1번에서 추가하는것도 필요할듯. auto scaling 하는 시나리오를 조금 더 고민해보자.

kh3654po commented 4 months ago

cpu 점유율 대신 로드밸런서의 요청수에 따라 스케일링하도록 시나리오를 변경했습니다. 로드밸런서의 요청수를 CloudWatch로 모니터링하며 스케일 아웃/인을 확인하였습니다. 스케일 인되는데는 20분이상이 소요되었습니다. 피드백 주시면 수정하겠습니다.

kmu-leeky commented 4 months ago

요청 처리 시간 및 요청 갯수 가 증가하다가 scale-out 후 감소하고 정상화 되는걸 보는게 중요할것 같아. 지금 이야기한대로 그냥 요청수에 따라서 하는걸로 바꾼다고 해서 효과적으로 보일지 안보일지는 석현이가 판단을 해야 할것 같아. 효과적일지 아닐지를 봐야하는거니까.

kmu-leeky commented 4 months ago

locust 메트릭혹은 화면이라도 캡쳐해서 보여주면 코멘트 줄수 있을듯.

kh3654po commented 4 months ago

요청 처리시간이 증가하다가 감소하는 화면을 보여주는 슬라이드를 추가했습니다. 197번 슬라이드입니다.