今日はLenovoさん(Lenovo Enterprise Solutionsさん)のラボと機材をお借りして、Azure Stack HCI、別の言い方をするとS2D(Storage Spaces Direct = 記憶域スペースダイレクト)のスイッチなしでの3ノード構成の構築、テストをさせてもらいました。いつもありがとうございます!
S2Dは2ノードから構成できる、さらにスイッチが無しでも直接サーバー同士を接続することで構成ができるということで非常に小さくはじめられる素敵なHCIです。もちろんスイッチ経由で接続すれば2ノードから16ノードまで構成できるわけなのですが、コストを抑えつつもノード数も増やしたい!という声に答えて(※筆者の予想)、正式に3ノード構成をスイッチ無しで構成することもサポートされました。
2ノードであれば直接クロスさせるのだろうなと直感的にわかりますが、3ノードだとどうやって接続するのでしょうね?それに対する非常にわかりやすいガイドがLenovoさんから出ています。
Microsoft Storage Spaces Direct (S2D) Deployment Guideより引用
上記の図のように2ノードでスイッチ無しの場合にはストレージ用のネットワークを独立させて直結させます。
以前のガイドではこのときにストレージ用のNICをSETでチーミングすべきなのか、すべきではないのか、しないとすればセグメントは分けるべきなのか、同じでいいのか?など曖昧な書き方だったのですが、ガイドもバージョンが上がってこの点明確になっています。
- ノード間を直結させる場合にはストレージ用のNICはSETを組まない
- 2対のNICのネットワークセグメントは同じでも異なっても良い
ということが明記されています。
Microsoft Storage Spaces Direct (S2D) Deployment Guideより引用
そして、このコンセプトは3ノードでも同じです。あとは単純に結線の仕方が違うだけです。
Microsoft Storage Spaces Direct (S2D) Deployment Guideより引用
Node1, Node2, Node3がそれぞれ直接繋がる形になっているわけですね。実際に実機でやってみましたよ!
かなりわかりにくいですが、3台のサーバーそれぞれを直接接続してます。これで3ノードのS2Dがスイッチ無しで組めます。 pic.twitter.com/8CAGnKPKmo
— Masahiko Ebisuda (@ebi) January 7, 2020
で、繰り返しになりますがこのガイドではこのときにNode1-Node2, Node1-Node3, Node2-Node3のそれぞれの接続に対して同じネットワークに構成すべきなのか異なるネットワークにすべきなのかの指定はありません。どうやってもうまく動いちゃうからなんですね。
よく考えると、上の図でCorpNetと書かれている方でもサーバー同士は繋がっています。複数のNICがあり、複数の接続パターンがある状況で適切にすべてのパスを使っていい感じに帯域を稼いでくれる「SMBマルチチャネル」という仕組みがあって、全部いい感じに自動でしてくれちゃいます。
この機能かなり昔からあるのですが、いまいち活用されてなかったような気がしていたのですが、クラスタ周りでは大活躍です。
さらに、IPv6なんかもなんとなく無効にしている人、組織も多いと思うのですが、IPv6も有効に使ってくれますので無効化しないほうが良いです。(実験済み)
というわけで、あとはガイドどおりにコマンド打っていけば簡単に3ノードでのS2D構成ができちゃいました。特にトラブルらしいトラブルも無しでした。素晴らしいLenovoさんのガイドとWindows Server 2019の安定度、良いです。
そして、障害テストもしてみましたが、どのパターンも「こう動くんだよね?」という通りに動いてくれたので良かったです。で、よく考えたら当たり前なんだけどSANの感覚で考えてるとちょっとびっくりするのが以下のパターン。
3ノードでVMが稼働しているホストからストレージ用のネットワークが2つ失われてもまだVMが稼働し続けるの、考えたら当たり前なんだけど、結構すごいな。 pic.twitter.com/8vp7jEaXtU
— Masahiko Ebisuda (@ebi) January 7, 2020
ストレージ用のNICが2つ死んでもちゃんと動き続けるってのはちょっと新しい感覚ですよね。
ちなみに、3ノードで3way Mirrorで構成していると、1ノードのディスクがOS以外全部死んでもクラスタ自体も「S2Dのディスクが全部死んだノード上で動いているVMも」稼働し続けます。使えるCPUがあって、ストレージもネットワーク越しにアクセスできるから動いて当たり前なんですけど、ちょっと不思議な感じがします。しかも結構悪くないパフォーマンスで動き続けます。RDMAバンザイ!という感じですね。
というわけで、今日はスイッチなしのS2D3ノード構成が簡単に動いてよかったです。
仕組み上、スイッチ無しの2ノードで使い始めて、リソースが足りなくなったらサーバーノードを1台買い足してスイッチ無しの3ノードにスケールアウトすることもそれなりにスムーズにできます。構成途中でパフォーマンスは落ちてしまいますが、ダウンタイムはゼロでいけます。Azure Stack HCI、S2D、素敵ですね。
コメント