본문 바로가기

CICD8

Gighub Action , Docker Compose, Nginx, code deploy 무중단 배포 무중단 배포1. rolling update 배포새로 배포되어야 하는 버전을 하나씩 순차적으로 적용시키면서 배포하는 방식입니다. 한 번에 모두 배포되는 게 아니기 때문에 배포가 되는 과정에서 옛날 버전과 새로운 버전이 공존합니다. 그렇기 때문에 잘못하면 배포하는 과정 중에 호환성 문제가 생길 수 있습니다2. Blue,Green 배포예시를 들자면 이전의 8080포트를 쓰고 있는 컨테이너가 있습니다. 새로운 컨테이너를 새로운 포트(8081)로 올립니다. 다 올려졌다면 nginx는 새로운 컨테이너 포트로 연결하고 이전 컨테이너는 내립니다.3. 카나리 배포적은 사용자에게 먼저 배포 후 A/B 테스트. 현재 단계에서는 고려하지 않겠습니다.rolling update는 인스턴스를 두 대 이상 사용하여 비용 문제가 발생.. 2024. 12. 18.
Gighub Actions,docker 배포(Linux Ec2) GitHub ActionsGitHub Actions는 일반적으로 CI(Continuous Integration, 지속 통합) 또는 CD(Continuous Deployment, 지속 배포)와 같은 자동화를 위해서 사용됩니다. 운영환경에 소스코드를 머지하기 위해 반복적으로 처리되야 할 일들들을 처리해줍니다. 즉, CI/CD를 위한 파이프라인입니다. CD ( Code Deploy)Source Code를 운영환경에 자동 배포하는 역할을 수행하는 행위(지속적 자동 배포) 전체적인 플로우1. Github Action에서 소스코드를 빌드한다.2. Github Action에서 빌드한 소스코드를 이미지로 빌드한다.3. Github Action에서 빌드한 이미지를 Docker 레퍼지토리에 넣는다.4. Github Act.. 2024. 12. 18.
nginx 설치 및 포트바인딩 sudo apt-get install nginxsudo systemctl start nginxsudo systemctl enable nginxsudo vi /etc/nginx/sites-available/default 전체 내용 삭제:1. ESC 키를 눌러 명령 모드로 진입2. gg를 입력 (파일의 맨 처음으로 이동)3. dG를 입력 (현재 위치부터 파일 끝까지 삭제)새로운 내용 붙여넣기:1. i를 눌러 입력 모드로 전환2. 내용 붙여넣기 (우클릭 또는 Shift + Insert)3. ESC를 눌러 명령 모드로 전환4. :wq를 입력하고 Enter (저장 후 종료)위 방법으로 아래 내용 복붙하기server { listen 80; server_name 15.164.30.67; locatio.. 2024. 10. 24.
백엔드 서버 모니터링 도입(AWS CloudWatch) #도입 이유프로젝트 도중 프론트팀으로부터 메시지를 받았다. 서버가 다운 됐다는 내용이다. Spring 서버 에러 내용은 Slack으로 수신 받게 설정을 해두어 EC2 서버 모니터링에 대해서는 안일했었다. 지금은 프론트팀이 먼저 발견하여 연락을 주었지만, 실서비스를  운영하게 된다면 사용자가 먼저 서버 다운을 경험하게 될 것이다. 이는 서비스 신뢰도에 대한 하락 및 사용자 불편함이 증가한다는 것을 의미한다. 만약 서버에 문제가 생겼다면 여러 사용자가 접하기 전에 먼저 서버팀에서 인지하여 해결하는 것이 중요하므로 서버 모니터링을 도입하게 되었다. (위 문제에 대한 해결 내용은 아래 포스터에 적어두었다.) [에러] Out of memory Error: java heap space에러원인:  Out of mem.. 2024. 9. 9.
[에러] Out of memory Error: java heap space 에러원인:  Out of memory Error / java heap space //컨테이너 메모리 사용량 보기docker stats  위 명령어로 컨테이너 메모리 사용량을 모니터링했습니다. MEM USAGE / LIMIT 열 부분을 확인해 보면 1/2이나 메모리 공간이 남은 것을 알 수 있습니다. 그러면 log파일이 커져서 문제가 된건 아니구나를 다시 한 번 알 수 있습니다.  사전 지식JVM은 기본적으로 Heap 크기를 최소 1/64로 설정합니다. 그래서 만약 heap space를 늘려주고 싶다면 dockerfile이나 도커 명령어를 사용하여  해결법여기서 -Xmx는 최대 힙 메모리 크기를, -Xms는 초기 힙 메모리 크기를 설정합니다. 예를 들어, -Xmx512m는 최대 512MB의 힙 메모리를 J.. 2024. 9. 5.
컨테이너 로그 초기화 /var/lib/docker/containers/컨테이너ID/컨테이너ID-json.log위 경로가 docker log가 위치한 위치이다. 캡쳐본은 /var/lib/docker/containers/컨테이너ID을 직접 들어가본 것이다.   임시방편으로 위 명령어로 log 파일을 초기화 할 수  있다. truncate -s 0 컨테이너ID-json.log 2024. 9. 5.
리눅스 Ec2 mysql 명령어 모음 database 접속 mysql -u {접속자이름} -p -h {데이터베이스 주소} database 나가기 mysql> exit mysql 상태 확인 sudo systemctl is-enabled mysqld mysql 로그 확인 sudo journalctl -u mysqld 2024. 2. 6.
리눅스 Ec2에 Redis6 설치 ※ 결과만 보고 싶으신 분은 앞 과정은 생략해주시고 맨 마지막에 있는 설치과정을 따라해주세요 설치 sudo yum update sudo yum install gcc make mkdir Redis cd Redis sudo wget http://download.redis.io/redis-stable.tar.gz sudo tar zxvf redis-stable.tar.gz cd redis-stable sudo make sudo cp src/redis-server src/redis-cli /usr/local/bin/ sudo mkdir /etc/redis sudo cp redis.conf /etc/redis cd /etc/redis sudo vim redis.conf sudo mkdir /var/lib/redi.. 2024. 1. 27.