自然の赴くままに・そのときの 気分次第で・なんとなく

興味を持ったことを、なんとなく気の向くまま書いています。

High Availability (HA) と仮想化について

最近は少なくなってきていると思います(信じたい)が、昔物理から仮想化するときによく聞いた話、
「vSphere は HA の機能を持っているから、今まで物理で構成していた HA クラスタ構成は無くて大丈夫ですよ。」
でも、シングルにしてしまうと vSphere の機能でしか HA できず、アプリのクラッシュとかでの復旧が出来なくなってしまうのに後から気づくとかありました。今はそんな設計や構築しているところはないと思いますが。
釈迦に説法なのですが、最近「vSphere HA あるから大丈夫!!」というようなことをよく耳にするようになったので、ちょっと仮想化環境での High Availability を構成する場合の考慮点を書いてみました。

 仮想化環境で HA クラスタを構成する際の考慮点

High Availability.JPG
ハイパーバイザー部分での HA 機能に加えて上位の部分は、今までの物理と同じ考慮が必要です。そして、仮想化環境の場合は共有ディスクの構成をどのようにしていくかが重要になってきていて、Fiber Channel と RDM を使って構成、またはネットワークストレージを使う、非共有ディスクのストレージのレプリケーションのソフトウエアやハードウエアの仕組みを使うなどでやっていたかと思います。前者の場合は同じディスクをHA 構成した仮想マシン同士がアクセスするので問題はありません(厳密にはということではなく)が、後者の場合別々のディスクに書き込みを行うのでそのデータの同期をどのようにするかが問題になってきます。ここ重要ですね。

 異なるストレージ間でのデータ同期(レプリケーション

データ同期の仕組みによっては同期または非同期の選択が出来ますが、その同期のためのネットワークの負荷などを考えた場合は非同期を使うことも多いかと思います。同期の場合はほとんど完全に同じデータが相手側にも書かれますが、非同期の場合は同期の間隔の間は Active 側でキャッシュしているのでフェイルオーバーした後のデータの整合性の確認が必要になります。ここ、データの同期(レプリケーション)するソフトウエアなどによって微妙に処理が違うので確認が必要。場合によってはデーターベースなどでは書き込み情報を他にも持っておいて同じようにレプリカ側に送っておくなども必要になるかもしれません。
このように仮想化環境で HA を構成する場合は、vSphere なら vSphere HA で全て大丈夫と思うことなく、今までの物理の時代と同じように OS やアプリケーションのクラッシュなどをチェックして切り替わる HA クラスタソフトウエアと、その上で動くアプリケーションのデータを保全するための仕組みの 3つは必要になるということがわかるかと思います。
ちなみに、データー部分は別として vSphere 環境上の仮想マシンWindows Server + WSFC を組む場合は、以下の KB が参考になります。
VMware vSphere 6.x での Microsoft Windows Server フェイルオーバ クラスタ:サポートされる構成のためのガイドライン (2147661)

 vSAN を使った場合の構成

上の KB2147661 の中ほどに「vSAN 6.1 以降での MSCS/WSFC に対するサポートのスタンス」とうものがあり、共有ディスクを備えた MSCS/WSFC(つまり SQL FCI)および非共有ディスク(つまり SQL AAG、Exchange DAG)はサポート対象外となっているようです。この辺り、この KB 以降に何か変わったかは VMware 社の担当に確認するしかないと思います。
なお、vSAN をストレージとして使う場合は vSphere HA クラスタ = vSAN クラスタなので、この辺りの情報を抑えておいて将来的にサポートされるのを待っているのも良いかもしれません。
VMware Virtual SAN 利用時の vSphere HA 設定に関するベストプラクティス