서버 인프라 39

Grafana에 AWS Cloudwatch 연동하기

AWS의 서비스를 이용하면서 다양한 데이터를 모니터링할 수 있다. 하지만 AWS 콘솔에 로그인하지 않고 데이터만 볼 수 있는 Grafana 라는 툴이 있다. 그라파나를 이용해서 AWS의 데이터를 모니터링해보자. AWS 준비 1. IAM 계정을 준비한다. 왜냐하면 그라파나에서 인증을 할 때 IAM 자격 증명이 필요하기 때문이다. IAM 자격 증명에 필요한 엑세스 키도 미리 만들어 준비한다. 2. 확인하고자 하는 모든 인스턴스들의 IAM 역할을 수정해야 한다. Grafana 시작하기 그라파나를 시작할 때 해당 사이트에서 받아서 실행했다. 운영체제에 맞게 다운받은 후, bin 폴더 안에서 그라파나 서버를 실행한다. 나의 경우에는 맥os에 개인 사용자에 맞게 아래의 링크에서 다운받았다. 서버는 localhost..

AWS EC2 서버에 도메인 적용과 SSL 인증서 적용하기

최근에 http로 서버를 열었다가 낭패를 본 경험이 있었다. 그래서 이것을 해결하기 위해서 SSL 인증서를 도입함과 동시에 공부도 할 겸 도메인 적용까지 하기로 했다. 이걸 하겠다고 이틀동안 별 짓을 다 했던것 같다. 그래도 결과는 나름 잘 나온다고 생각한다. 최종 결과 1. SSL 인증서가 적용되어 주소창 왼쪽에 자물쇠 아이콘이 뜬다. 2. http 로 접속해도 https로 접속이 가능하다. 3. 포트 번호 및 아이피 주소가 포함된 주소가 아닌 도메인 주소로 표기된다. 도메인 구매 먼저, 도메인을 구매해야 한다. 여기서 도메인이란, 주소를 의미한다. 예를들어 naver.com 또는 google.com 같은 주소를 말한다. 도메인 주소를 구매할 수 있는 곳은 여러곳이 있다. 국내 기준으로 보면 호스팅kr..

EC2 인스턴스 안에 있는 파일 로컬에 다운받기

ec2를 사용하면서 로그 파일을 로컬에 불러와야 하는 경우가 생겼다. 이 때는 ec2 인스턴스에서 파일을 로컬로 다운받아야 하는데, 마땅한 방법이 생각나지 않았는데 검색을 하다 보니 scp 명령어가 있었다. ssh를 이용한 파일 주고받기 원격 인스턴스에 접속하기 위해서는 ssh를 이용하는 방법이 있다. 원격 인스턴스의 터미널 화면을 보여주는 것이다. 여기에 파일을 주고받을 수 있는 기능까지 있으면 얼마나 좋을까? 찾아보니 다행이 존재했다. scp (secure copy protocol)을 이용하는 것이다. 내가 찾은 이용 방법은 맥 또는 리눅스 쉘에서 사용 가능한 방법이다. 윈도우의 경우에는 scp를 지원하는 프로그램을 설치해서 사용해야 한다. 파일을 다운받거나 업로드 하기전에 파일의 권한은 777을 주..

RDS 접속 시 ec2 인스턴스 통해서 접속하기

현재 작업중인 서버는 postgresql을 RDS에 올려서 사용하고 있다. 현재 이 서버는 어디서든 접속이 가능한 상태이다. 이러한 상태가 되면 보안에 매우 취약해진다. 그래서 db를 사용할 때는 외부에서 바로 접속이 불가능하게 해 두는것이 보안상 좋다. RDS 를 외부에 노출 시키지 않는 이유 가장 큰 문제는 역시 보안이다. db는 모든 정보들이 담겨져 있는 공간인데, 이것이 외부 네트워크에 노출이 되어 있으면 보안에 상당히 취약할 것이다. 어디서든 바로 접속할 수 있다는 단점이 있다. 그래서 VPC안에 있는 ec2를 통해서만 접속할 수 있게 한다. 또한 애플리케이션 서버 또한 안전하게 rds에 접속할 수 있다는 장점이 있다. 이러한 설정을 하게 되면 기존의 경우에는 db의 암호, 유저만 알면 쉽게 접..

EC2 리눅스 인스턴스 포트포워딩 하기

현재 내 인스턴스에는 nestjs 기반의 어플리케이션이 구동중이다. 현재 5000번 포트로 구동중인데, 이 서버에 접속하기 위해서는 [서버 주소]:5000 의 형식으로 서버에 접속해야 한다. 웹 서버는 이름이 단순해야 보기 좋은데, 포트 뒤에 5000을 붙여버리면 약간 보기 불편해 진다. 그래서 이 주소를 없애는 작업을 하기로 했다. 모든 가능성을 생각하자! 사실 처음에는 기존의 도메인이 있어서 route53을 통해서 Elastic IP 값을 수동으로 넣어 주었다. 하지만 여기서는 포트 번호를 넣을 수 없었다. 그래서 생각해낸 게 80번 포트를 5000번으로 돌려서 사용할 수 있으면 좋겠다고 생각했다. 그래서 검색을 해서 포트포워딩이 가능한 iptables를 사용하기로 했다. 1 iptables -A P..

Docker 기본 개념

Docker는 가상 운영 체제 환경을 만들어주는 매우 편리한 프로그램이다. 마치 VirtualBox 같은 개념이라고 생각할 수도 있으나, 약간은 다른 개념이다. 개인 공부하는 겸 필요한 기능만 정리해 볼려고 한다. Docker는 각 운영체제에 맞는 버전이 따로 있다. 커널과 관련된 곳까지 관여하는 프로그램이라서 맥의 경우에는 M1 칩셋과 Intel 칩셋을 따로 구분한다. 아직까지 M1 버전은 완벽하게 지원하지 않는다고 한다. 언젠간 완벽하게 지원해 주겠지 뭐. Docker 의 기본 개념 Docker를 사용하는 이유는 간단하다. 특정한 개발 환경에서만 실행되는 애플리케이션을 실제 릴리즈 환경에 올리려고 할 때, 지금까지 했던 설정들을 같이 올려야 한다. 이 때 자신이 설정한 환경들을 수동으로 일일이 세팅하..

AWS S3 파일 전체(일괄) 다운로드 받기

아마존 웹 서비스에는 정말 다양한 서비스들이 있다. 그 중 하나가 s3라는 서비스이다. 간단히 말하면 구글 드라이브 같은 웹서버 운영에 필요한 사진, 동영상 등의 파일들을 저장해 두는 서비스이다. 오늘 이 파일을 일괄 다운로드 할 일이 생겼다. 하지만 aws 홈페이지에서는 객체 하나하나 일일이 다운하는 방법 밖에는 없었다. 이는 s3 구조에 따른 것 같다. 각 파일은 전세계에서 고유한 url 주소를 가지며, 각 폴더의 위치는 prefix처럼 태그 비슷하게 달려 있다. 여튼 파일을 일괄 (전체) 다운로드 하기 위해서는 aws command line (aws cli) 사용이 필요했다. Mac 기준으로 s3 파일 다운로드 방법을 정리해 보았다. aws cli 설치 aws cli을 먼저 설치해야 한다. 다음의 ..

Dockerfile 작성하기

Dockerfile 제작하기 도커 파일은 가상 환경을 만들기에 매우 좋은 도구이다. 도커 파일 제작법과 사용법을 간단히 정리해 볼까 한다. FROM : 도커 파일의 기본 이미지를 다운받는다. 이미지 목록은 도커 허브에서 볼 수 있다. 예) FROM node (노드 최신버전의 도커 이미지를 다운) ENV : 가상환경의 환경변수를 설정한다. 리눅스의 export 랑 비슷한 명령어인듯 예) ENV MYNAME=TREE (myname 을 tree 라고 정의) RUN : 가상환경에서 다음의 쉘 명령어를 실행 예) RUN ls -al (쉘에서 ls -al 명령어를 실행하는 것과 같음) WORKDIR : RUN, CMD, ENTRYPOINT 의 작업 폴더를 설정한다. cd 명령어랑 비슷한듯 예) WORKDIR /us..

AWS EC2 시작하기

간단한 클라우드 서버 제작하기 카카오톡 봇의 서버를 이동해야 할 때가 와서 잠시 서버를 옮겨야 했다. 이를 위해서 클라우드 서버를 사용해야 했다. 알아보니 가장 유명한 웹 서비스는 AWS라는 것을 알게 되었고, 이것을 사용하기로 했다. AWS (아마존 웹 서비스) 는 가장 유명하고 많이 쓰이는 웹 서비스이다. 기존의 웹 서비스와 다른 점은 사용량에 따라서 요금을 낸다는 것이다. 또한 2년 3년 계약이 아닌 언제든지 해지하거나 사용이 가능하다는 점이다. 마지막으로 자신이 직접 서버 컴퓨터를 다루듯이 사용이 가능한 인스턴스를 제공한다. 이러한 이유 때문에 AWS로 갈아타기로 했다. AWS에 회원가입을 한 후 주어지는 프리 티어가 있다. 이것은 인스턴스(가상 컴퓨터)의 사용시간(750h)과 15GB의 트래픽을..