クラスタ検証に失敗する ポート3343でUDPを使用して到達できない

事象 Azure Stack HCI OSでクラスタを作成中にクラスター検証に失敗する事象に遭遇しました。 ネットワークインターフェイス node1.hci.local - Management と node2.hci.local - Management が同じクラスターネットワーク上にありますが、ポート 3343 で UDP を使用して xxx.xxx.xxx.xxx からアドレス xxx.xxx.xxx.xxx に到達できません。 ですが、ネットワーク的に本当にブロックしているわけでもなく原因がわかりませんでした。切り分けのためにFirewallもすべて無効化しましたが効果なし。 そもそもクラスタにするような環境ではUDP 3343で待ち受けているプロセスがあるのかと思いましたが、ほかのクラスタの検証に成功する環境で確認したところそのようなプロセスはありませんでした。テスト実行中に動的に作成されるプロセスで通信確認しているようです。 逆に何かほかのプロセスが待ち受けでUDP 3343を使ってしまっているわけではないことも、netstat -ano で確認しました。 本当にUDP 3343で通信できるかどうかの確認 本当にUDP 3343で通信ができるかどうかを確認しました。いつもUDPでの疎通確認方法には困っていたのですが、今回下記のPowerShellを発見しました。手軽でとても便利ですね。 https://cloudbrothers.info/en/test-udp-connection-powershell/ こちらのスクリプトを使って実際にUDP 3343で通信できることを確認しました。何も問題ありません。ということで、おそらくこのエラーが出るのはバグっぽいなぁと思います。 ネット上の情報 ネットで検索すると結構UDP 3343で通信できないことが原因でクラスタの検証に失敗している例はあるようです。 https://docs.microsoft.com/en-us/answers/questions/249241/cluster-network-validation-fail-udp-port-3343.html でも、今回は該当しませんでした。 回避 ちょっと回避策がわかりませんでした。仕方がないのでAzure Stack HCI OSの英語版をノードにインストールしなおして、再実行したところすんなりと検証に成功してしまいました。 もともとの事象が発生していた環境は日本語版のAzure Stack HCI OSを使っていました。ですので、日本語版のAzure Stack HCI OSにはクラスタの検証に失敗するバグがある…。のかもしれません。 ただし、別環境では日本語版Azure Stack HCI OSでうまく成功しているケースもありますし、ネット上の情報では英語版のWindows Serverでの事例もあるし、はっきりとしたことはわかりません。 とりあえず、このエラーが出てしまったら、そのまま問題を深堀りするよりはOS自体を入れなおしたりしてしまったりしながら再構築してしまったほうが早そうな印象です。何かしら複雑な問題再現手順があるものと思います。ただ、基本的には検証プログラム自体が抱えている問題(バグ)があるものと推測します。 解決策が提示できず申し訳ないですが、参考にしてもらえればと思います。 2021/10/19追記 Microsoft MVP仲間の話によると、ほかの環境でも同じ問題が発生しているようです。 私の遭遇した環境ではIntel X722 NICを使っていたのですが、「Intel NICの問題ではないか?」という推測が上がっています。回避策としてはIntel NICを無効化する、という方法が有効だったという報告があります。 ...

October 18, 2021 · 1 min · 胡田昌彦

記憶域スペースダイレクト(S2D)をスイッチ無しで3ノードで構成

今日は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](https://lenovopress.com/lp0064.pdf) 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 https://platform.twitter.com/widgets.js で、繰り返しになりますがこのガイドではこのときにNode1-Node2, Node1-Node3, Node2-Node3のそれぞれの接続に対して同じネットワークに構成すべきなのか異なるネットワークにすべきなのかの指定はありません。どうやってもうまく動いちゃうからなんですね。 よく考えると、上の図でCorpNetと書かれている方でもサーバー同士は繋がっています。複数のNICがあり、複数の接続パターンがある状況で適切にすべてのパスを使っていい感じに帯域を稼いでくれる「SMBマルチチャネル」という仕組みがあって、全部いい感じに自動でしてくれちゃいます。 - [簡略化された SMB マルチチャネルと複数 NIC のクラスター ネットワーク | Microsoft Docs](https://docs.microsoft.com/ja-jp/windows-server/failover-clustering/smb-multichannel) この機能かなり昔からあるのですが、いまいち活用されてなかったような気がしていたのですが、クラスタ周りでは大活躍です。 ...

January 7, 2020 · 1 min · 胡田昌彦