T2.microからT3.nanoに変更(メモリエラーも対応)
このブログのEC2インスタンスをT2.micro 1インスタンスからT3.nano 2インスタンスに変更します。
1ヶ月ほど様子を見て問題なければリザーブドインスタンスT3.micro 1インスタンス分で購入する予定です。
目次
理由
1インスタンスで十分なのですが、このブログの環境は検証も兼ねているので、Well-Architectedな設計にしようと。
先日のAZ障害もあったことですし。
そしてメモリも余裕っぽいのでnanoにしてみます。
T2からT3への移行
山ほどブログ記事がありますが、せっかくなので書き残します。
まず現行のEC2の最新AMIを作成。
VPCは東京リージョンで3AZ構成でパブリックサブネットとプライベートサブネットで作成
AMIを元にEC2インスタンスをt2.nanoでパブリックサブネットでパブリックIPを有効にして起動。
セキュリティグループはひとまず80のみ。
IAMロールは本番と同じCloudWatchLogs、メトリクス、SystemsManager関連のポリシーがアタッチされているものを使用。
T2/T3 Unlimitedは有効。
このAMIにはSystemsManagerエージェントがインストール済なので、セッションマネージャからターミナル操作。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
sh-4.2$ modinfo ena filename: /lib/modules/4.14.77-70.59.amzn1.x86_64/kernel/drivers/amazon/net/ena/ena.ko version: 2.0.2g license: GPL description: Elastic Network Adapter (ENA) author: Amazon.com, Inc. or its affiliates srcversion: DF971F3B33F323495F5FAC6 alias: pci:v00001D0Fd0000EC21sv*sd*bc*sc*i* alias: pci:v00001D0Fd0000EC20sv*sd*bc*sc*i* alias: pci:v00001D0Fd00001EC2sv*sd*bc*sc*i* alias: pci:v00001D0Fd00000EC2sv*sd*bc*sc*i* depends: retpoline: Y intree: Y name: ena vermagic: 4.14.77-70.59.amzn1.x86_64 SMP mod_unload modversions parm: debug:Debug level (0=none,...,16=all) (int) parm: rx_queue_size:Rx queue size. The size should be a power of 2. Max value is 8K (int) |
enaモジュールはインストール済でした。
せっかくなので、yum updateしておこうと思ったらMemoryErrorになりました。
T2.nanoで設定をすすめるのは無理がありますか。
一回、停止して、T2.microに変更。
1 2 |
$ sudo yum update -y |
はい。うまく行きました。
ユーザーデータにyum update 書こうと思ってたのですが、nanoだと無理そうですね。
定期的にゴールデンイメージなAMIを作ることにして、いったんあきらめようかと思ったら、仮想メモリを増やして対応しておられた方が。
こちらを参考にやってみました。
yum update で [Errno 5] [Errno 12] Cannot allocate memory
まずnanoに戻してエラーが出るとこから確認しようと思ったら、Updateしちゃったんでエラーが出なくなっちゃいました。
仕方ないので、AMIから起動してやり直します。
yum updateでMemoryErrorを確認。よし。
1 2 3 4 5 6 7 |
sh-4.2$ sudo fallocate -l 512M /swapfile sh-4.2$ sudo chmod 600 /swapfile sh-4.2$ sudo mkswap /swapfile Setting up swapspace version 1, size = 524284 KiB no label, UUID=a95ead83-e68c-4ec5-a0e0-41e34b8f3e66 sh-4.2$ sudo swapon /swapfile |
エラーなくyum updateがComplete!
これでユーザーデータにyum update -y がかける。
一応、 cloud-init-output.log ログもCloudWatch Logsに出力してメトリクスフィルタで”MemoryError”を検知するようにしておきましょう。
次のENAサポートを有効化にするコマンドはCLIで実行します。
1 2 |
$ aws ec2 modify-instance-attribute --instance-id i-xxxxxxxxxxxx --ena-support --region ap-northeast-1 |
インスタンスをT3.nanoに変更して起動しました。
セッションマネージャからアクセスするとエラー???
「セッションは次の理由で終了しました。document process failed unexpectedly: document worker timed out , check [ssm-document-worker]/[ssm-session-worker] log for crash reason」
なので、SSMのログを確認。
2019-08-31 15:19:48 ERROR [ssm-session-worker] [yamashita-0bd7790b0f2e840bc] [DataBackend] [pluginName=Standard_Stream] getInteger failed: Offset is invalid.
わからないけど、SSMエージェントが古いのでアップデートしましたら治りました。
SSMエージェントをアップデートするときに仮想メモリを増やしたのでメモリが足りなかったのかもしれませんが。
それでもSSMエージェントは最新のものを使いましょう。
ちなみにアップデートはSystemsManagerランコマンドからAWS-UpdateSSMAgentを実行しました。
(nanoだとメモリ不足で失敗するので、仮想メモリを増やしてから実行)
セッションマネージャから無事ターミナルでENAが使用されていることを確認。
1 2 3 4 5 6 7 8 9 10 11 |
$ ethtool -I eth0 driver: ena version: 2.1.1g firmware-version: bus-info: 0000:00:05.0 supports-statistics: yes supports-test: no supports-eeprom-access: no supports-register-dump: no supports-priv-flags: no |
ここまでやってみてなんなのですが、そういえばこのEC2 Amazon Linuxでした。
きれいなAmazon Linux2でブログのWordPressを作り直すことにします。
最後までお読みいただきましてありがとうございました!
「AWS認定資格試験テキスト&問題集 AWS認定ソリューションアーキテクト - プロフェッショナル 改訂第2版」という本を書きました。
「AWS認定資格試験テキスト AWS認定クラウドプラクティショナー 改訂第3版」という本を書きました。
「ポケットスタディ AWS認定 デベロッパーアソシエイト [DVA-C02対応] 」という本を書きました。
「要点整理から攻略するAWS認定ソリューションアーキテクト-アソシエイト」という本を書きました。
「AWSではじめるLinux入門ガイド」という本を書きました。
開発ベンダー5年、ユーザ企業システム部門通算9年、ITインストラクター5年目でプロトタイプビルダーもやりだしたSoftware Engineerです。
質問はコメントかSNSなどからお気軽にどうぞ。
出来る限りなるべく答えます。
このブログの内容/発言の一切は個人の見解であり、所属する組織とは関係ありません。
このブログは経験したことなどの共有を目的としており、手順や結果などを保証するものではありません。
ご参考にされる際は、読者様自身のご判断にてご対応をお願いいたします。
また、勉強会やイベントのレポートは自分が気になったことをメモしたり、聞いて思ったことを書いていますので、登壇者の意見や発表内容ではありません。
ad
ad
関連記事
-
AWS Service Catalogポートフォリオを他のアカウントと共有する
AWS Service Catalogチュートリアルで作成したポートフォリオの他 …
-
Systems Manager セッションマネージャアクセスのCloud9(SSHなし)
作成画面 いつからできるようになっていたのか気づいてなかったのですが、Cloud …
-
Amazon S3アクセスポイント経由からアクション可能なポリシー
S3アクセスポイントを使うことで、複雑で長いバケットポリシーを避け、アクセスポイ …
-
AWS Summit 2016 Tokyoに参加してきました (Day3)
飛天3日目です。 JAWS-UGブースのすぐ前にあったこのお水がめちゃめちゃおい …
-
ヤマムギ vol.24 API GatewayでREST API作成と直接DynamoDB登録のデモをしました
2週間ぶりのヤマムギ勉強会デモなのでなんだか久しぶりな気がしました。 今日はポケ …
-
Extend Switch Roles(Chromeのアドオン)で6つ以上のスイッチロール履歴
最近アカウントIDを忘れたりすることも多くなったので、切り替えに手間取ることがあ …
-
Amazon CloudSearchからAmazon Elasticsearch Serviceへ変えました
全文検索をする必要がありまして、本当はCloudSearchを使い続けたいのです …
-
Amazon S3オブジェクトロック
S3のオブジェクトロックを確認しました。 オブジェクトロックの有効化 現在、既存 …
-
AWS Systems Manager Session Managerでログを有効にする
AWS Systems Manager Session Managerでのコマン …
-
AWSアカウント内のLambda関数を削除するLambda(Python)
やりたいこと 特定のAWSアカウントの特定リージョンのAWS Lambda関数を …