皆さん、こんにちは レノボ・エンタープライズ・ソリューションズ 小宮です。本日はNutanixにおけるAffinityポリシーと過去にも紹介したADSについてお話したいと思います。
Nutanixのイメージは1クリックですべて設定するため、ポリシーについては標準のものをすべて利用するという感じに思われますが、Affinityポリシーもちゃんと設定することで、各アプリケーション間でのルールを決めることができ、運用も楽にすることができます。今日はAffinityポリシーの設定についても一度ご紹介したいと考えております。
1. Affinity Policy for AHV
Acropolisの管理対象クラスターの管理者として、AHVクラスター上の仮想 マシンのスケジューリングポリシーを指定できます。これらのポリシーを定義することで、クラスタ内のホスト上の仮想マシンの配置を制御できます。
これらのポリシーを定義することで、クラスタ内のホスト上の仮想マシンの 配置を制御できます。 2種類のアフィニティポリシーを定義できます。以下の内容を紹介します。
- VMホストアフィニティポリシー
- VM-VMアンチアフィニティポリシー
- アフィニティルールの制限
2. VMホストアフィニティポリシー
VMホストアフィニティポリシーはVMの配置を制御します。このポリシーを使用して選択したVMがアフィニティホストリストのメンバー上でのみ実行できるように指定できます。
このポリシーは、ユーザーがVMの電源を投入したとき、またはVMを移行したときに、VMをどこにホストできるかを確認して適用します。
注意:
- VMホストアフィニティポリシーを適用することを選択した場合、アフィニティポリシーの要件に適合しないホストに 仮想マシンをパワーオンまたは移行できないように、Acropolis HAおよびAcropolis Distributed Scheduling(ADS)が 制限されます。この方針は強制的に施行されているため。
- VMホストのアンチアフィニティポリシーはサポートされていません。
- 以前のAOSリリースでは、ホストアフィニティ設定で構成されたVMはVMが新しいクラスターに移行されてもこれらの 設定を保持します。通常、これらのVMの電源を入れようとしても失敗しました。このようなVMは、CBRに対応して いない(バックアップとリカバリが可能)、保護されていない、保護ドメイン操作の一部として移行されていないなどのタグが付けられました。このVMタイプを選択すると、Webコンソールのメッセージが表示されます。このVMは バックアップとリカバリに対応していません。
考えられる理由:VMとホストのアフィニティが設定されている。
VMの作成またはアップデート操作中にPrismを使用して、VMとホストのアフィニティポリシーを定義可能
3. VM-VMアンチアフィニティポリシー
このポリシーを使用して仮想マシン間の非アフィニティを指定できます。VM-VMのアンチ アフィニティポリシーでは、1台のホストで問題が発生したときに両方の仮想マシンを 失うことがないように、指定された仮想マシンを区別します。しかし、これは優先的な方針です。 このポリシーは、リソースの制約が発生した場合にAcropolisの動的スケジューリング(ADS)機能が必要な措置を講じることを制限するものではありません。
注意:
- 現時点では、aCLIを使用してのみVM-VMのアンチアフィニティポリシーを定義できます
- VM-VMアフィニティポリシーはサポートされていません
- アフィニティポリシーが設定された仮想マシンのクローンが作成されている場合、ポリシーはクローン作成された 仮想マシンに自動的には適用されません。ただし、VMがDRスナップショットから復元されると、ポリシーは自動的にVMに適用されます
4. アフィニティルールの制限
- ホストがクラスタから削除されても、ホストUUIDはVMのホストアフィニティリストから削除されません。
- 予約ホスト方式を使用してHAが構成されているクラスタでは、VMホストアフィニティを構成できません。
- 電源がオンになっているVMのVMホストアフィニティをPrismから削除することはできません。acliコマンドを使用してこの操作を実行できます。vm.affinity_unset vm_list
ここで、Affinityルールの設定をPrismの画面とacliで紹介したいと思います。
Nutanixのクラスタで1ホスト内でExchangeとSQLが動作している場合に、これらを同時に1ホストで動かさない設定(AntiAffinity)を設定したいと思います。
まずは、ExchangeのVMにおいて、Affinity設定を行います。VMのメニューからUpdateを選択して、Set Affinityをクリックして、動作するホストを選択します。
同様にSQLのVMについても同様の設定を行います。
ここで、一度SQL VMのマイグレーション設定を確認します。マイグレーションをクリックすると青い枠に注意書きがあり、先ほど設定したAffinityルールが適応されていることが確認できます。その後マイグレーションできるホストに関しても自動で移行する設定とホストA/Bが表示されています。
ここで、acliを利用してAntiAffinityの設定を行います。SSHでCVMにログインして設定します。以下は一例を記載します。
nutanix@NTNX-*******-A-CVM:~$ acli
<acropolis> vm_group.create SQL_Exch
<acropolis> vm_group.add_vms SQL_Exch vm_list=SQL,Exchange
<acropolis> vm_group.antiaffinity_set SQL_Exch
こちらを設定後にPrismの画面をしばらく見ていると、AntiAffinityを設定された条件でSQL VMがホストBにマイグレーションされることがわかります。
ここで、タスク画面にADS: Remove Resource Contentionと表示されます。
リソースの競合を排除するという話ですが、ここでADSの話をしたいと思います。
5. Acropolis Distributed Scheduler (ADS)
Acropolisの管理対象クラスターでは、Acropolisの動的スケジューリング(ADS)機能により、 一定期間にわたるコンピューティングおよび/またはストレージのI/Oの競合またはホット スポットについてクラスターを予防的に監視します。問題が検出された場合は、移行計画が 作成されて実行され、VMをあるホストから別のホストに移行することで、クラスタ内の ホットスポットが排除されます。この機能は現在進行中の競合のみを検出します。これらの タスクは、Prism Webコンソールのタスクダッシュボードから監視できます。VMリンクを クリックして、移行先(AHVホストへの)移行パスを含む移行情報を表示できます。
ADS機能のその他の利点は次のとおりです。
- この機能は、VM構成に応じてVMの初期配置も改善します。
- アクロポリスのブロックサービス機能は、外部から見えるiSCSIターゲットのセッションのバランスをとるためにADS機能を使用します。
デフォルトではこの機能は有効になっています。Nutanixではこの機能を有効にしておくことを推奨しています。 ただし、aCLIを使用してこの機能を無効にすることができます。この機能を無効にしても、競合やホットスポットのチェックはバックグラウンドで実行され、何らかの異常が検出された場合は、3回目の通知後に[アラート]ダッシュ ボードにアラートが表示されます。ただし、これらの競合を解決するためのADS機能による処理はありません。マニュアルで修正措置を取る必要があります。
6. Acropolisの動的スケジューリングの要件と制限
- すべてのホストがAOS 5.0以降で実行していること
- iSCSIターゲットは空のエンティティとして表示されます。ただし、iSCSIターゲットで何らかの操作が行われると、関連するメッセージが[タスク]ダッシュボードに表示されます。
- 問題が検出され、ADSがその問題を解決できない場合(たとえば、CPUまたはストレージリソースが 限られているため)、移行計画は失敗する可能性があります。このような場合、アラートが 生成されます。Prism Webコンソールの[アラート] ダッシュボードからこれらのアラートを監視し、 必要な修正措置を取る必要があります。
- ホスト、ファームウェア、またはAOSのアップグレードが進行中で、リソースの競合が発生した場合、アップグレード期間中はリソースの競合の再調整は行われません。
次の手順を実行してADS機能を無効にします。ADS機能を無効にすることは推奨していません
1.SSHセッションからクラスター内のコントローラーVMにログインし、acliでアクセスします
2.ADS機能を無効にします
acli> ads.update enable = false
ADS機能を無効状態で機能を有効にしたい場合は、次の手順を実行してください
1.SSHセッションからクラスター内のコントローラーVMにログインし、acliでアクセスします
2.ADS機能を有効にします
acli> ads.update enable = true
最後にADSの概念図についてイメージを掲載します。
参考までに見て頂ければと思います。
以上、よろしくお願い致します。