코드스테이츠_Devops_4기/section2) 클라우드 서비스 운영

Section2 실습과제 Day 2

불여우의 길 2023. 5. 1. 00:26

우리팀을 힘들게 했던 Day2...

이정도면 실습 로그보기 대잔치 똥꼬쇼라고 할 수 있겠어요...

로그 많이 보고 해결했으니.. 다행..?

 

암튼 주말동안 끝낸 day2 정리 시작합니다..


Day 2

  • WAS 및 mongoDB 이미지를 ECS를 통해 배포해야 합니다.
  • WAS 이미지의 배포 자동화를 구현해야 합니다.
  • WAS와 연결된 로드 밸런서에 HTTPS를 적용해야 합니다.

 


 

마일스톤4

  • ECS의 클러스터, 태스크 정의, 태스크, 서비스에 대한 개념을 이해합니다.
  • ECR에 저장된 웹 서버 이미지를 ECS로 배포해 봅니다.
  • ECS 태스크의 로그를 읽어봅니다.
  • 로드 밸런서와 ECS 서비스를 연결해 봅니다.

일단 워크플로우에 aws.yml을 만들어따.

 

(결과적으로 우리는 서비스 배포까지 마일스톤 4에서 만들고 나서 시작했는데 알고보니 5에서 하는거 였음...

암튼 돌고돌아 완성하느라 개고생했지만.. 그래도 뭐,, 지금 보면 좋은 결과라고 생각한다...ㅎㅎ)

트러블슈팅 1. 새 태스크 정의를 위한 json 파일 작성

새 태스크 정의 개정을 만들기 위해서는 json 파일이 필요했다

새정의 만들기? 에서 긁어서 파일로 저장완.

 

새 태스크정의는 만들기 쉬웠는데 서비스 배포가 좀 어려웠다.

어찌저찌 이것저것 yml 파일도 수정해보고.. 로그도 진짜 다 까보고.. 근데 문제는 이전 과제에서 mongodb 파일을 만든게 문제였다. 파일 백업해두고 배포하니 성공~

 

9번째 개정에서 성공...ㅎㄷㄷ

 

마일스톤5

 

  • 웹 서버 이미지의 새 버전이 준비되었을 때, 새로운 작업 정의와 서비스를 만들고, 새 버전이 배포되도록 해야 합니다.
  • 고의적으로 애플리케이션이 정상적으로 실행되지 못하게 만들어서, 배포가 실패하는 것을 로그를 통해 확인할 수 있어야 합니다.

 

로컬에서 was 도커 컨테이너와 mongodb 컨테이너를 연결해주는 부분이 젤 오래걸렸다.

나의 소중한 토욜 10시부터 7시를 묶어둔 주범이라고 할 수 있겠당.

 

트러블슈팅 2. mongoserverselectionError

스크린샷을 안떠놔서.. 경서님의 맥 캡쳐로..ㅎㅎ

 

주말 내내 본 mongoserverselectionError

 

was 서버가 몽고디비에 연결할때 해당하는 호스트네임으로 연결하지 못한 것..

이 오류 잡으려고 온갖 포스팅 다 뒤진것같다.

노드 버전 바꾸라는 사람도 있고..

 

그래서 시도한 호스트네임

 

1. localhost:21017

2. 127.0.0.1:21017

3. 0.0.0.0:2107

 

다아아아아 안된다.

 

뭐 찾아보니 몽고디비는 디폴트로 외부접속을 차단한다? 라는 말이 있어서 구글링해보니

도커 서버 내 mongodb-27017.sock를 지우던지 권한을 주던지 하란다..

근데 몽고디비 인터페이스 접근이 불가능? 하게 될 수 있다고 ? 했나.. 그래서..

컨테이너니까 괜찮아~!~! 하고 권한을 바꾸려고 했으나 또 그건 아닌것같아서 관둠..

 

그래서 스트레스를 풀기 위해 지피티를 구박하기 시작했다.

 

그러니 호스트네임에 mongo를 작성하라고 한다?!

MONGO_HOSTNAME을 mongo로 변경합니다.
(Docker Compose 파일에서 services 섹션에 정의된 서비스 이름을 사용해야 합니다.)
Fastify 서버와 MongoDB 서버가 동일한 Docker 네트워크에 속하도록 설정합니다.
mongodb://root:example@mongo:27017/?authMechanism=DEFAULT와 같이 MongoDB 서버의 IP 주소 대신 mongo 서비스 이름을 사용합니다. 

그랬더니 성공..

 

하지만 경서님은 안된다고 하셔서 지피티한테 화를 내니까 

이렇다고 한다.. 

 

그래서 호스트 네임에 "host.docker.internal" 를 작성하니 성공했다!

그래서 우리팀은 host.docker.internal로 통일하여 작성!

 

1. localhost:21017 (실패)

2. 127.0.0.1:21017 (실패)

3. 0.0.0.0:2107 (실패)

4. mongo (성공)

5. host.docker.internal (성공)

 

컬로 post 요청도 보냈고~

몽고디비 데이터도 확인했다..😊

이때 정말 ...

이딴 걸로 고생하다가 성공하다니.. 싶어서 허무하지만 성공했다는 만족감은 또 엄청 좋았땅 휴우..

 

그리곤 몽고디비 테스크정의 새개정 배포를 시작했당~

 

환경변수도 넣어주었다.

 

여기서 몽고디비 환경변수는 MONGO_INITDB_ROOR_HOSTNAME 이런식으로 작성을 해줘야한다.

안그르면 또 오류남

 

그리고 AWS Secrets Manager 에서 키/값 페어로 디비 정보를 작성해주었당.

여기에 iam 역할설정으로 권한도 주어야함!

 

 

환경변수 제대로 지정 안해주면 또 severSelectionError 만남.. 지긋지긋

그리곤 자동 배포로 was 서버까지 다시 배포해주면~!

연동 성공~!

 

마일스톤6

  • https://본인도메인.click의 트래픽이 서버 컨테이너, 즉 애플리케이션 로드 밸런서로 연결되도록 만들어야 합니다.

분명 저번에 스프린트로 했죠?

하지만 기억이 안나쥬?

갓 지연님의 캐리로 호다닥 완성했습니당

 

일단 was 서버랑 연결된 alb에 리스너를 만들어서 443 포트에 예전에 만들어주었던 도메인을 연결해 주었당.

 

그리곤 route 53에서 레코드 설정해서 alb랑 연결해줌~

 

a 레코드 유형을 사용해서 만들어주었당

주의할 점은 별칭허용하여 alb를 선택해줘야한다!

 

이러면 

해당 도메인으로 https 접속 끝~!~!~!


어찌저찌 Day2 를 주말 내내 끙끙되면서 완성했다!

 

이번에도 정말 팀원들 없으면 못했을거야..

10팀.. 우리 셋 아니면 어쩔뻔...

으쌰으쌰 하면서 서로 로그 분석과 구글링을 통해 실습과제를 완성해가는 중...

당신들.. 못잃어... 영원해요.. 우리..

'코드스테이츠_Devops_4기 > section2) 클라우드 서비스 운영' 카테고리의 다른 글

Section2 실습과제 Day 4  (1) 2023.05.02
Section2 실습과제 Day 3  (3) 2023.05.01
Section2 실습과제 Day 1  (1) 2023.04.27
Section2 AWS -2  (2) 2023.04.25
Section2 AWS  (0) 2023.04.21