AWS10 Elastic Beanstalk 구성시 유의사항 프로젝트를 위해 EB 환경을 구성하려고 하였다.기존에는 이미 만들어진 환경을 사용하거나 복제했기 때문에 처음부터 만들 일은 없었는데, 만들어보니 구석구석 신경쓸 부분들이 있었다.aws-elasticbeanstalk-ec2-roleThe instance profile aws-elasticbeanstalk-ec2-role associated with the environment does not exist.처음 어플리케이션 생성 시 보수적으로 모르겠는 것들을 빼고 진행했더니 바로 이런 에러를 마주했다.무언가 role이 없다고 한다. 근데 필요한 건데 없으면 만들어줘야하는 것 아닌가? 여기 를 보니 이유를 알 수 있었다.어찌되었든 이 role은 인스턴스 프로파일로서 인스턴스 시작 시 Amazon EC2 인스턴스.. 2024. 5. 25. AWS Infra 구성 예시 개요 1~2 개월 전 AWS Solutions Architect 분으로부터 aws에서 어떠한 방식으로 인프라를 구성해야 하는지에 대해 조언을 들었다. 그때 전달해주신 내용을 기억하는 선에서 정리해보려고 한다. 틀린 내용이 있을 수 있다. 나름의 best practice? 위 이미지는 당시 설명하며 그려주셨던 그림을 정리한 것이다. 위 그림에서 볼 부분은 아래와 같다고 생각한다. 1. WAS와 DB 같이 민감한 부분들은 private subnet에 넣고 외부에 노출되는 부분을 최소화한다. - ec2 등을 public ip를 설정을 기본으로 하지 않고 필요한 부분만 외부에 노출하여 외부로부터 안전하도록 구성한다. - 따라서 로컬 개발 환경에서는 VPN 등으로 연결할 필요가 있다. 2. 개발환경과 운영 환경의.. 2024. 3. 25. 보안 그룹 중첩 시 유의 사항 이전에 사내 ip가 변경되어 aws에 접속에 어려움을 겪었던 적이 있다. 그때 aws에 등록된 사내 ip 를 수정하기 위해 보안그룹을 확인한 순간 온갖 곳에 추가되어 있던 것을 보게 되었고, 그때 보안그룹을 정리하며 알게된 내용 등을 정리한다. 보안 그룹? 보안 그룹은 연결된 리소스에 도달하고 나갈 수 있는 트래픽을 제어합니다. 예를 들어 보안 그룹을 EC2 인스턴스와 연결하면 인스턴스에 대한 인바운드 및 아웃바운드 트래픽을 제어합니다. AWS 사이트 에서 참고하였다. 간단하게 이해해보자면 네트워크 요청과 응답에 대한 규칙을 정한다고 생각하면 될 것 같다. 경험상 ec2, RDS, ELB 등에 적용할 수 있었다. 보안 그룹의 중첩 보안그룹에는 타겟의 ip 목록을 등록할 수도 있고 다른 보안그룹을 지정할 .. 2024. 3. 14. [AWS] EBS 용량 변경시 주의 사항 및 파티션 방식 (MBR/GPT) 지난번에 EC2에 마운트 된 EBS의 용량을 늘리고 적용시켜보았습니다. 지난글 바로가기 이번에도 비슷한 상황이 발생하여 지난번과 똑같이 진행하였지만 문제가 발생했습니다. 용량을 2T에서 3T로 올리기를 원했는데 디스크 파티션 방식을 확인하지 않았던 것이 화근이었습니다. 미처 확인해볼 생각도 못한.. 용량을 변경하고 growpart 를 실행하자 바로 문제가 생겼고 그때서야 문제를 알게 되었습니다. 설상가상으로 다시 용량을 낮추지 못하는..서칭을 통해 문제가 무엇인지 알 수 있엇지만 해당 내용을 알지 못해 찾아 정리해보려 합니다. MBR / GPT 이 두 방식은 파티션 스타일로 디스트의 데이터에 엑세스 하는 방법을 알려주며 디스크 초기화 중에 결정됩니다. 따라서 사용 중인 디스크마다 파티션 스타일이 필요하고.. 2023. 3. 12. EC2의 용량을 늘려보자! (No space left on device) 오늘은 EC2의 용량을 늘리는 것에 대한 내용을 적어보려 합니다. 사실상 장애리뷰 겸... 서비스에서 EB 환경이 아닌 EC2 인스턴스를 운용하는 부분이 있는데, 이번에는 거기서 말썽을 부렸습니다. EC2 에서 어떤 문제를 일으켰을까? 사실 처음 장애 상황을 인지한 경로는 아쉽게도 EC2에 대한 모니터링을 통한 것이 아니었습니다. 해당 인스턴스에 젠킨스를 설치하여 배치 작업들을 수행하고 있었는데 배치 작업의 최근 수행 시간이 하루 전인 것을 이상하게 여겨 이슈화되었습니다. 해당 문제 제기를 보고 해당일 오전에 있던 배포가 떠올라 Code Deploy에 가보니 배포 역시 실패해 있었고 에러를 확인하니 여유 공간이 없다고 합니다. ssh으로 접속하여 확인하였을 때도 100% 사용 중인 것을 확인할 수 있었습.. 2023. 2. 23. [RDS] RDS MySql 버전 업그레이드 시도와 장애 장애 발생 배경 현재 서비스에서 RDS MySql의 버전을 5.7.x를 사용하고 있습니다. 구성에서 확인할시 지원하는 버전 중 낮은 편에 속했고 데이터베이스 스케일 업 이후 버전업도 고려했던 터라 개발환경을 먼저 8.0.31 로 버전 업하였습니다. 개발 DB에 실험적으로 먼저 진행 후 여파나 문제 상황을 해결하고 상용 환경에도 반영할 예정이었습니다. 그러나 문제가 생겨서 개발 DB에서 작업을 지속할 수 없는 상태가 되었습니다. 따라서 롤백을 하기 위해 구성에서 이전 버전을 선택하려 했지만 하위 버전 선택이 제한되어 직관적으로 롤백을 할 수 없게 되었습니다. 장애 현상 개발 DB에 연결이 되지 않았습니다. 에러 문구를 보아 TLS 버전과 관련있어 보였습니다. InterfaceError: (mysql.con.. 2023. 1. 19. CodeDeploy에 알림을 추가해보자! 지난번에 CodeDeploy에 배포가 제대로 되지 않으면서 배치가 제대로 돌지 못한 일이 있었습니다. 이에 어플리케이션의 배포 결과를 슬랙으로 알림을 받아 볼 수 있도록 설정해보았습니다. 전체 흐름은 다음과 같습니다. CodeDeploy 배포 성공/실패 -> SNS -> Lambda -> Slack Lambda 생성 먼저 AWS Lambda 로 가서 새로운 함수를 생성해 줍니다. 함수의 역할은 이벤트 발생시 해당 이벤트의 메세지에서 필요한 내용을 가공하여 슬랙 채널로 발송하는 것입니다. import boto3 import json import logging import os from base64 import b64decode from urllib.request import Request, urlopen .. 2023. 1. 10. CodeDeploy가 왜 배포 실패했을까? 현상 서비스에서 배치를 aws의 code deploy를 이용하여 배포와 관리하고 있습니다. 아쉽게도 code deploy에서의 이벤트 로그에 대한 모니터링은 없어 지난주부터 발생한 아래 에러를 늦게 발견한 상황이었고 배포가 제대로 이루어지지 않은 것을 알게 되었습니다. 해결 메세지를 보아 agent 에 문제가 있을 수 있다는 생각을 하게 되었고 인스턴스에 ssh 접속을 통해 확인하고자 했습니다. 그 결과 아래 처럼 codedeploy agent의 상태가 비활성상태인 것을 알게 되었고 재시작시켜주었습니다. 이후 code deploy를 통해 인스턴스에 원활히 배포가 된 것을 확인할 수 있었습니다. 실제 서비스에서 사용중인 인프라가 아니라 서비스에 영향은 없었지만 배포가 안되었을 때 바로 알아차리지 못했다는 .. 2023. 1. 7. 아주 만약에 s3 버킷 내용물이 삭제된다면? 어쩌다 발생했을까? 행복한 금요일 퇴근 전 칼퇴를 꿈꾸던 저에게 비보가 날아들었습니다. 누군가의 실수로 s3에 있는 이미지들과 html 들이 삭제되었다는... 문제는 양이 꽤 되었고, 무엇이 삭제되었는지 정확히 알지 못했다는 것이죠. 잘못된 명령어로 전체 버킷에 대해 삭제를 진행하여 발생한 결과였습니다. cloudfront 를 통해 정적 파일들을 서빙하고 있기에 삭제된 파일을 복구하지 않는다면 timeout된 파일들이 원본에서 찾는 순간 서빙하지 못하는 상황이었습니다. 사용한 명령어 aws s3 sync ./app-docs s3://static-files/docs --delete --no-progress --exclude '.*' s3 sync 명령은 버킷과 디렉토리의 콘텐츠 또는 두 버킷의 콘텐츠를 동.. 2022. 12. 25. AWS RDS 스케일 업 일을 시작한지 어언 9개월이 지나가고 있는데 사용자의 요청이 몰리는 시점에 DB의 cpu 사용률이 90% 이상을 도달하며 간당간당한 상황이 이어지고 있었습니다. 부하를 줄이기 위해 읽기 복제본도 두고 있지만 당장의 문제를 해결하기에는 역부족이었습니다. 따라서 스케일업 혹은 스케일 아웃을 통해 이 문제를 해결해야 했습니다. 현실적으로 스케일 아웃을 하기에는 쿼리 튜닝과 샤딩 등도 고려가 필요하기에 당장 적용하기에는 무리라고 판단하여 스케일업을 진행하게 되었습니다. 그래서 어떻게 할건데? 운(?)이 좋게 스케일업에 대한 조사와 테스트, 실제 적용도 담당하게 되었습니다. 다른 많은 서비스 처럼 AWS RDS를 사용중이기에 레퍼런스를 찾아보는 것부터 시작하였습니다. 공식문서와 실제 적용 사례들을 찾아보며 적용해.. 2022. 11. 28. 이전 1 다음