Cluster」タグアーカイブ

Cluster 検証~その1

Windows Server 2012 の Cluster 検証を行いました。

まずはインストール編。今回は 5 ノードクラスターの構築をしました。

Cluster

共有ディスクをあらかじめ各ノードに割り当てておきます。そして、役割と機能の追加よりフェールオーバークラスターを追加します。

続きを読む

Windows Server 8 CP Cluster を試す

とうとう出ました!Windows Server 8 CP(ベータ版に相当)をみなさんいろいろと試されていると思います。

そこで、私はWindows Server 8 CP の Cluster を試してみました。今までのClusterでは16ノードまでノードの追加ができましたが、Windows Server 8 では63ノードまでの追加ができるようです。

とりあえず、16ノードの壁を越えられるかの検証として21ノードまで追加してみました!

WS000001

続きを読む

RHSがデフォルトで2つある理由

リソース管理の仕組み

Windows Server 2008 R2 の クラスターにおけるリソース管理の仕組みとしては、上記のようになります。Windows Server 2008 以降に関してはリソース管理の判断において使用していたプログラムの名称が変わって「リソースコントロールマネージャ」となり、ステータスの死活管理においても「リソースホストサブシステム」となりました。

この「リソースホストサブシステム」のファイル名が「rhs.exe」となります。

クラスターの特長として、ノード端末の停止だけではなく、アプリケーションの障害においても冗長性を確保することがあげられます。このアプリケーションの障害における対応を行うのがリソース管理になります。

クラスター対応アプリケーションには、ほとんどの場合MSFC用のリソースDLLが提供されています。このリソースDLLはアプリケーションに対して適切な監視を行うためのプログラムになります。監視手法として「Looks Alive」(5秒)と「IsAlive」(1分)があり、何か障害が起こるとリソースホストサブシステムがリソースコントロールマネージャに情報を渡し、再起動やフェールオーバーするなどの判断を行います。

ここで着目したいのはリソースホストサブシステムになります。

続きを読む

クラスターファイル共有スコーピングに関して

クラスターファイル共有の見え方に関して、MSCS(Windows Server 2003) と MSFC(Windows Server 2008)では見え方が異なります。

以前質問があったので備忘録としてまとめておきます。

まずは、参考情報として

File Share ‘Scoping’ in Windows Server 2008 Failover Clusters
http://blogs.technet.com/b/askcore/archive/2009/01/09/file-share-scoping-in-windows-server-2008-failover-clusters.aspx

スライド1

 

続きを読む

MSFCのディスク

MSFCではGUID パーティション テーブル (GPT)をサポートしています。

GPTを使用することによって、MBRの制限である2Tバイトを超えるパーティションを作成できないという問題をクリアすることになります。

MBRとGPT

MBR GPT
サイズ 2T 18EB
パーティション数 4プライマリ or  3プライマリ+1拡張(任意の数の論理ドライブ) 128
プラットフォームの重要データ 隠しセクタ パーティション
パーティションデータ構造の整合性 なし 冗長プライマリPT
バックアップPT

続きを読む

MSFCのハートビートはUDP

相変わらず、MSFCの仕込みをコツコツと行っています。

さて、そこでこんな文章を見つけました。

フェールオーバー クラスタリング
http://technet.microsoft.com/ja-jp/library/cc725923(WS.10).aspx

***** 以下抜粋 *****

ネットワークのその他の機能強化により信頼性の向上を実現する。
ネットワーク機能の強化により、ネットワーク名と関連 IP アドレスの間の依存関係を細かく調整でき、片方の IP アドレス (両方ではなく) だけで、ネットワーク名が使用できるようになります。
また、各ノードが使用可能であることを確認するために “ハートビート” を送受信するときに、信頼性の低いユーザー ダイアグラム プロトコル (UDP) ではなく、伝送制御プロトコル (TCP) を使用します

***** ここまで *****

え~、Windows Server 2008 からハートビートはTCPに変わったのか?しかし、ネットワークキャプチャをしてみるとハートビートの通信では、UDP のユニキャスト (ポート : 3343) を用いていることが確認できました。

もしかして、TCPにするモードがあって知らないだけ?

しょうがないのでテクニカルサポートに連絡して、調べてもらいました。以下は結果になります。

***** 以下抜粋 *****

[回答]

お問い合わせ頂きました内容について回答致します。
弊社資料および、実機での確認結果を報告致します。
クラスタにノードが参加する際に (Join Process) TCP を使用し、参加後のハートビートの通信では、UDP のユニキャスト (ポート : 3343) を用います。
Technet サイトにつきましては、”Windows Server 2008 Failover Clustering Architecture Overview” に記載されている通り、ハートビートは、UDP (3343) を使用し、クラスタの参加時に TCP を使用することになります。
お寄せ頂いております上記公開情報については、誤解を招く記事となっておりますことを深くお詫び申し上げます。
記事につきましては、担当部署にフィードバックさせて頂きます。

***** ここまで *****

ということで、今まで通りハートビートはUDPを使用することになります。更に、ネットワークにおいて以前はプライベート、パブリック、混合というネットワークが存在していましたが、MSFCでは用語が変わりました。プライベートはノード間の通信に使用し、パブリックはMSCS(Windows Server 2003)でいうところの混合になりますので、クライアントとクラスタ間通信及びノード間通信を行います。

このことから、ハートビートを特定のネットワークでのみ使用したいという設定はできません。利用可能なあらゆるネットワークを使用してハートビートを送りつける仕様になっています。

7月16日修正

そして、今までのクラスタにおける「パブリック(クライアントアクセスのみ)」の設定、つまり、クライアントとのやり取りだけに使用したいという設定はできなくなりました。逆にいうとノード間通信には使用させたくないになります。また、ハートビートに使用されるネットワークに関しては、これは今までと同じで、クラスタで利用可能なすべてのネットワークが使用されます。

私の理解が間違っていました。ハートビートはもとよりクラスタで利用可能なすべてのネットワークが使用されていたんですね。

MSFCの優先所有者と実行可能な所有者の関係

WS000000

クラスタグループにおいて優先する所有者という設定があります。これは主に、フェールオーバー順やフェールバックの戻り先を設定するために使用します。ただし、優先所有者として指定されなかったノードにフェールオーバーしないわけではないことに注意が必要です。

仮に8ノードのクラスタがあったとします。そのうち、NodeA→NodeB→NodeCの順に優先所有者の設定を行います。順にNodeAがダウンするとNodeBへフェールオーバー、NodeBがダウンするとNodeCへフェールオーバー、NodeCがダウンするとランダムなノードへフェールオーバーということになります。

WS000003

実行可能な所有者という設定があります。リソースの詳細なポリシーに存在するものです。これはどのような時に使用するのか?

優先所有者

仮に4ノードクラスタが存在しています。この時NodeDが待機系だとします。いわゆるActive / Active / Active / Passive (AAAP)の構成です。この時はまず優先所有者でNodeAに対してはNodeAとNodeDにチェックを入れます。こうすれば待機系のマシンにフェールオーバーしてくれますね。しかし、この設定だけだと仮にNodeDがダウンすると他のノードにフェールオーバーしてしまいます。そこで「実行可能な所有者」の設定が生きてきます。この「実行可能な所有者」はまさにそのノードでしか実行を許しません。よって確実に待機系ノードでのみ実行させる場合には優先所有者の設定と同時に、実行可能な所有者の設定も行います。

しかし、この設定もNodeDが障害を起こすと困ります。そこで、待機系ノードを複数台用意します。そうすれば、懸念材料が少なくなります。が、ここでまたまた問題が・・・待機系ノードにフェールオーバー後に、他のノードも同じ待機系ノードにフェールオーバーしてくる可能性がありますね。

こんなときは「AntiAffinityClassNames」を使用します。

参考:ホット スペア サポートのための Windows クラスタ グループ構成方法

cluster group “<グループ名>” /prop AntiAffinityClassNames=”<一意の識別名>”

この設定はグループに対して行うもので、AntiAffinityClassNamesに同じ名前がある場合には、それを除く優先所有者の設定が使用されます。ですので仮に、NodeDとNodeEが待機系ノードで、NodeDにグループAがフェールオーバーしてきます。その後グループBがフェールオーバーして来たとします。

グループBの設定は優先所有者がNodeB、NodeD、NodeEの順番で、なおかつ実行可能な所有者も同様です。この場合、まずNodeDに対してフェールオーバーしようとしますが、グループAとグループBに対してAntiAffinityClassNamesに同じ名前を設定してある場合は、NodeDを除外した優先所有者が使用されます(NodeDにグループAがいるため)

よって、優先所有者のNodeEが使用されることになります。

AntiAffinityClassNamesの動作は、絶対ではありません。なぜなら、もし同じ名前しかなかった場合はその中でフェールオーバーします。ですので、この設定は優先所有者の拡張版と捉えることができますね。

あくまでも強制力を持たせるのは、実行可能な所有者の設定になります。

MSFCのサポートノード数

今回はどうでもいいこと?なんですが今度クラスタの講義を担当することになったので仕込中

そこで肝心要のMSFCのサポートノード数を調べるのに手間取ってしまいました

Windows Server 2008 技術仕様では

– Windows Web Server 2008 : 使用不可
– Windows Server 2008 Standard : 使用不可
– Windows Server 2008 Enterprise : 16
– Windows Server 2008 Datacenter : 16
– Windows Server 2008 for Itanium-based Systems : 8

なのですが、とある資料に32ビットは8ノードと書いてあったんです。しかしなかなか裏が取れない

しょうがないので高添さん(MSエバンジェリスト)に聞いちゃいました(笑)

Maximum number of supported nodes in a cluster
http://support.microsoft.com/kb/288778

ばっちり書いてあります

Operating System Number of nodes Storage
Windows NT 4.0 Enterprise Edition
Windows 2000 Advanced Server
Windows 2000 Datacenter Server
Windows Server 2003, Enterprise Edition
Windows Server 2003, Enterprise x64 Edition
Windows Server 2003, Datacenter Edition
Windows Server 2003, Datacenter x64 Edition
1-2 SCSI
Windows NT 4.0 Enterprise Edition
Windows 2000 Advanced Server
1-2 Fibre Channel
Windows 2000 Datacenter Server 1-4 Fibre Channel
Windows Server 2003, Enterprise Edition
Windows Server 2003, Enterprise x64 Edition
Windows Server 2003, Enterprise Edition for Itanium-based Systems
Windows Server 2003, Datacenter Edition
Windows Server 2003, Datacenter x64 Edition
Windows Server 2003, Datacenter Edition for Itanium-based Systems
Windows Server 2008, Enterprise Edition
Windows Server 2008, Enterprise Edition for Itanium-based Systems
Windows Server 2008, Datacenter Edition
Windows Server 2008, Datacenter Edition for Itanium-based Systems
1-8 Fibre Channel, iSCSI, or SAS
Windows Server 2008, Enterprise x64 Edition
Windows Server 2008, Datacenter x64 Edition
1-16 Fibre Channel, iSCSI, or SAS

ということで、OSのx86とx64による違いが明確に判ります。

x86のW2008のMSFCでは最高8ノードになります。ですので日本語のサイトはちょっと誤解を招くかもしれませんね。

フェールオーバークラスタのフェールオーバー上限値のバグ

この情報は同僚から調べてほしいと言われた内容なんですが、せっかくなのでアップしておきます。

現象:グループのプロパティでフェールオーバーの上限数を2回に設定したとき、1回しかフェールオーバーしない。

作業手順は下記の通りです。

  1. 2ノードクラスタ上にVAN-Printという名前のプリントサーバーのグループを作成。
  2. VAN-Printのプロパティの[フェールオーバー]タブで、[指定した期間内の最大エラー数]を2に。[期間]は6(時間)のままとする。
  3. VAN-Printグループ内の[印刷スプーラ]リソースを右クリックし、[このリソースのエラーをシュミレーションする]ことで意図的に障害を発生させ、フェールオーバー回数を確認。

確認結果:

フェールオーバーの上限数を1~4回まで設定を変えて動作を確認しました。

その結果は下記の通りです。

  • [指定した期間内の最大エラー数]を1にしたとき → 1回までフェールオーバー
  • [指定した期間内の最大エラー数]を2にしたとき → 1回までフェールオーバー
  • [指定した期間内の最大エラー数]を3にしたとき → 3回までフェールオーバー
  • [指定した期間内の最大エラー数]を4にしたとき → 4回までフェールオーバー

[指定した期間内の最大エラー数]を1回、3回、4回に指定した時は、予定通りの動作ですが、2回に設定したときだけ、通常より1回少ない回数しかフェールオーバーしません。

というものです。

調べた結果、これは既知の問題としてあがっていました。

The default group failover threshold value in the Windows Server 2008 Failover Cluster Management snap-in is incorrect

どうやらSP2でも直っていないようです。しかしWindows Server 2008 R2 では解消されているようです。

クラスタを構成している場合はこの情報を認識しておいたほうがいいかもしれませんね。

Live Migration 試しました

今はHyper-V関連のコース立ち上げ準備をしている最中なのですが、SCVMMとかいろいろ試行錯誤しながら動かしています。じゃあ、ついでにWindows Server 2008 R2 RC を使ってLive Migrationも試してみました。

そうそう、Live Migrationの操作はフェイルオーバークラスターマネージャから行います。ちなみに、クラスターへの追加は今までと同じ方法なので割愛します。

WS000001

そして「仮想マシンを別のノードにライブ移行」を行います。

しかし、なぜかうまくいくときといかないときが発生しました。そして設定を見てみると・・・・あ、これだ

WS000004

依存関係にディスクを追加しました。ディスクが立ち上がってから起動しないとだめですよね~~~これ、忘れてました(笑)これをやらないとパラレルで起動するのでたまたまディスクがあとに立ち上がるとエラーになります。

それから細かい設定を確認してみると気になるものが・・・

WS000003

指定した期間内の最大エラー数がデフォルトは「1」でした。「1」ということは1回フェールオーバーしたら終わりということになります。ここは考慮するポイントになりますね。

WS000005

リソースエラーへの対応で「リソースが失敗状態になった場合は、現在のノードで再起動を試みる」がデフォルト「1」でした。これもちょっと少ないんでないかい?ここも考慮するポイントになりそうです。

Live Migrationですが瞬時に移動するイメージですが私の環境では、実際には1分くらいかかりました。でも接続が切れるのが約1秒という感じ。またクイックマイグレーションは約40秒くらいで接続が切れるのが10秒くらいかな?

今回ご紹介した内容はあくまでRC版ですのでRTMでは数値などは変わるかもしれません。