[AWS Systems Manager] アクティベーションの終わったRaspberryPiのイメージをコピーして、複数起動した時の挙動を確認してみました
1 はじめに
CX事業本部の平内(SIN)です。
Amazon Systems Managerで、「遠隔地のRaspberryPiを管理すると便利」と言うことで、今回は、アクティベーションが終わったイメージを複製して、同じイメージで複数起動すると、どのような挙動となるかを確認してみました。
長くなりますので、最初に試してみた結果です。
- 起動後、接続可能になるまでの時間
- 電源ONで起動した場合、約5分後に接続される
- リブートの場合、直ちに、接続される
- アクティベーションが済んだイメージを複製
- 1台だけ起動する場合、どちらでも接続可能
- 複数台起動した場合、後から起動したものが接続される
- 複数台起動した場合、リブートすると、どちらに接続されるかは不定
- 複数台起動した場合、セッションマネージャから再アクティベートすると別のインスタンスとして管理される
※ あくまで、手元で試した結果です。
2 環境
RaspberryPiは、Model 3B
OSは、今年8月の最新版(Raspberry Pi OS (32-bit) Lite) 2020-08-20-raspios-buster-armhf-lite.img を使用しました。
$ cat /proc/cpuinfo | grep Revision Revision : a22082 $ lsb_release -a No LSB modules are available. Distributor ID: Raspbian Description: Raspbian GNU/Linux 10 (buster) Release: 10 Codename: buster $ uname -a Linux raspberrypi 5.4.51-v7+ #1333 SMP Mon Aug 10 16:45:19 BST 2020 armv7l GNU/Linux
3 テストの準備
(1) 1台目アクティベーション
1台目として用意したRaspberryPiは、DHCPで192.168.0.124が割り振られました。
アクティベーションを作成し、このRasberryPiでアクティベートしました。
参考:Step 5: Install SSM エージェント for a hybrid environment (Linux)
mkdir /tmp/ssm sudo curl https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/debian_arm/amazon-ssm-agent.deb -o /tmp/ssm/amazon-ssm-agent.deb sudo dpkg -i /tmp/ssm/amazon-ssm-agent.deb sudo service amazon-ssm-agent stop sudo amazon-ssm-agent -register -code "activation-code" -id "activation-id" -region "region" sudo service amazon-ssm-agent start
起動時に自動的に上がるように /etc/rc.local に起動コマンドを入れました。
#!/bin/sh -e # # rc.local # # Print the IP address _IP=$(hostname -I) || true if [ "$_IP" ]; then printf "My IP address is %s\n" "$_IP" fi sudo service amazon-ssm-agent start exit 0
下記は、再起動して、セッションマネージャーから接続して、IPアドレスを確認している様子です。
(2) 複製
アクティベーションの終わったイメージを複製します。複製に使用したのは、昨日作成したバックアッププログラムです。
(3) 2台目起動
複製したイメージで、2台目のRasPiを起動しました。
コンソールで確認した所、192.168.0.123が割り振られていました。
しばらく(5分以上)してから、コンソールを確認すると、インスタンスのIPアドレスは、192.168.0.123に変わっており、セッションマネージャでの接続も、後から起動したものに接続されるようになりました。
4 オフラインから
後から起動したものが、優先して接続されることを確認するため、両方の電源を断とし、一旦、オフラインとなるようにしました。
今回は、先程と逆に、192.168.0.123の方から順に起動してみます。
- 192.168.0.123を起動
- 1分後に、192.168.0.124を起動
そうすると、最初に起動した時間から、約5分後に192.168.0.123に接続されました。
そして、その1分後、に192.168.0.124に接続が変わりました。
やはり、後から起動すると、それが接続されるようです。
5 電源断
2台とも起動していて、192.168.0.124に接続されている場合、これを電源断すると、直ちに、もう一台に接続可能になりました。
shutdownを入力したセッションは、その時点で利用不能となりますが、もう一度セッションを開始すると、192.168.0.123に接続できました。
6 リブート
2台が起動している状態で、接続中の端末を再起動すると、その動作は、一定ではありませんでした。
(1) パターン1
- 124に接続中
- 124をリブート
- 再起動するまでの間、123に接続
- 再起動後 124に接続が復帰する
(2) パターン2
- 123に接続中
- 123をリブート
- 再起動するまでの間、124に接続
- 123が再起動後も124に接続(123には、接続できなくなった)
7 再アクティベート
以前、確認したとおり、SSM経由でも再アクティベートは可能です。
参考:[AWS Systems Manager] SSM経由のsshで再度アクティベーションするとどうなるのか試してみました
2台が起動している状態で、再アクティベートを行うと、直ちに2つのインスタンスが管理下となりました。
8 最後に
今回は、アクティベーションの済んだRasberryPiイメージを複製して、複数起動し、その挙動を確認してみました。
挙動を上手く捉えれば、アクティベーションの済んだイメージを複製配布して、起動後に、セッションマネージャーからアクティベーションし直して、全てを別インスタンスとして管理状態にできそうです。