クラスタをアップグレード
寄稿者
Ansible を使用して、 SolidFire ESDS クラスタで無停止のローリングアップグレードを実行できます。ネットアップが提供する「 nar_solidfire_sds_upgrade 」ロールを使用すると、 Ansible は、すべてのボリュームへのデータ可用性を維持しながら、一度に 1 ノードずつローリングアップグレードを実行します。
アップグレード前に、次の条件が満たされていることを確認します。
-
Element UI でクラスタエラーは発生しません。
-
インベントリファイルは、現在の RPM ファイルのビルド情報とクラスタメンバーノードに関する詳細が記録された最新の状態です。
-
ホストは、 IP アドレスを使用してインベントリファイルに定義されます( Fully Qualified Domain Name [FQD; 完全修飾ドメイン名 ] ではありません)。
|
FQDN を使用してホストを定義すると、アップグレードが失敗します。 |
-
ホストは、次の例の形式を使用してインベントリファイルに定義されます。
hosts: 10.117.136.26: 10.117.136.27:
-
インベントリファイル内のノードの数は、アップグレードするクラスタ内のノードの数と同じです。番号が一致しない場合、アップグレード手順は次のようなエラーで失敗します。「 Cluster 10.194.79.151 consists of more nodes than what has been specified for upgrade! 」
-
インベントリファイルには、次の変数が指定されています。 sf_mgmt_virt_ip ( MVIP )、 sf_cluster_admin_username 、 sf_cluster_admin_passwd 、 solidfire_element_rpm (新しい RPM ファイルへのパス)
アップグレードプロセスの概要を次に示します。
-
インベントリファイルに入力した情報が検証されます。
-
ノード情報が収集されます。
-
RPM は、インベントリファイルに含まれるすべてのノードに並行してインストールされます。
-
RPM が各ノードにインストールされると、各 SolidFire ESDS ノードが一度に 1 つずつアップグレードされます。各ノードは自動的にメンテナンスモードになります。アップグレードプレイブックを実行している場合は、保守モードを手動で有効にする必要はありません。
-
最初のノードがメンテナンスモードになると、その SolidFire ESDS ノードでホストされているボリュームが、クラスタ内の残りの SolidFire ESDS ノードにフェイルオーバーされます。
-
SolidFire サービスが再起動され、アプリケーションの最新バージョンが取得されます。
-
ノードのメンテナンスモードが非アクティブになり、クラスタはノードがリカバリされるまで待機します。
-
ノードがオンラインに戻ったら、クラスタのバランスが調整されます。
-
クラスタ内のすべてのノードに対して同じ手順を繰り返します。
-
すべてのノードをアップグレードしたあと、クラスタに最新バージョンが表示されます。
|
アップグレード中にエラーが発生した場合やクラスタに障害が発生した場合、アップグレードは停止しません。アップグレードに成功したノードとアップグレードに失敗したノードのリストが出力される範囲まで進められます。エラーを修正したら、プレイブックを再実行するか、ファイルを拒否してアップグレードプロセスを完了できます。 |
|
障害のためにアップグレードが失敗した場合は、その問題を解決してからアップグレードを再開する必要があります。アップグレードが完了するまで、クラスタはアップグレードステータスのままになります。クラスタのアップグレード中に Element によって障害がクリアされない場合は、ネットアップサポートにお問い合わせください。エラーの性質によっては、問題が解決しない場合、サポートから「 yes_i_bwant to ignore_cluster_faults 」変数を追加し、アップグレード・プレイブックで true に設定して、プレイブックを再実行するように指示される場合があります。サポートに相談しないでください。 |
-
'Ansible galxy install コマンドを実行して 'nar_solidfire_sds_upgrade' ロールをインストールします
ansible-galaxy install git+https://github.com/NetApp-Automation/nar_solidfire_sds_upgrade.git
ロールは、からコピーして手動でインストールすることもできます "NetApp GitHub リポジトリ" そして '~/. epla/roles ディレクトリにロールを配置しますネットアップは README ファイルを提供しています。このファイルには、ロールの実行方法に関する情報が含まれています。
必ず最新バージョンのロールをダウンロードしてください。 -
ダウンロードしたロールを、インストールしたディレクトリから 1 つ上のディレクトリに移動します。
$ mv ~/.ansible/roles/ansible/nar_solidfire_sds_* ~/.ansible/roles/
-
Ansible galxy role list コマンドを実行して、新しい役割を利用するように Ansible が設定されていることを確認します。
$ ansible-galaxy role list # ~/.ansible/roles - nar_solidfire_sds_install, (unknown version) - nar_solidfire_sds_upgrade, (unknown version) - ansible, (unknown version) - nar_solidfire_sds_compliance, (unknown version) - nar_solidfire_cluster_config, (unknown version) - nar_solidfire_sds_uninstall, (unknown version)
-
アップグレードに使用するプレイブックを作成します。すでにプレイブックを持っていて、それを使いたい場合は、このプレイブックで「 nar_solidfire_sds_upgrade 」ロールを指定してください。
-
プレイブックを実行します
$ ansible-playbook -i inventory.yaml playbook_upgrade_sample.yaml
ここで使用するプレイブックの名前は一例です。このコマンドは、プレイブックの名前に置き換える必要があります。 Playbook を実行すると、インベントリファイルに入力した情報が検証され、インベントリにリストされているすべてのノードに RPM がインストールされます。Ansible の出力を確認して、各ノードがアップグレードされていることを確認できます。
-
アップグレードの完了後、 Element UI またはクラスタ API を使用して各ノードで新しいバージョンが実行されていることを確認します。