Azure StackのUpdateの仕組みについて #azurestack #azurestackjp

Ignite 2018で参加した下記のセッション内で解説されていたUpdateの仕組みについてまとめておきます。Azure Stackの信頼性の根幹がここにあり、私はこの仕組が素晴らしいと思うのです。

元ネタは以下です。

このエントリ内の画像等も全て上記からの引用です。

まず前提としてAzure StackではUpdateはほぼ毎月出てきますし、最新から2つ前までしかサポートされません。Updateは当て続けることがそもそもの前提です。構築後に全くUpdateを当てずにおいておくような運用はそもそもできないと考える必要があります。これはセキュリティ上大変望ましいことですし、一度Azure Stackにしてしまえば「アップデートができない!」「EOS問題どうしよう」というようなことにはそもそもならないわけです。(基盤に関して)

image

でも、その毎月に近い速度で出てくるUpdateは安定したものでないと困りますよね?そこでUpdateをどうやって作って、どうやってテストして顧客に出しているか、ということを解説したのが下記のスライドです。

image

  1. Windows Serverの毎月のKBを元にパッケージを作り、開発者の環境でUpdateパッケージをビルドし、4ノードの環境でバグだしをしながらパッケージを展開、確認する。
  2. できたものを100セットのマルチノード環境に展開して、確認、バグだしをする。
  3. 2の工程で安定したものをハードウェアベンダーに提供し、それぞれのOEMベンダーの環境で展開、確認、バグだしする。
  4. 長期間可動し続け、Updateを適用し続ける10のマルチノード環境に展開、確認、バグだしする。
  5. 全ての工程でバグを出し、テストを繰り返し、安定したものを顧客に提供する。

かなりの規模でテストが行われていることがわかりますね。このスライドには明記されていませんが、もちろん顧客の環境でも万が一問題があればUpdate自体が更新されます。

さらに、実際のUpdate時の挙動を説明もありました。

image

まず、Updateのフェーズ1では必要なものをダウンロードするのですが、このフェーズのポイントはAzure Stackのソフトウェアと共に、ホストOSはイメージが取得されている点です。そう、Azure StackのNodeに関しては「パッチを当てる」ではなく、イメージを差し替えているんです。

image

Azure StackのNodeはVHDブートをしているわけです。Update前はUpdate前の現在のVHDから各Nodeが起動しています。その上でAzure Stackのソフトウェア(青)とテナントのVM(緑)が稼働しています。

image

新しいVHDを全てのNodeに配置します。

image

そして、Nodeがドレインされ、Node上で動いていた仮想マシンは別のNodeのLive Migrationされます。この時移動されるVMにダウンタイムはほぼありません。

image

そしてドレインされたNodeのブートするVHDが新しいものになります。

image

そしてその新しいVHDからブートしたシステムに対してコンフィグが適用されます。(※裏ではPowerShell DSCが使われています。)

image

これを全Node繰り返します。

image

次にイメージベースのUpdateAzure Stackのソフトウェアにも適用します。

image

適用時間は20時間以上かかります。

このような仕組みになっています。

はっきり言ってAzure Stackの本体は毎月のUpdateでほぼ全部イメージベースで入れ替わっているわけです。Azure Stackはハードウェアに関しても細かく規定がありアプライアンスとなっており、それをイメージベースで更新している、ということは全世界で「同じ」環境が再現されているわけであり、だからこそAzureとの一貫性も保たれるし、Azure Stack間での一貫性も保たれるわけですね。

この仕組ってインフラエンジニアなら誰しもが考えるけれども諦めるような壮大な仕組みだよなと私は思うんです。事前に大規模に自動的にテストしながらイメージベースで環境を入れ替えてしまう。そうすれば環境の有無に悩まされることもなく全部で同じことができます。SIerのインフラエンジニアなら「全案件に横展開できるイメージを作成してそれを展開しまくれば環境構築OKにしてしまいたい」って思ったことあると思うんですよね。Azure Stackではそれが実現されてます。すごいです。

で、この仕組なら、本当は累積的なUpdate適用が可能なんじゃないの?と私は思います。だってイメージベースで全部入れ替えちゃってるんですよね?ほとんど?きっと今はなにか事情があってまだできていないのだとは思いますが、将来的にはある程度Updateを飛び越えてのUpdate適用が可能になる気もします。毎月の機能的なバージョンアップと持っているデータの整合性等の話もあると思うので難しいところもあるとは思いますが。

そして、私が言いたいのは「やればやるほど品質が上がる仕組みになっている」ということです。このUpdateの仕組み自体もより洗練されていくでしょうし、Updateが出てきたら気軽に当てることが当たり前になるITの世界に早くなればいいのになと思います。Azure Stackは間違いなくそこに一番近いシステムだと思います。

子供3人。家族優先。都内SIer勤務。Windows系中心のインフラよりの何でも屋。脱原発。 Microsoft MVP for Cloud and Datacenter Management.

コメントを残す

メールアドレスが公開されることはありません。