AWS Nitro System による旧世代のインスタンスのサポートが本格的に始まりそうです

旧世代のインスタンスを使っていてメンテナンス通知を受け取ったあなた、Xen on Nitro への移行かも知れませんよ。

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

コンバンハ、千葉(幸)です。

re:Invent 2021 で発表のあった「AWS Nitro System による旧世代のインスタンスのサポート」について、改めてアナウンスがありました。

Customers of previous generation instances will experience a seamless transition to AWS Nitro System with the instance characteristics, feature sets, and workflows remaining the same. The first wave of previous generation instances we are enabling on Nitro include M3, M2, and M1 (in 2022).

てっきり 2022 年の初めには始まっていたのかと思っていたのですが、このタイミングでアナウンスがあったということは本格稼働はこれから、ということなのかもしれません。

まとめ

  • AWS Nitro System による旧世代のインスタンスのサポートとは Xen のエミュレートによりインスタンスタイプを維持したままハードウェアの置き換えに対応すること(Xen on Nitro)
  • EC2 インスタンス上の OS、ドライバ、アプリケーションから見て Xen on Nitro であるかどうかは透過的(意識する必要がない)
  • 通常のメンテナンスプロセスと同様に 2 週間前に通知が来るため、再起動を行うことでシームレスに移行が行われる
  • 第1波として 2022 年に M1、M2、M3 ファミリーに対するサポートが行われる

わたしが実際にメンテナンス通知を受けとっていないので何とも言えませんが、カスタマーの目線だと旧世代のインスタンスが Xen on Nitro で稼働しているのかどうかを知る術はない気がしています。

仮想化アーキテクチャの新旧

2022/11/18 に AWS Nitro System に関するホワイトペーパーが公開されました。こちらの内容から仮想化アーキテクチャをおさらいしましょう。

従来の仮想化アーキテクチャのイメージは以下です。

Nitro_virtualization-architecture

(上述のホワイトペーパーより画像を引用)

  • Hypervisor 上で Dom0 と呼ばれる管理用の VM が起動され、それが各 VM の ネットワーク、ストレージ、セキュリティといったコントロールを行う
  • Hypervisor も含めすべてがホストサーバ上でソフトウェアとして実現
  • 旧世代のインスタンスタイプでは Hypevisor として Xen が採用

このアーキテクチャでは Dom0 が存在していることによりリソース効率の観点、セキュリティの観点から課題がありました。

Dom0 が担っていた各種機能は段階的に専用のハードウェアにオフロードされ、2017 年の AWS Nytro System の正式リリースの段階ではこういったアーキテクチャに置き換わりました。

nitro-system-architecture (画像引用元同上)

  • 各種機能は専用のハードウェア(Nitro カード)にオフロードされ、VM とは PCIe バス経由で接続
  • ハイパーバイザーは軽量な Nitro Hypervisor に置き換え

AWS Nitro System の登場により、パフォーマンス、セキュリティ、イノベーションの向上がもたらされました。

Xen on Nitro とはこういうこと?

Xen on Nitro のアーキテクチャも載っていると嬉しかったのですが、残念ながらホワイトペーパーには載っていませんでした。

分かっている情報としては以下があります。

  • Nitro Hypervisor 上で Xen がエミュレートされる
  • Nitro システムにインターフェースとして機能するレイヤが追加され、OS やドライバからは従来と同じように見える

それを当てはめるとこういったことかな?と想像しています。正しさは保障できないので、イメージを補助するものとしてお使いください。

Nitro_System (ホワイトペーパーの画像を一部加工して作成)

AWS Nitro System による旧世代のインスタンスのサポート

Re:Invent 2021 のセッションで AWS Nitro System による旧世代のインスタンスのサポートについて取り上げられていました。そのセッションレポートより該当部をかいつまんでご紹介します。

ハードウェアより長生きするインスタンス

  • 旧世代のインスタンスは引き続き多くのカスタマーに利用されている
  • 数百万のインスタンスが Xen ハイパーバイザーと EOL のハードウェア上で稼働している
  • M1.small は 2006年8月にローンチされ、それ以降もさまざまな種類が発表された

旧世代のインスタンスへの対応

  • ハードウェアの老朽化、EOLを迎える問題がある
  • 製造ラインが存在せず交換用のチップを用意できないものもある
  • EC2 はカスタマーにインスタンスタイプの移行を強制したくない

Nitro_Addressing_previous_generation_instances

古いインスタンスへの革命的なソリューション

  • Nitro ハイパーバイザー上で Xen をエミュレート
  • Nitro システムにインターフェースとして機能するレイヤを追加し、OS やドライバからは従来と同じように見える
  • カスタマーは再起動するのみでよく、アップグレードは必要ない

Nitro_Innovative_solutuon_for_older_instances

Xen on Nitro のカスタマーへのメリット

  • セキュリティ
    • 強力な分離とセキュリティアップデートを Nitro に収斂
  • 安定性
    • 新しいコンポーネントによるハードウェアのリフレッシュ
    • メンテナンス頻度の軽減

Nitro が簡単にモジュール化でき、簡単にセキュリティ確保できるよう設計されていたため Xen on Nitro に舵を切ったとのこと。Xen と Nitro は同じセキュリティレベルをセットしているものの、Nitro の方がよりモダンでセキュリティレベルを保ちながらイノベーションを起こすことが容易である、とのことです。

新しいハードウェアへの移行

  • 標準的なメンテナンスプロセス同様に、再起動スケジュールの2週間前に通知を行う
  • Xen on Nitro への移行が一度で済むようにしており、一つのインスタンスで複数のメンテナンスは発生しない

Nitro_Migration_to_new_hardware

Nitro System による旧世代のサポートについてよくある質問

Amazon EC2 のよくある質問のページにまとまっていました。

大事なところをピックアップしておきます。

Q. 旧世代のインスタンス向けの Nitro System サポートとはどのようなものですか?

AWS Nitro System は、基盤となるハードウェアの通常のライフタイムを超えてサービスを延長するために、前世代の EC2 インスタンス向けに最新のハードウェアおよびソフトウェアコンポーネントを提供するようになりました。Nitro System のサポートにより、お客様は、ワークロードとアプリケーションを、それらが構築されたインスタンスファミリーで、引き続き実行できます。

必要となるアクションについて。

Q.既存の前世代のインスタンスを移行するには、どのようなアクションを実行する必要がありますか?

旧世代のハードウェアで実行されているアクティブな前世代のインスタンスを移行するために、お客様側で必要なアクションはありません。古い世代のハードウェア上にあるインスタンスについては、インスタンスにマッピングされたお客様の各アカウント ID に対して、スケジュールされたメンテナンスの 2 週間前に E メール通知が送信されます。

通常のメンテナンスイベントと同様に、お客様は、元のスケジュールされたメンテナンス時間からさらに 2 週間の期間内に、必要な回数だけメンテナンスを再スケジュールできます。

基本的には通常のメンテナンスと同じように対応すれば特に意識せずとも移行してくれそうです。メンテナンス前後でそれが Xen on Nitro に関わるものなのか分かるか、という情報は確認できませんでした。

その他のよくある質問はページをご確認ください。

AWS Nitro System 上に構築されたインスタンスとの違い

「AWS Nitro System にサポートされた旧世代のインスタンス」と「AWS Nitro System 上に構築されたインスタンス」は分けて考えた方が良さそうです。

後者に関しては以下ページにまとまっています。

ここで羅列されているインスタンスファミリーには旧世代のものは含まれていません。

EC2 関連の機能には「AWS Nitro System 上に構築されたインスタンス」であることが前提であるものがあります。

(例:Amazon EBS マルチアタッチを使用した複数のインスタンスへのボリュームのアタッチ - Amazon Elastic Compute Cloud

マルチアタッチが有効なボリュームは、同じアベイラビリティーゾーンにある Nitro Systemで構築された最大 16 の Linux インスタンスにアタッチできます。

ネイティブに Nitro System で構築されたインスタンスと、Nitro System によってエミュレートされたハイバーバイザー上で稼働するインスタンスではできることに差が出ると考える方が自然です。

今後このあたりの記述が変わる可能性も考えられますが、各種機能の制約事項は特に意識して読むようにするとよいでしょう。

終わりに

AWS Nitro System による旧世代のインスタンスのサポートが本格的に始まりそう、というアナウンスでした。

なにぶんカスタマー側では詳細を把握できない部分なので全体的に歯切れが悪い書き方になってしまいました。言い換えるとカスタマーはあまり深く気にしなくても裏側でいい感じに日夜アップデートをかけてくれている、ということでもあります。

旧世代のインスタンスを利用されていてメンテナンス通知を受け取った方は、「これもしや例のやつか?」と考えると楽しいかも知れません。(でもなるべく余裕を見つけて最新世代へのアップデートを行うことをお勧めします。)

以上、 チバユキ (@batchicchi) がお送りしました。

参考