라벨이 aws인 게시물 표시

AWS EC2 + ELB + Auto scaling + Nuxt 환경에서 수동으로 Auto scaling 인스턴스 추가 시 load chunk failed 에러

0. 환경 - AWS EC2 + ELB + auto scaling 그룹은 이미 설정되어 있음 - Nuxt.js 수동으로 auto(?) scaling 인스턴스를 추가해야 했다. auto scaling 인스턴스를 추가하면 자동으로 git에서 소스를 가져와 빌드하고 pm2로 프로세스를 시작하도록 했다. 아래는 인스턴스 시작 시 실행하는 명령어이다. auto scaling 시작 구성의 사용자 데이터 부분에 추가하면 된다. #!/bin/bash sudo -u 사용자 -i git -C 소스경로 --git-dir=소스경로/.git pull sudo -u 사용자 -i npm run build --prefix 소스경로 sudo -u 사용자 -i pm2 start npm --name "이름" -- start --prefix 소스경로 1. 인스턴스 추가 1) EC2 콘솔 > Auto Scaling > Auto Scaling 그룹 메뉴에서 원하는 그룹 우클릭해서 편집 창을 연다. 2) 목표 용량과 최소용량을 최대용량 범위 안에서 원하는 만큼 늘린다. 3) 인스턴스 메뉴에서 확인해보면 자동으로 늘어나있다. 2. git 설정   인스턴스를 처음 추가하면 git 사용자 정보를 설정해줘야 한다. 사용자 정보 설정 후 다시 pull한다. git config --global user.email = 내 이메일 git config --global user.name = 내 이름 3. 프로세스 시작   아래 명령어로 빌드 후 프로세스를 재시작한다. 시작하고 약 1 ~ 2분 정도는 502 에러가 발생할 수 있다. npm run build pm2 stop 이름 pm2 start 이름 4. 오류 발생 시   계속 새로고침해서 load chunk failed가 나오는지 체크한다. 이 오류는 대부분 인스턴스 간 코드가 일치하지 않아서 발생한다. 1) 인스턴스 간 코드가 일치하는지 체크한다. 2) static 파...

SSL 인증서 적용 방법

0. 환경 - 인증서는 Sectigo(구 COMODO)에서 발급 - AWS EC2 사용 - ELB는 쓰는 서버와 안쓰는 서버가 있다. - 웹서버는 Nginx 1. 도메인 소유자 인증 - HTML 인증    https://www.comodossl.co.kr/products/comodo-ssl-dcv.aspx  이 페이지에서 시키는 대로 하면 1 ~2시간 후에 인증서 메일이 온다. /.well-known이 설정되어 있지 않다면 nginx 설정에 아래 코드를 추가한다. 설정은 ubuntu 기준 /etc/nginx/sites-available/[FILENAME]에 있다. server { ...   location /.well-known {     alias [경로]   } ... } 2. 인증서 설치 - ELB 사용 안하는 서버 1) 한 서버에 한 도메인    https://www.comodossl.co.kr/certificate/ssl-installation-guides/Nginx.aspx  이 페이지에서 시키는 대로 하면 된다. 인증서 내용을 합친 후에 nginx 설정에 지정한 파일 외에는 삭제해도 되는 것 같다. 2) 한 서버에 여러 도메인(미완)   정확한 원인은 모르겠지만 체인인증서를 적용하면(인증서를 합치면) nginx를 재시작할 때 오류가 발생한다. 일단 인증서를 합치지 않고 서버 인증서(사이트이름.crt)와 인증서 개인키(사이트이름_SHA256WITHRSA.key)만 nginx에서 설정한 경로에 업로드하면 된다. 이런 식으로 인증서를 적용하면 "안전하지 않음"으로 나온다. => 인증서 문제가 아니라 nginx 설정의 ssl_protocols가 구버전TLS를 지원해서 그런 것 같다. TLS1.2 이상만 지원하도록 변경하면 정상적으로 나온다. 3. 인증서 설치 - ELB 사용 1) 한 서버에 한 도...

서버(Ubuntu)/AWS 정리

* Mongodb + python + django + uwsgi   mongodb 서비스는 uwsgi 서비스보다 먼저 시작해야 한다. * net.core.somaxconn   아마존 EC2 인스턴스를 재시작할 때마다 net.core.somaxconn의 값이 초기화된다(기본값은 128인듯). 이 값이 너무 낮으면 uwsgi나 redis가 시작이 안된다.

AWS lamda + api gateway + step function

1. 하고 싶은 것 - 클라이언트 요청 -> (1) 무조건 성공값을 반환 -> (2) 실제 계산, DB 입출력 등 - 이유 : 실제로 하고 싶은 연산이 꽤 오래 걸리고 사용자는 그 결과를 바로 볼 필요가 없음 2. 1차시도 : API gateway -> Lambda1 -> Lambda2   1) lambda2를 실행시키고 바로 "ok"를 반환하는 lambda1 함수를 만듦(둘 다 node.js 8.1) 2) API gateway를 만들고 method로 Post를 추가, CORS 설정, lambda1을 end point로 설정. -> CORS 설정했는데 테스트하니 안됨. -> lambda1에서 CORS 헤더를 설정해서 이런식으로 return해야 함 return {   "statusCode": 200, "headers": { "Access-Control-Allow-Origin": "*" } } 3) CORS 문제는 발생하지 않으나 lambda2에 진입하지 않음 -> handler에서 return 하는 순간 함수가 종료되고 실행중인 연산을 종료해서 발생하는 문제. -> callback() 사용. 4) lambda2에서 실제로는 10초 정도면 끝나는 연산을 lambda1에서 설정한 대기시간(30초였음)만큼 기다림 -> lambda1의 대기시간을 10초로 줄였더니 lambda2에서 10초 이상 걸리는 경우 마지막까지 수행하지 못함. (기나긴 삽질의 시간) 3. 2차시도 : API gateway -> Step function(Lambda1 -> Lambda2) 1) Step function(state machine과 비슷하다고 느꼈다)을 사용하면 될 것 같아서 API gateway가 step function을 호출, step function에서 시작 ->...