EC2 にアタッチした EBS の空き容量を監視して、自動的に拡張する方法

Amazon Linux
このサイトはアフィリエイト広告(Amazonアソシエイト含む)を掲載しています。
スポンサーリンク

AWS の EC2 上に構築したメールサーバーを運用していて、メールのデータはマウントされた別のディスク(EBS)に蓄積するようにしています。

料金を抑えるために EBS の容量も実際の使用量に合わせて設定し、定期的に空き容量を確認・足りなくなってきたら手動で少しずつ増やすという運用をしていました。

せっかくオートスケーリングができる AWS を使っているので、自動化してみようという事でスクリプトを組んだので記録しておきます。

環境

  • CentOS Linux release 7.9.2009 (Core)
  • awscli.noarch 1.14.28-5.el7_5.1
  • xfsprogs.x86_64 4.5.0-22.el7

※メールのデータは /home/maildata にマウントした EBS に蓄積される。

シェルスクリプト

ポイント

CentOS 7 で構築しているので、パーティションは XFS、マウントしている EBS のタイプは gp2 で運用している場合のスクリプトです。

ポイントとしては空き容量の単位を GB で固定したいので、df コマンドは BG オプションを付けて取得します。

また、aws cli を使ってボリュームサイズを変更後にパーティションサイズを拡大する流れなのですが、aws ec2 modify-volume を実行するとステータスが modifying となり、その後しばらく optimizing となります。この間はパーティションサイズが変更できませんので、EBS ボリュームのステータスが completed になるのを待機してから、ファイルシステムを拡張する必要があります。

実際のスクリプト

定期実行

このスクリプトを /etc/cron.weekly/autoscaling として配置し、実行権限を付与しました。

Cron により毎週実行されるので、空き容量の監視をしたり、EBS の容量を手動で変更する手間がなくなりました。

参考にしたサイト

コメント

タイトルとURLをコピーしました