본문 바로가기

컴퓨터/aws

aws EC2 linux 자동 on off, shell script 자동 실행

반응형

최근 진행하고 있는 프로젝트에 ec2 프리티어 (t2.micro)에 linux를 설치하고 도커 컨터이너 띄워 influxDB, grafana를 사용하고 있다.

최근 데이터가 좀 쌓이다보니 grafana에서 조회할때 out of memory가 자주 발생하였다. 에러 트레킹 해본결과 memory가 1GB 밖에 되지 않는 것이 문제였고, cpu 사용율도 조회할때마다 거의 90% 이상으로 매우 높았다.

cpu와 memory 사양이 좀 더 높은 t2.medium으로 인스턴스 유형을 바꾸려고 한다.

현재 프리티어로 사용하고 있어 따로 과금되고 있지 않았는데, t2.medium으로 바꾸게되면 0.0576 USD per Hour, 한달 요금이 약 40달러 정도 나올 것으로 예상된다.

운영되고 있는 서버는 아니고 테스트용도로 사용하고 있는 서버라 최대한 비용을 아끼가 위하여 사용하지 않는 시간에 자동으로 ec2 instance를 종료하고, 주로 사용하는 시간에만 on하려고 한다.

 

AWS lamda, AWS cloudWatch 사용하여 EC2 자동 on, off 하기

https://aws.amazon.com/ko/premiumsupport/knowledge-center/start-stop-lambda-cloudwatch/

1.

sudo nano /etc/rc.local

2.

#!/bin/bash
sudo service docker start
docker container restart influxDB_WITH_Grafana

!/bin/bash 아래 부분에 서버를 기동하는 명령어를 입력하면 됨.

3.

sudo chmod +x /etc/rc.local

파일에 권한 부여

4.

sudo nano /lib/systemd/system/rc-local.service

5.

[Service]
Type=forking
ExecStart=/etc/rc.local start
TimeoutSec=0
RemainAfterExit=yes
GuessMainPID=no 

--- service 아래 부분에 install 항목을 적어줌. --- 
[Install]
WantedBy=multi-user.target

6.

sudo systemctl enable rc-local.service
sudo systemctl start rc-local.service

rc-local.service 를 실행하여 잘 되는지 테스트 후, ec2 인스턴스를 재부팅하면 2번에서 입력했던 shell 스크립트가 실행됨.

반응형