[Oracle Cloud] 아무도 로그인하지 않은 서버를 자동으로 중지

1. 본 기사에 대해서



개발 · 검증 등의 용도로 클라우드 환경을 준비하고 있으며,
요금을 절약하기 위해 잠시 아무도 서버에 로그인하지 않은 경우
자동으로 중지하는 스크립트를 작성해 보았습니다.

과금액을 절약한다는 관점에서는 9:00~17:00 등 정각으로 기동 정지하도록
설정하는 것도 손입니다만, 좀 더 유연하게 대응하고 싶을 때에 사용할 수 있을지도 모릅니다.

2. 전제



Unix 기반 OS가 설치된 서버(인스턴스)여야 합니다.
OCICLI (Oracle Cloud 명령 행 인터페이스)가 대상 서버에
설치된 것.

· [참고] OCICLI 설정 절차
Oracle Cloud : 명령 줄 인터페이스 (CLI)를 설치하려고했습니다.

3. 스크립트



로그인한 사용자 수를 정기적으로 확인하고,
지정된 시간 로그인이 없으면 중지합니다.
백그라운드에서 흘려 놓아 사용하는 이미지입니다.
"DEST_OCID"에 대상 서버를 식별하기 위한 ID를 지정합니다.

· Compute 인스턴스용
#!/bin/bash

# 対象インスタンスOCID
DEST_OCID="ocid1.instance.oc1.ap-tokyo-1.xxxxxxxxxxxxxxxxxxxxxxxx"
# シャットダウンまでの無ログイン時間(秒)
SHUTDOWN_THRESHOLD=3600
# ログインユーザ数チェック間隔(秒)
CHECK_INTERVAL=600

# ログインユーザ監視処理
while [ $((COUNT * CHECK_INTERVAL)) -lt ${SHUTDOWN_THRESHOLD} ];
do
        LOGIN_USER_COUNT=`who | wc -l`
        if [ ${LOGIN_USER_COUNT} = 0 ]; then
                COUNT=$(( COUNT + 1 ))
        else
                COUNT=0
        fi
        sleep ${CHECK_INTERVAL}
done

# インスタンス停止コマンド発行
echo "閾値に達したためインスタンスを停止します"
oci compute instance action --instance-id ${DEST_OCID} --action stop

· Database Cloud용
#!/bin/bash

# 対象インスタンスOCID
DEST_OCID="ocid1.dbnode.oc1.ap-tokyo-1.xxxxxxxxxxxxxxxxxxxxxxxx"
# シャットダウンまでの無ログイン時間(秒)
SHUTDOWN_THRESHOLD=3600
# ログインユーザ数チェック間隔(秒)
CHECK_INTERVAL=600

# ログインユーザ監視処理
while [ $((COUNT * CHECK_INTERVAL)) -lt ${SHUTDOWN_THRESHOLD} ];
do
        LOGIN_USER_COUNT=`who | wc -l`
        if [ ${LOGIN_USER_COUNT} = 0 ]; then
                COUNT=$(( COUNT + 1 ))
        else
                COUNT=0
        fi
        sleep ${CHECK_INTERVAL}
done

# インスタンス停止コマンド発行
echo "閾値に達したためインスタンスを停止します"
oci db node stop --db-node-id ${DEST_OCID} --action stop

4. OCID 확인 방법



· Compute 인스턴스의 경우
Oracle Cloud 관리 콘솔 화면에서
[컴퓨트]⇒[인스턴스]⇒[인스턴스 세부정보]


· Database Cloud의 경우
[Oracle Database]⇒[베어 메탈, VM 및 Exadata]⇒[DB 시스템]⇒[DB 시스템 상세]⇒[노드]


5. 주의점



실제로 사용하는 경우 systemd 등으로 스크립트를 서비스합니다.
서버 시작과 함께 스크립트가 실행되도록 할 것이라고 생각합니다.

이 경우 로그인하지 않은 시간의 임계 값을 실수로 극단적으로 짧게 설정하면
서버 기동⇒스크립트 자동 기동⇒즉시 임계값 도달⇒정지 처리가 되어
로그인할 수 없어 복구가 곤란해질 우려가 있으므로 주의가 필요합니다.

6. 참고



Oracle Cloud Infrastructure CLI Command Reference

좋은 웹페이지 즐겨찾기