목록DevOps & Infra (154)
오늘도 한 뼘 더

# 배경 crontab을 작성 후 저장을 하고 나오는데 제대로 저장이 되지 않았다! # Crontab 작성 후 저장하기 1. Crontab -e로 작성하기 Crontab -e 명령어를 입력하면 바로 편집창이 뜬다. 예약 시간과 파일을 작성한다. # Edit this file to introduce tasks to be run by cron. # # Each task to run has to be defined through a single line # indicating with different fields when the task will be run # and what command to run for the task # ... 0 0 * * * /home/ubuntu/test.sh 2. Ctrl ..

# 배경 사설 Docker Registry의 이미지를 누구나 사용할 수 없도록 아이디, 비밀번호를 설정하고자 한다. # Htpasswd 설정 1. id, pw기반으로 사용하기 위해서는 htpasswd를 사용할 수 있어야한다. 이를 위한 디렉토리를 생성 $ mkdir -p /mnt/docker/auth 2. htpasswd파일을 생성한다 $ docker run --entrypoint htpasswd registry:latest -Bbn {user} {PW} > /mnt/docker/auth/htpasswd 이렇게 진행을 했을 때 htpasswd에 대한 에러가 났다. 확인을 하니 registry 2.7이상부터는 registry 이미지에 htpasswd가 포함되지 않는다고 한다. 3. htpasswd를 직접 ..

# 배경 Jenkins를 올린 서버에서 다른 서버에 Jenkins를 통해 빌드한 내용을 토대로 배포하고 싶다. # Publish Over SSH 플러그인 설치 1) Jenkins 관리 > 플러그인 관리 2) Publish Over SSH 검색 > 다운로드 및 재시작 # Publish Over SSH 플러그인 설정 1) Jenkins 관리 > 시스템 설정 2) Publish Over SSH 설정 * 이때 접근하고자 하는 서버의 SSH > authorized_keys에 jenkins 서버의 id_rsa.pub 키가 등록되어있어야 한다. 다음과 같이 지정한 후 "Test Configuration"을 눌렀을 때 "Success"가 뜨면 된다. Key - Jenkins가 올라가 있는 서버의 id_rsa(priva..

Docker Registry에 주소를 지정하고 이 주소를 사용하기 위해서 https 설정(SSL 설정)을 해줘야 한다. 이를 진행하는 방법은 두 가지 (1) certbot을 사용 (2) openssl을 사용한다. [1] certbot 사용 실제 사용 방법 # Nginx 설정 2022.01.17 - [DevOps & Infra/Nginx] - [Nginx] Ubuntu 서버에 Nginx 설치하기 [Nginx] Ubuntu 서버에 Nginx 설치하기 # 배경 - AWS ElasticBeanstalk으로 배포하고 있는 Service(Backend) 프로젝트를 도커 컨테이너로 배포하여 사용하기 위해서 도커 컨테이너가 올라가는 서버에 Nginx를 설치하고 도메인과 연결할 수 있도록 baekji919.tistory..

# 배경 Certbot을 이용해 Nginx에 SSL 인증 설정을 진행하는데 다음과 같은 에러 메시지가 뜨면서 문제가 발생했다. Hint : The Certificate Authority failed to verify the temporary nginx configuration changes made by Certbot. Ensure the listed domains point to this nginx server and that it is accessible from the internet. # 문제 힌트에서 언급이 되었듯이 인터넷에 제대로 접속을 하지 못하는 문제였다. # 문제 해결 문제 해결을 위해서는 일단 해당 인스턴스에 80번 포트로 오픈이 되어있어야 한다는 것을 확인했다. 먼저 보안 그룹을 통해..

# Crontab이란? Linux에서 일정 주기, 특정 시간에 맞춰 어떠한 명령을 실행하도록 하는 스케쥴러의 기능을 가능하게 하는 것을 Crontab이라고 한다. # Crontab 기본 명령어 # crontab 리스트 보기 $ crontab -l # crontab 작성 $ crontab -b # crontab 작업 모두 삭제 $ crontab -r # Crontab 작성 방법 * * * * * Crontab은 5개의 실행주기를 설정하여 작성한다. 차례대로 분 / 시 / 일 / 월 / 요일 이다. 분 : 0 - 59 시 : 0 - 23 일 : 1 - 31 월 : 1 - 12 요일 : 0 - 7 (0,7 = 일요일 / 1 = 월요일 ...) # 매분 실행 $ * * * * * /test.sh # 매일 10시..

# 배경 AWS Lambda를 통해 알림톡 발송을 지정해뒀는데 알림톡이 갑자기 3번 발송되는 현상이 발생했다. # 문제 원인 Lambda의 일반 구성 > 제한 시간 기본 값이 3초로 설정되어 있다. Log를 확인하니 해당 Lambda의 실행 시간이 3초가 넘어 timeout이 나면서 재시도를 하였다. > Lambda는 함수가 실패하면 재시도를 2번 하도록 기본 설정되어있다. # 해결 방법 제한 시간을 최대 15분까지 늘릴 수 있다. 일단은 1분으로 시간을 늘린 뒤에 로그를 통해 제한시간을 변경하는 것이 좋을 것 같다.

# 배경 Backend 서비스를 배포한 뒤에 로컬에서 잘 동작한 API가 동작하지 않는 것을 확인하였다. 계속해서 404 Not Found에러가 뜨는 것을 확인하였다. # 문제 원인 Jenkins로 배포를 진행하는데 Console Output을 보니 Go module이 Dockerfile에 지정된 Go 버전에서는 지원하지 않아서 생긴 문제였다. # 해결방법 Dockerfile에서 golang 이미지를 받는 버전을 바꾸어주면 해결이 된다. 수정 전 FROM golang:1.15.6 AS builder 수정 후 FROM golang:1.16 AS builder

# 배경 어느 날인가부터 오류를 쌓는 곳에 해외 IP에서 인입되는 에러들이 나타난 것을 발견했다. 현재 회사에서 운영하는 페이지는 해외 사용자들 대상이 아니기 때문에 해외 IP를 막기로 하였다. # WAF 사용하여 해외 IP 차단하기 1. Web ACLs 생성하기 - Create web ACLs 클릭 - Web ACL 설정 2. 사용할 AWS 리소스 선택 - 백엔드 서비스로 유입되는 해외 IP를 차단하고 싶었기 때문에 Application Load Balancer에서 차단하고자 하는 리소스들을 선택해서 추가한다. 3. Rule(규칙) 추가하기 - 직접 규칙을 설정하기 위해 "Add my own rules and rule group"을 선택한다. - Rule에 대한 이름을 설정하고 한국에서 발생되는 IP가..

# 배경 서버를 운영하는데 CPU가 올라가거나 request 수가 크지 않았음에도 서버가 timeout이 나서 다운이 되는 일이 발생했다. 어떠한 부분에서 문제가 있는지 알아보기 위해서 Slow Query 모니터링이 필요하다. # RDS Slow Query 설정하기 1. 파라미터 그룹 열기 사용 중인 파라미터 그룹에 접근한다. 2. 파라미터 편집 파라미터 편집 > slow_query_log 검색 slow_query_log의 기본값은 0 또는 없음이다. 로깅을 하기 위해서는 값을 1로 지정하고 저장한다. general_log도 똑같이 설정한다. long_query_time : 몇초 이상 걸리는 query를 로깅할 것 인지 3. 로깅 된 값 조회하기 - 파라미터 그룹에 log_output을 검색하면 다음과 ..