3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

なんにもしてないのにt2.nanoなインスタンスのステータスチェックがいつの間にか落ちてるしSSH繋がんなくなったら

Last updated at Posted at 2019-09-27

はじめに

t2.nanoなインスタンスが「なにもしてない」のにヘルスチェックが落ちてSSHでつなげなくなりました。

「なにもしてないのに壊れた」というよりも
「なんにもしてないから壊れた」の方が正しいかもしれません。

貧弱なインスタンスは面倒見てあげる必要があるんですね。

現象

t2.nanoなAmazon Linuxを立ち上げて1週間くらいたったとき、
SSHでインスタンスに接続できなくなり、AWSコンソールで確認するとインスタンスのステータスチェックでエラーが発生していました。

このインスタンスにはアプリケーションなどをほとんど入れていない状態なので、
インストールしたアプリケーションが何か悪さをしたわけではないさそうです。

システムログを見た感じだとsshdがメモリ不足で殺されていたので、それが原因だと考えられます。
(sshdとは、sshで接続を受けるために必要なサーバ側のプログラムです。)

t2.nanoのメモリは0.5GBであり、
普通にしてると空メモリは100MBくらいありますが、
EC2のインスタンスのSSHはブルートフォースアタックを受けるので、それでSSHのメモリ使用量が増えたのかな? と予想。

sshdがkillされてる悲しいログ
[1705026.349903] Out of memory: Kill process 11606 (sshd) score 3 or sacrifice child

そんなわけで、再発防止案としては以下の4つを思いつきました。

  • スワップ領域を追加し、メモリ不足を緩和する
  • インスタンスタイプを上げる
  • (メモリ使用量増加がSSHブルートフォースアタックが原因だとしたら)SSHのポートを変更する
  • IPアドレス制限をする

など考えられましたが、基本的なところとして、スワップ追加を実施しました。
お金に余裕があるなら、インスタンスタイプをあげればいいと思います。

スワップ追加で本当にsshdが落ちないか、(それによってヘルスチェックが落ちないか)は、まだ未検証です。

まあ、設定してから4日くらい経ってますが、いまのところは大丈夫なかんじです。

システムログの見方

あれ?なんかSSH繋がんないし、インスタンスのステータスチェックでエラーになってるなと思ったら、システムログを見ましょう

スクリーンショット 2019-09-27 15.29.02.png

[1705026.349903] Out of memory: Kill process 11606 (sshd) score 3 or sacrifice child

こんなエラーがあれば、それはsshdがシステムによってkillされてます。

設定の仕方

AWSのリファレンスを参考に設定しました。
https://aws.amazon.com/jp/premiumsupport/knowledge-center/ec2-memory-swap-file/

EC2のインスタンスにログインする

SSH繋がんない状態だとSSHでログインできないので、
インスタンスの再起動をしましょう。多分、SSHできるようになります。
再起動してSSHが繋がらないようであれば、きっとメモリ不足とかではなく別の問題です。

SWAP領域を作成する

スワップ領域のサイズですが、もとのメモリ容量が0.5GBなので、
1GB程度あれば十分かなと思います。

dd コマンドを使用してルートファイルシステムにスワップファイルを作成します。

「bs」はブロックサイズ、「count」はブロック数です。この例で、スワップファイルは 1 GB です。

$ sudo dd if=/dev/zero of=/swapfile bs=100MB count=10

※bsがデカすぎるとメモリ不足になるので、メモリ不足なら、bsを小さくしてcountの数を増やしましょう

スワップファイルの読み書きのアクセス許可を更新します。

$ chmod 600 /swapfile

Linux スワップ領域のセットアップ:

$ mkswap /swapfile

スワップ領域にスワップファイルを追加して、スワップファイルを即座に使用できるようにします。

$ swapon /swapfile

手順が正常に完了したことを確認します。

$ swapon -s

こんな感じに表示されるはず

ファイル名				タイプ		サイズ	使用済み	優先順位
/swapfile                              	file    	976556	512	-2

/etc/fstab ファイルを編集して、起動時にスワップファイルを有効にします。

$ vi /etc/fstab
$ /swapfile swap swap defaults 0 0

メモリが増えてることを確認する。

$ free -h

-h はちょうどいい感じで数字の表示をギガとかメガとかにしてくれるオプション

              total        used        free      shared  buff/cache   available
Mem:           479M         56M        100M        144K        322M        398M
Swap:          953M        512K        953M

はい、Swapに953MB追加されてますね。
なぜ1000MBじゃないかって?
たぶんメガバイト表示であってメビバイト表示ではないからです。

まとめ

t2.nanoなインスタンスのステータスチェックがいつの間にか落ちてるしSSHが繋がらなかったら

システムログみてメモリ不足が発生していることを確認して

もしそうだったら

スワップ領域を追加する。

以上です。

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?