aws

    [AWS] RI & Savings Plan로 AWS 비용 절감

    [AWS] RI & Savings Plan로 AWS 비용 절감

    최근 운영 중인 서비스를 배포 중인 AWS 계정의 프리 티어가 종료되면서 AWS 비용을 절감해야할 일이 생겼다. 이것저것 알아보던 도중 RI(예약 인스턴스)와 Savings Plan를 알게 되었다. 두 기능 모두 EC2나 RDS 인스턴스에 대해 사용시간 만큼 비용을 지불(온디맨드)하는 것이 아닌, 몇 년치를 한 번에 결제해서 온디맨드에 비해 더 저렴한 가격에 구매하는 방법이다. 현재 내가 사용 중인 AWS 클라우드 아키텍처다. 여기서 나는 EC2 인스턴스 3개(배포용 2개 + 테스트용 1개)에 Savings Plan을, RDS 인스턴스 1개에 대해 RI를 적용했다. RI 예약 인스턴스(Reserved Instance)라고 한다. 1년 혹은 3년 동안 EC2 혹은 RDS 인스턴스의 특정 유형(ex. t2...

    [AWS] RDS Connection timed out 연결 오류 해결 방법

    [AWS] RDS Connection timed out 연결 오류 해결 방법

    RDS를 여러번 다뤄봤지만 같은 설정에 대해서도 계속 연결이 되지 않아 많이 애를 먹었다. EC2가 아닌 Mysql workbench 혹은 Datagrip과 같이 로컬에서 RDS에 접속하고 싶은데, "Connection timed out" 오류가 계속해서 발생했다. 퍼블릭 액세스 + 보안그룹 인바운드 설정까지 했는데 로컬에서 연결이 되지 않는다면 이번 방법을 사용해보자. 먼저 확인해볼 것 앞에서 잠깐 언급하긴 했지만 로컬에서 연결하기 위해서는 데이터베이스 생성 시 퍼블릭 엑세스 설정은 반드시 해줘야 한다. 또한, 보안 그룹의 인바운드 규칙도 확인해보자. 이렇게 기존 EC2를 위한 인바운드 규칙말고 로컬에서 사용하기 위한 규칙을 넣어줘야 한다. 0.0.0.0/0은 모든 사용자가 해당 RDS에 접근할 수 있..

    [AWS] RDS "Too many connections"

    [AWS] RDS "Too many connections"

    RDS 운영 중 다음과 같은 메시지가 발생하면서 RDS가 먹통이 될 때가 있다. "Too many connections" 프로젝트 배포시에 해당 오류가 발생하거나 RDS를 이용하지 못하게 되는 경우 해결 방법을 알아보자. 결론적으로 말하면 max_connections와 wait_timeout 값을 조정하면 된다. 해당 값들은 AWS Console에서 변경 가능하다. max_connections: 클라이언트가 동시에 접속할 수 있는 커넥션 수 wait_timeout: 사용하지 않는 커넥션이 닫히는 데까지 서버가 대기하는 시간 AWS Console -> RDS -> 파라미터 그룹 으로 이동하자. 파라미터 그룹은 max_connections와 같은 DB 관리에 필요한 파라미터들을 모아놓은 그룹이다. 처음엔 d..

    [AWS] S3 버킷 퍼블릭 엑세스 설정

    [AWS] S3 버킷 퍼블릭 엑세스 설정

    AWS S3 버킷을 퍼블릭하게 열어두고 사용할 때가 많다. 이번에는 S3 퍼블릭 엑세스에 대한 기본 세팅을 설명한다. 퍼블릭 엑세스 차단 기본적으로 아무 설정 없이 버킷을 생성하면 모든 퍼블릭 엑세스는 차단되어 있다. 이를 해제한다. 버킷 - 권한 - 퍼블릭 엑세스 차단(버킷 설정) - 편집 모든 퍼블릭 엑세스 차단 - 변경 사항 저장 권한 개요에 "객체를 퍼블릭으로 설정할 수 있음" 문구가 생기면 성공이다. 버킷 정책 버킷 - 권한 - 버킷 정책 - 편집 정책 생성기 내용 입력 Select Type of Policy: S3 Bucket Policy Effect: Allow Principal: * Actions: GetObject, PutObject Amazon Resource Name (ARN): 해당..

    [AWS] CloudWatch logs - 로그 파일 수집

    [AWS] CloudWatch logs - 로그 파일 수집

    AWS EC2에서 발생하는 로그 파일을 확인하기 위해 매번 인스턴스에 직접 들어가서 로그파일을 확인하는 작업은 번거롭다. 따라서 CloudWatch Agent를 이용해 파일 로그를 CloudWatch에 출력하는 방법을 알아보자. CloudWatch agent 설치 CloudWatch agent는 CloudWatch에서 기본적으로 제공하는 cpu 사용률 등 기본적인 지표 외에도 메모리와 디스크 사용률 등 다양한 custom 지표를 확인할 수 있다. IAM 역할 설정 CloudWatchAgentServerPolicy 정책을 원하는 EC2 인스턴스에 적용한다. CloudWatch agent 설치 설치 방법은 ubuntu 기준이다. wget https://s3.amazonaws.com/amazoncloudwat..

    [AWS] EC2, ufw enable 후 ssh 접속 불가 문제

    [AWS] EC2, ufw enable 후 ssh 접속 불가 문제

    Ubuntu는 기본 방화벽으로 ufw를 사용한다. 이 때, ufw를 disable 했다가 enable 했을 때, ssh 접속이 다시 되지 않는 경우가 있다. 사실 무시하고 넘어갔겠지만 ufw를 enable 할 때, ssh 접속이 끊어질 수 있다는 메시지에 y라고 응답했을 것이다. Command may disrupt existing ssh connections. Proceed with operation (y|n)? Firewall is active and enabled on system startup 이후 EC2를 다시 ssh로 접속해보면 타임아웃 에러가 나면서 접속할 수 없게 된다. ssh: connect to host x.x.x.x port 22: Operation timed out 이에 대한 해결 방..

    [Ubuntu] Ubuntu에서 rc.local 없을 때, 생성하는 방법

    [Ubuntu] Ubuntu에서 rc.local 없을 때, 생성하는 방법

    rc.local rc.local은 linux가 새롭게 부팅될 때마다 실행될 명령들을 모아놓은 파일이다. 처음 ubuntu를 켰을 때, rc.local이 없다면 이를 추가하고 활성화시켜야 한다. rc.local 활성화 방법 1. 먼저, rc.local이 진짜 없는지 확인 cd /etc find *rc.local* etc 폴더에 들어간 후에 rc.local 파일을 찾아보자. 만약에 파일이 보이면, 다음 내용은 보지 않아도 된다. 만약에 아무런 파일을 찾을 수 없다면, 아래를 따라해보자. 2. rc.local 파일 생성 sudo vi /etc/rc.local 그리고 다음과 같이 기본 세팅 값만 넣고 저장하자. #! /bin/sh exit 0 3. 실행 권한 설정 sudo chmod +x /etc/rc.loca..

    [EC2] 프리티어(t2.micro)에서 Jenkins 용량 초과 문제

    [EC2] 프리티어(t2.micro)에서 Jenkins 용량 초과 문제

    프리티어, 젠킨스 용량 초과 문제 AWS EC2 프리티어 유형인 t2.micro는 RAM이 1GB이다. 이는 젠킨스를 돌리기에 매우 부족하다. 따라서 t2.micro에서 아무 설정을 하지 않고 젠킨스를 돌리면 서버가 먹통이 되고 만다. 그러나 인스턴스 유형을 업그레이드 하자니 비용이 부담된다면 SSD의 일정 부분을 swap 용량으로 할당하는 방법을 고려해보자. 쉽게 말해, RAM 용량이 가득 차서 더 이상 활용할 공간이 없을 때, swap 공간에 데이터를 기록해서 RAM 사양을 키운듯한 효과를 낼 수 있다. swap 공간을 사용하면 RAM 급의 속도는 아니더라도 젠킨스 서버 하나 정도는 충분히 돌릴 수 있는 속도와 용량을 제공받을 수 있다. 유의할 점으로 swap 공간은 무한정 설정할 수 있는 것이 아니..