
Azure StackのUpdateの仕組みについて #azurestack #azurestackjp
Ignite 2018で参加した下記のセッション内で解説されていたUpdateの仕組みについてまとめておきます。Azure Stackの信頼性の根幹がここにあり、私はこの仕組が素晴らしいと思うのです。
元ネタは以下です。
このエントリ内の画像等も全て上記からの引用です。
まず前提としてAzure StackではUpdateはほぼ毎月出てきますし、最新から2つ前までしかサポートされません。Updateは当て続けることがそもそもの前提です。構築後に全くUpdateを当てずにおいておくような運用はそもそもできないと考える必要があります。これはセキュリティ上大変望ましいことですし、一度Azure Stackにしてしまえば「アップデートができない!」「EOS問題どうしよう」というようなことにはそもそもならないわけです。(基盤に関して)
でも、その毎月に近い速度で出てくるUpdateは安定したものでないと困りますよね?そこでUpdateをどうやって作って、どうやってテストして顧客に出しているか、ということを解説したのが下記のスライドです。
- Windows Serverの毎月のKBを元にパッケージを作り、開発者の環境でUpdateパッケージをビルドし、4ノードの環境でバグだしをしながらパッケージを展開、確認する。
- できたものを100セットのマルチノード環境に展開して、確認、バグだしをする。
- 2の工程で安定したものをハードウェアベンダーに提供し、それぞれのOEMベンダーの環境で展開、確認、バグだしする。
- 長期間可動し続け、Updateを適用し続ける10のマルチノード環境に展開、確認、バグだしする。
- 全ての工程でバグを出し、テストを繰り返し、安定したものを顧客に提供する。
かなりの規模でテストが行われていることがわかりますね。このスライドには明記されていませんが、もちろん顧客の環境でも万が一問題があればUpdate自体が更新されます。
さらに、実際のUpdate時の挙動を説明もありました。
まず、Updateのフェーズ1では必要なものをダウンロードするのですが、このフェーズのポイントはAzure Stackのソフトウェアと共に、ホストOSはイメージが取得されている点です。そう、Azure StackのNodeに関しては「パッチを当てる」ではなく、イメージを差し替えているんです。
Azure StackのNodeはVHDブートをしているわけです。Update前はUpdate前の現在のVHDから各Nodeが起動しています。その上でAzure Stackのソフトウェア(青)とテナントのVM(緑)が稼働しています。
新しいVHDを全てのNodeに配置します。
そして、Nodeがドレインされ、Node上で動いていた仮想マシンは別のNodeのLive Migrationされます。この時移動されるVMにダウンタイムはほぼありません。
そしてドレインされたNodeのブートするVHDが新しいものになります。
そしてその新しいVHDからブートしたシステムに対してコンフィグが適用されます。(※裏ではPowerShell DSCが使われています。)
これを全Node繰り返します。
次にイメージベースのUpdateAzure Stackのソフトウェアにも適用します。
適用時間は20時間以上かかります。
このような仕組みになっています。
はっきり言ってAzure Stackの本体は毎月のUpdateでほぼ全部イメージベースで入れ替わっているわけです。Azure Stackはハードウェアに関しても細かく規定がありアプライアンスとなっており、それをイメージベースで更新している、ということは全世界で「同じ」環境が再現されているわけであり、だからこそAzureとの一貫性も保たれるし、Azure Stack間での一貫性も保たれるわけですね。
この仕組ってインフラエンジニアなら誰しもが考えるけれども諦めるような壮大な仕組みだよなと私は思うんです。事前に大規模に自動的にテストしながらイメージベースで環境を入れ替えてしまう。そうすれば環境の有無に悩まされることもなく全部で同じことができます。SIerのインフラエンジニアなら「全案件に横展開できるイメージを作成してそれを展開しまくれば環境構築OKにしてしまいたい」って思ったことあると思うんですよね。Azure Stackではそれが実現されてます。すごいです。
で、この仕組なら、本当は累積的なUpdate適用が可能なんじゃないの?と私は思います。だってイメージベースで全部入れ替えちゃってるんですよね?ほとんど?きっと今はなにか事情があってまだできていないのだとは思いますが、将来的にはある程度Updateを飛び越えてのUpdate適用が可能になる気もします。毎月の機能的なバージョンアップと持っているデータの整合性等の話もあると思うので難しいところもあるとは思いますが。
そして、私が言いたいのは「やればやるほど品質が上がる仕組みになっている」ということです。このUpdateの仕組み自体もより洗練されていくでしょうし、Updateが出てきたら気軽に当てることが当たり前になるITの世界に早くなればいいのになと思います。Azure Stackは間違いなくそこに一番近いシステムだと思います。