SAP HANAシステムレプリケーションのスケールアップ - パフォーマンス最適化シナリオ #
SUSE® Linux Enterprise Server for SAP Applicationsは、SAP *アプリケーション向けにさまざまな方法で最適化されています。このガイドは、パフォーマンス最適化シナリオにおけるSAP HANAシステムレプリケーションに向けた、SUSE Linux Enterprise Server for SAP Applicationsのインストールとカスタマイズに関する詳細情報を提供します。本ドキュメントは、すでにインストールされて稼働しているSAP HANAをシステムレプリケーションと統合する手順に焦点を当てています。
1 このガイドについて #
1.1 はじめに #
SUSE® Linux Enterprise Server for SAP Applicationsは、SAP *アプリケーション向けにさまざまな方法で最適化されています。このガイドは、パフォーマンス最適化シナリオにおけるSAP HANAシステムレプリケーションに向けた、SUSE Linux Enterprise Server for SAP Applicationsのインストールとカスタマイズに関する詳細情報を提供します。
Pierre Audoin Consultants(PAC)社が最近実施した市場調査によって得られた結論は、「SAPの顧客はSAP HANAに投資する」と言うことでした。ドイツでは、半数の企業が、SAP HANAはSAP環境において支配的なデータベースプラットフォームになると予想しています。「SAP HANA *を活用したSAP Business Suite *」のシナリオについては、既に具体的な協議が盛んに行われています。
SUSEは、この開発に対してもSUSE Linux Enterprise Server for SAP Applicationsを提供することで対応しています。この製品は、SAP HANAに対して推奨されサポートされているOSです。SUSEは、SAPとハードウェアパートナーとの連携を密にして、SAP HANAシステムレプリケーションの高可用性を確保するための2つのリソースエージェントをお客様に提供しています。
1.1.1 概要 #
このガイドでは、高可用性ソリューションシナリオ「SAP HANAスケールアップシステムレプリケーションのパフォーマンス最適化」に基づき、SUSE Linux Enterprise Server for SAP Applicationsの計画、設定、基本的なテストについて解説します。
アプリケーションの観点からは、以下のさまざまな構成を網羅しています。
単純なシステムレプリケーション
セカンダリサイトの読み取り可能なシステムレプリケーション
マルチティア(チェーン)システムレプリケーション
マルチターゲットシステムレプリケーション
上記すべてに対するマルチテナントデータベースコンテナ
インフラストラクチャの観点からは、以下の構成をカバーしています。
ディスクベースのSBDを搭載した2ノードクラスター
ディスクレスSBDを搭載した3ノードクラスター
1.1.2 スケール-アップとスケール-アウト #
最初の一連のシナリオには、 スケールアップ ソリューションのアーキテクチャと開発が含まれます。
SUSEは、これらのシナリオに対応するために、スケールアップリソースエージェントパッケージ SAPHanaSR
を開発しました。システムレプリケーションは、1台のコンピューターから別のコンピューターにデータベースのデータを複製することで、データベースの障害を回復するのに役立ちます(シングルボックスレプリケーション)。
2番目の一連のシナリオには、スケールアウト ソリューションのアーキテクチャと開発が含まれます(マルチボックスレプリケーション)。SUSEは、これらのシナリオに対応するために、スケールアップリソースエージェントパッケージ SAPHanaSR-ScaleOut
を開発しました。
この運用モードでは、内部のSAP HANA高可用性(HA) メカニズムとリソースエージェントは、互いに連携して協調動作する必要があります。SAP HANAシステムレプリケーションのスケールアウト自動化については、SUSEのドキュメンテーションWebページ https://documentation.suse.com/sbp/all/から入手できるドキュメントに説明されています。スケールアウトに関するドキュメントのタイトルは「SAP HANAシステムレプリケーションのスケールアウト - パフォーマンス最適化シナリオ」です。
1.1.3 スケールアップシナリオとリソースエージェント #
SUSEは、SAP HANAデータベースのインスタンスを実際にチェックする SAPHana
リソースエージェント(RA)を使用して、スケールアップシナリオを実装しています。このRAはマスター/スレーブリソースとして構成されます。スケールアップシナリオでは、マスターがプライマリモードで実行されているSAP HANAデータベースに対して責任を負います。一方で、スレーブは同期(セカンダリ)ステータスで動作するインスタンスに責任を負います。
クラスターの構成をできるだけシンプルにするために、SUSEは SAPHanaTopology
リソースエージェントも開発しました。このRAは、SUSE Linux Enterprise Server for SAP Applicationsクラスターのすべてのノードで実行され、SAP HANAシステムレプリケーションのステータスと構成に関する情報を収集します。これは、標準の(ステートレス)クローンとして設計されています。
スケールアップに対するSAP HANAシステムレプリケーションは、以下のシナリオまたはユースケースでサポートされています。
パフォーマンス最適化 (A ⇒ B).このシナリオと設定については、 本ドキュメントで説明しています。
図 3: クラスター内のSAP HANAシステムレプリケーションのスケールアップ - パフォーマンス最適化 #パフォーマンス最適化シナリオでは、SAP HANA RDBMSサイトAは、2番目のノードのSAP HANA RDBMSサイトBと同期しています。2番目のノードのHANA RDBMSはテーブルをプリロードするように構成されているため、通常テイクオーバー時間は非常に短くて済みます。
SAP HANAのパフォーマンス最適化シナリオが大きく進化した点のひとつは、セカンダリデータベースサイトで読み取りアクセスが可能になったことです。この読み取り可能な read enabled シナリオをサポートするために、2番目の仮想IPアドレスがクラスターに追加され、システムレプリケーションのセカンダリロールにバインドされます。
コスト最適化 (A ⇒ B, Q).このシナリオと設定は、SUSEのドキュメンテーションWebページ (https://documentation.suse.com/sbp/all/)から入手できる別のドキュメントで説明されています。コスト最適化のドキュメントのタイトルは「SAP HANA SRコスト最適化インフラストラクチャの設定」です。
図 4: クラスター内のSAP HANAシステムレプリケーションのスケールアップ - パフォーマンス最適化 #コスト最適化シナリオでは、2番目のノードも 本稼働環境以外のSAP HANA RDBMSシステム(QASやTSTなど)で使用されます。テイクオーバーが必要な場合は、常に本稼働環境以外のシステムを最初に停止する必要があります。このノードにある本稼働環境のセカンダリシステムは、システムリソースの使用を制限する必要があるため、テーブルのプリロードを必ずオフにしてください。テイクオーバーは、パフォーマンスが最適化されたユースケースよりも長時間になる恐れがあります。
コスト最適化シナリオでのセカンダリは、メモリ消費量を削減した構成で実行する必要があります。このため、このシナリオでは read enabled を有効にしないでください。
マルチティア (A ⇒ B → C) およびマルチターゲット (B ⇐ A ⇒ C).
図 5: クラスター内のSAP HANAシステムレプリケーションのスケールアップ - パフォーマンス最適化チェーン #A マルチティア システムレプリケーションには、追加のターゲットがあります。かつては、この3つ目のノードはセカンダリ(チェーントポロジー)に接続されている必要がありました。現在のSAP HANAバージョンでは、SAPにより マルチターゲットトポロジー も許可され可能としています。
図 6: クラスター内のSAP HANAシステムレプリケーションのスケールアップ - パフォーマンス最適化マルチターゲット #マルチティアおよびマルチターゲットシステムは、本ドキュメントで説明されている方法で実装されます。最初の複製ペア(AとB)だけがクラスター自身によって処理されます。単純なパフォーマンス最適化シナリオとの主な違いは、自動登録をオフに設定する必要があることです。
マルチテナンシー またはマルチテナントデータベースコンテナ(MDC)
マルチテナンシーは、上記のすべてのシナリオとユースケースでサポートされています。このシナリオはSAP HANA SPS09以降でサポートされています。クラスターから見た設定と構成は、マルチテナンシーもシングルコンテナも同様です。したがって、上記のドキュメントは両方のシナリオに適用できます。
1.1.4 パフォーマンス最適化シナリオの概念 #
ノード1(ノードまたはデータベースインスタンス)のプライマリSAP HANAに障害が発生した場合、クラスターは最初にテイクオーバープロセスを開始しようとします。これにより、既にセカンダリサイトにロードされているデータを使用することができます。通常、このテイクオーバーはローカルでの再起動よりもはるかに高速です。
このリソース処理プロセスを自動化するには、SAPHanaSRに含まれるSAP HANAリソースエージェントを使用する必要があります。本稼働環境のデータベースのシステムレプリケーションは、SAPHanaとSAPHanaTopologyにより自動化されます。
クラスターは、SAP HANAシステムレプリケーションがプライマリサービスの停止時点まで同期していた場合にのみ、セカンダリサイトへのテイクオーバーを許可します。これにより、プライマリサイトで処理された最後のコミットが、確実にセカンダリサイトで利用可能になります。
SAPは、SAP HANAとクラスターフレームワークなどの外部ソフトウェア間のインタフェースを改善しました。この改善には、サービスまたはシステムレプリケーションチャネルのステータス変更など、特別なイベントが発生した場合のSAP HANA呼び出しの実装も含まれています。これらの呼び出しは、HA/DRプロバイダーとも呼ばれます。このインタフェースは、Pythonで記述されたSAP HANAフックを実装することで使用できます。SUSEは、SAPHanaSRパッケージを改善し、クラスターインタフェースを最適化するためのSAP HANAフックを含めました。本ドキュメントで述べたSAP HANAフックを使用すると、SAP HANAシステムレプリケーションが機能停止した場合、即座にクラスターに通知することができます。SAP HANAフックステータスに加えて、クラスターはシステムレプリケーションステータスを定期的にポーリングします。
AUTOMATED_REGISTER
パラメータを変更することにより、自動化のレベルを設定できます。自動化された登録が有効な場合、クラスタは新しいセカンダリになる元の障害発生プライマリの登録も自動で行います。
このソリューションは、HAWKまたは他のクラスタークライアントコマンドを使用して、プライマリまたはセカンダリインスタンスを手動で「migrate」するようには設計されていません。管理セクションでは、SAPおよびクラスターコマンドを使用して、プライマリをセカンダリサイトに「migrate」する方法について説明しています。
1.1.5 完全なパッケージを提供 #
SAPHanaとSAPHanaTopologyリソースエージェントを使用すると、SAP HANAシステムレプリケーションをクラスターに統合することができます。これには、企業がビジネスクリティカルなSAPシステムだけでなく、SAP HANAデータベースも中断することなく使用できるメリットがあり、必要とする予算を大幅に節減できます。SUSEはベストプラクティスのドキュメントとともに拡張ソリューションを提供します。
自社独自のSAP HANA高可用性ソリューションを持っていないSAPパートナーやハードウェアパートナーも、SUSEのこの開発から恩恵を受けることができます。
1.2 その他のドキュメントとリソース #
このマニュアルの各章には、システムまたはインターネットから入手可能なその他のドキュメントリソースへのリンクが掲載されています。
最新のドキュメントについては、http://documentation.suse.com/を参照してください。
SUSE Linux Enterprise Server for SAP Applicationsのベストプラクティスが掲載されたWebページ:https://documentation.suse.com/sbp/all/には、多数のホワイトペーパー、ベストプラクティス、設定ガイドなどもあります。
また、SUSEはSAPと高可用性に関するブログ記事も公開しています。ハッシュタグ#TowardsZeroDowntimeを使用して、ぜひご参加ください。次のリンクからアクセスしてください。https://www.suse.com/c/tag/TowardsZeroDowntime/.
1.3 正誤表 #
小さくとも緊急の修正や重要な情報をタイムリーに提供するために、本設定ガイドに関わる技術情報ドキュメント(TID)は頻繁に更新、保守、公開されます。
SAP HANA SRパフォーマンス最適化シナリオ - 設定ガイド - 正誤表 (https://www.suse.com/support/kb/doc/?id=7023882)
クラスター監視ツールでSOKステータスを表示するワークアラウンド (https://www.suse.com/support/kb/doc/?id=7023526 - 次のブログ記事もご覧ください https://www.suse.com/c/lets-flip-the-flags-is-my-sap-hana-database-in-sync-or-not/)
他のソリューションについては、本ガイドに加えてSUSE SAPベストプラクティスガイド正誤表をご確認ください (https://www.suse.com/support/kb/doc/?id=7023713).
1.4 フィードバック #
複数のフィードバックチャネルが利用可能です。
- バグと機能強化のリクエスト
お使いの製品で利用できるサービスとサポートオプションについては、 http://www.suse.com/support/を参照してください。
製品コンポーネントのバグを報告するには、https://scc.suse.com/support/リクエストにアクセスしてログインし、 Submit New SR (Service Request)を選択します。
- メール
本製品のドキュメントへのフィードバックについては、doc-team@suse.com宛てにメールを送信してください。ドキュメントのタイトル、製品のバージョン、ドキュメントの発行日を必ず記載してください。エラーを報告したり機能拡張を提案するには、問題の簡潔な説明と共に、該当するセクション番号とページ(またはURL)を記載してください。
2 サポートするシナリオと前提条件 #
SAPHanaSR
リソースエージェントソフトウェアパッケージでは、スケールアップ(シングルボックスからシングルボックスへ)システムレプリケーションを、以下の構成とパラメータに限定してサポートします。
標準は2ノードクラスターです。3番目のノードにもリソースエージェントをインストールする場合は、3ノードクラスターでも構いません。ただし、3番目のノードではSAP HANAリソースを実行しないことをクラスターで定義してください。この場合、3番目のノードは、クラスターを分離する場合に、追加の意思決定者になります。
クラスターには、有効なSTONITH手段が含まれている必要があります。
SUSE Linux Enterprise 15 High Availability Extension(SDB、IPMIなど)でサポートされているすべてのSTONITHメカニズムがSAPHanaSRでサポートされています。
本ガイドでは、ハードウェアに依存しないことからSBDフェンシングメソッドに焦点を当てています。
フェンシングメカニズムとしてディスクベースのSBDを使用する場合は、1台以上の共有ドライブが必要になります。本稼働環境では、SBDデバイスを複数使用することをお勧めします。ディスクベースSBDの詳細については、SUSE Linux Enterprise High Availability Extensionの製品ドキュメントと、本マニュアルのページsbd.8およびstonith_sbd.8を参照してください。
ディスクレスSBDの場合は、少なくとも3クラスターノードが必要になります。ディスクレスSBDメカニズムには、フェンシング用の共有ドライブが不要となるメリットがあります。
2つのノードは、同一のネットワークセグメント(レイヤー2)にあります。オーバーレイIPアドレスやロードバランサー機能などは、クラウド環境から提供される同様の機能でも構いません。クラウド独自のガイドに従って、SUSE Linux Enterprise Server for SAP Applicationsクラスターを設定します。
<sid>admなどのテクニカルユーザーとグループは、Linuxシステムにローカルで定義されます。
クラスターノードと仮想IPアドレスの名前解決は、すべてのクラスターノードでローカルに実行する必要があります。
ネットワークタイムプロトコル(NTP) などのクラスターノード間の時刻同期。
プライマリとセカンダリのSAP HANAインスタンスのSAP識別子(SID)とインスタンス番号はどちらも同じです。
各クラスターノードが異なるデータセンターやデータセンターエリア内にインストールされている場合、それらの環境は、SUSE Linux Enterprise High Availability Extensionクラスター製品の要件と一致する必要があります。ここで特に懸念されるのは、ネットワーク遅延とノード間の推奨最大距離です。これらの推奨事項については、SUSE Linux Enterprise High Availability Extensionの製品ドキュメントで確認してください。
停止したプライマリに対する、テイクオーバー後の自動登録。
プロジェクトを適切に初期構成するために、停止したプライマリの自動登録をオフにすることをお勧めします。
AUTOMATED_REGISTER="false"
がデフォルトの設定になります。この場合、停止したプライマリは、テイクオーバー後に手動で登録する必要があります。SAP HANAコックピットやhdbnsutil.などのSAPツールを使用してください。最適な自動化には、
AUTOMATED_REGISTER="true"
に設定することをお勧めします。
システム起動中のSAP HANAインスタンスの自動起動はオフにする必要があります。
マルチテナンシーデータベースコンテナ(MDC)をサポートします。
マルチテナンシーデータベースは、他のすべての設定(パフォーマンスベース、コスト最適化、マルチティア)と組み合わせて使用することができます。
MDC構成において、SAP HANA RDBMSはすべてのデータベースコンテナを含む単一システムとして扱われます。したがって、クラスターのテイクオーバーの決定は、個々のデータベースコンテナのステータスには関係なく、専らRDBMSのステータスに基づいて行われます。
SAP HANA 1.0の場合、本稼働中にテナントを停止し、クラスターが引き継げるようにするためには、バージョンSPS10 rev3、SPS11以降が必要になります。SAP HANAのバージョンがそれより古い場合は、テナントを停止させるとシステムレプリケーションは失敗とマークされます。
マルチテナンシーデータベースでのテストは、テナント間の独立性が強いを強力に分離させている場合、別のテスト手順を強いられる可能性があります。例として、 HDB killを使用してSAP HANAインスタンスをすべて停止することはできません。各テナントが異なるLinuxユーザーUIDで実行されているためです。<sidadm>は、他のテナントユーザーのプロセスを終了させることはできません。
少なくともSAPHanaSRバージョン0.153が必要で、SUSE Linux Enterprise Server for SAP Applications 15 SP1以降が最善です。SAP HANA 1.0は、SPS09 (095)以降に定義されているすべての設定でサポートされています。SAP HANA 2.0は、すべての既知のSPSバージョンでサポートされています。
有効なSTONITH手段がない場合は、クラスターのすべてはサポートされないため、正しく動作しません。
別のシナリオを実装する必要がある場合は、SUSEと共にPoC(概念実証)を規定することを強くお勧めします。PoCは、そのシナリオにおける既存ソリューションのテストに焦点を当てます。上記の制限を付けた理由は、慎重にテストする必要があるためです。
SAP HANAの他に、SAPホストエージェントをシステムにインストールする必要があります。
3 本ドキュメントのスコープ #
本ドキュメントは、クラスターを設定して、システムレプリケーションシナリオにおいてSAP HANAを制御する方法を説明します。このドキュメントでは、すでにインストールされて稼働しているSAP HANAをシステムレプリケーションと統合する手順に焦点を当てています。
ここで説明している設定例では、Walldorf(WDF)とRot(ROT)にある2つのデータセンターで、2つのSLES for SAP 15 SP1システムにインストールされたSAP HANA HAクラスターを構築します。
クラスターの設定は、YaSTウィザードを使用することも、手動で行うことも、また、所有されている自動化機能を利用することもできます。
YaSTウィザードを使用する場合は、ショートカットyast sap_haからモジュールを起動することができます。YaSTを使用してSAPHanaSRを設定する手順については、SUSE Linux Enterprise Server for SAP Applicationsの製品ドキュメントのセクションSAP HANAクラスターを設定するに記載されており、https://documentation.suse.com/sles-sap/15-SP1/single-html/SLES4SAP-guide/#cha-s4s-clusterから入手できます。
本ガイドは、クラスターの手動による設定に焦点を当てて詳細を説明し、独自の自動化機能を構築できるよう支援します。
設定手順は以下のように主に7段階に分かれています。
計画 (4項 「インストレーションの計画」を参照)
OSのインストレーション (5項 「OSの設定」を参照)
データベースのインストレーション (6項 「両方のクラスターノードへのSAP HANAデータベースのインストール」を参照)
SAP HANAシステムレプリケーションの設定(を参照) 7項 「SAP HANAシステムレプリケーションの設定」
SAP HANA HA/DRプロバイダーフック (8項 「SAP HANA HA/DRプロバイダーの設定」を参照)
クラスター構成 (9項 「クラスターの構成」を参照)
テスト(10項 「クラスターのテスト」を参照)
4 インストレーションの計画 #
SAP HANAクラスターを正しく設定するには、インストレーションの計画が不可欠です。
事前に用意するものは以下のとおりです。
SUSEのソフトウェア: SUSE Linux Enterprise Server for SAP Applicationsのインストールメディア、有効なサブスクリプション、およびアップデートチャネルへのアクセス
SAPのソフトウェア: SAP HANAインストールメディア
ディスクを含む物理または仮想システム
記載済みのパラメータシート (以下の 4.2項 「パラメータシート」を参照)
4.1 ラボの最小要件と前提条件 #
ここで説明しているラボの最小要件は、SAPのサイジング情報ではありません。これらのデータは、ここで述べたクラスターをテスト目的でラボに再構築するためにのみ提供されます。たとえテストであっても、そのシナリオによっては要件が増える場合があります。本稼働システムについては、ハードウェアベンダーに問い合わせるか、公式のSAPサイジングツールやサービスをご利用ください。
許容されるストレージ構成とファイルシステムについては、SAP HANA TDIドキュメントを参照してください。
サイトごとに1つのSAPインスタンスが必要 (1 : 1) - マジョリティメーカーなし(2ノードクラスター):
各々32GB RAMを備えた2つのVM、システムに対して50GBのディスク容量
10MBのディスク空き容量を備えたSBD用の共有ディスク1台
SAP HANA用に各々96GB容量のデータディスク2台(各サイト1台)
テイクオーバー用の1つの追加IPアドレス
読み取り可能な設定用の1つのオプションIPアドレス
HAWK管理GUI用の1つのオプションIPアドレス
サイトごとに1つのSAPインスタンスが必要 (1 : 1) - マジョリティメーカー有(3ノードクラスター):
各々32GB RAMを備えた2つのVM、システムに対して50GBのディスク空き容量
2GB RAMを備えた1つのVM、システムに対して50GBのディスク空き容量
SAP HANA用に各々96GB容量のデータディスク2台(各サイト1台)
テイクオーバー用の1つの追加IPアドレス
Read-enabled設定用の1つのオプションIPアドレス
HAWK管理GUI用の1つのオプションIPアドレス
4.2 パラメータシート #
2つのSAP HANAサイトを編成するクラスターの設定が非常に簡単な場合でも、インストレーションは適切に計画する必要があります。SID、IPアドレスを含め、必要なすべてのパラメータを用意する必要があります。最初にパラメータシートに記入してからインストレーションを開始することをお勧めします。
パラメータ | 値 | ロール |
---|---|---|
ノード1 | クラスターノード名とIPアドレス | |
ノード2 | クラスターノード名とIPアドレス | |
SID | SAPシステム識別子 | |
インスタンス番号 | SAP HANAデータベースの数。システムレプリケーションでは、インスタンス番号+1もブロックされます。 | |
ネットワークマスク | ||
vIPプライマリ | プライマリSAP HANAサイトに割り当てられる仮想IPアドレス。 | |
vIPセカンダリ | 読み取り可能なセカンダリSAP HANAサイトに割り当てられる仮想IPアドレス(オプション)。 | |
ストレージ | HDBデータとログファイル用のストレージは「ローカル」に接続されています(ノードごと、非共有)。 | |
SBD | STONITHデバイス(2台は本稼働用) | |
HAWKポート |
| |
NTPサーバー | タイムサーバーのアドレスまたは名前 |
パラメータ | 値 | ロール |
---|---|---|
ノード1 |
| クラスターノード名とIPアドレス |
ノード2 |
| クラスターノード名とIPアドレス |
SID |
| SAPシステム識別子。 |
インスタンス番号 |
| SAP HANAデータベースの数。システムレプリケーションでは、インスタンス番号+1もブロックされます。 |
ネットワークマスク |
| |
vIPプライマリ |
| |
vIPセカンダリ |
| (オプション) |
ストレージ | HDBデータとログファイル用のストレージは「ローカル」に接続されています(ノードごと、非共有)。 | |
SBD |
| STONITHデバイス(2台は本稼働用) |
HAWKポート |
| |
NTPサーバー | pool pool.ntp.org | タイムサーバーのアドレスまたは名前 |
5 OSの設定 #
このセクションには、OSのインストール中に考慮すべき情報が含まれています。
本ドキュメントのスコープでは、最初にSUSE Linux Enterprise Server for SAP Applicationsをインストールして構成します。次に、システムレプリケーションを含むSAP HANAデータベースを設定します。最後に、クラスターを伴う自動化を設定して構成します。
5.1 SUSE Linux Enterprise Server for SAP Applicationsのインストール #
さまざまな理由により、サーバーの設定には各々の方法があり、すでに複数のインストレーションガイドが公開されています。これらのガイドを入手できる場所を以下に示します。さらに、システムを適切に動作させるために検討すべき重要な詳細情報も入手できます。
5.1.1 ベースOSをインストールする #
使用するインフラストラクチャとハードウェアに応じて、インストレーションを調整する必要があります。サポートされているすべてのインストレーション方法と最小要件は、導入ガイド (https://documentation.suse.com/sles/15-SP1/html/SLES-all/book-sle-deployment.html)で説明されています。自動インストールの場合は、 AutoYaSTガイド (https://documentation.suse.com/sles/15-SP1/html/SLES-all/book-autoyast.html)で詳細情報を確認できます。SAP HANAのすべての要件に適合するSUSE Linux Enterprise Server for SAP Applicationsの主要インストレーションガイドは、SAPノートから入手できます。
2578899 SUSE LINUX Enterprise Server 15: インストレーションノート、および
2684254 SAP HANA DB: SLES 15 / SLES for SAP Applications 15向けに推奨されるOS設定。
5.1.2 追加ソフトウェアのインストール #
SUSEは、SUSE Linux Enterprise Server for SAP Applicationsと共に、SAP HANA用の特別なリソースエージェントを提供します。sap-hanaパターンを使用すると、SAP HANAスケールアップに対するリソースエージェントがインストールされます。スケールアウトのシナリオでは、特別なリソースエージェントが必要になります。SAPノート1984787に基づいてシステムをインストールした場合は、各ノードで以下の指示に従ってください。ハイアベイラビリティ パターンは、 すべての ノードにインストールすることが推奨されるツールを余すことなく要約したものです。これにはマジョリティメーカーも含まれます。
すべてのノードの
High Availability
パターンsuse01:~> zypper in --type pattern ha_sles
すべてのノードに
SAPHanaSR
リソースエージェントをインストールするsuse01:~> zypper in SAPHanaSR SAPHanaSR-doc
詳細については、SUSE Linux Enterprise High Availability Extensionのインストレーションと基本設定をご覧ください。
6 両方のクラスターノードへのSAP HANAデータベースのインストール #
本ドキュメントでは、インストール済みのSAP HANAと、すでにPacemakerクラスターに設定されているシステムレプリケーションとの統合に焦点を当てていますが、この章では、テスト環境の概要を説明します。SAP HANAをインストールしたり、システムレプリケーションを設定する際は、必ずSAPの公式ドキュメントを参照してください。
6.1 両方のクラスターノードへのSAP HANAデータベースのインストール #
SAP マーケットプレースから入手したSAPインストレーションおよび設定マニュアルを理解します。
SAP マーケットプレースからSAP HANAソフトウェアをダウンロードします。
SAP HANAサーバーのインストレーションガイドの説明に従って、SAP HANAデータベースをインストールします。
SAPホストエージェントがすべてのクラスターノードにインストールされていることを確認します。このSAPサービスがインストールされていない場合は、今すぐインストールしてください。
両方のデータベースが稼働しており、これらのすべてのプロセスが正しく実行されていることを確認します。
Linux<sid>admユーザー として、 HDBコマンドラインツールを使用して、実行中のHANAプロセスの概要を取得します。HDB
info
の出力は、以下のように表示されます。
suse02:ha1adm> HDB info USER PID PPID ... COMMAND ha1adm 13017 ... -sh ha1adm 13072 ... \_ /bin/sh /usr/sap/HA1/HDB10/HDB info ha1adm 13103 ... \_ ps fx -U ha1adm -o user:8,pid:8,ppid:8,pcpu:5,vsz:10,rss:10,args ha1adm 9268 ... hdbrsutil --start --port 31003 --volume 2 --volumesuffix mnt00001/hdb00002.00003 --identifier 1580897137 ha1adm 8911 ... hdbrsutil --start --port 31001 --volume 1 --volumesuffix mnt00001/hdb00001 --identifier 1580897100 ha1adm 8729 ... sapstart pf=/hana/shared/HA1/profile/HA1_HDB10_suse02 ha1adm 8738 ... \_ /usr/sap/HA1/HDB10/suse02/trace/hdb.sapHA1_HDB10 -d -nw -f /usr/sap/HA1/HDB10/suse02/daemon.ini pf=/usr/sap/HA1/SYS/profile/HA1_HDB10_suse02 ha1adm 8756 ... \_ hdbnameserver ha1adm 9031 ... \_ hdbcompileserver ha1adm 9034 ... \_ hdbpreprocessor ha1adm 9081 ... \_ hdbindexserver -port 31003 ha1adm 9084 ... \_ hdbxsengine -port 31007 ha1adm 9531 ... \_ hdbwebdispatcher ha1adm 8574 ... /usr/sap/HA1/HDB10/exe/sapstartsrv pf=/hana/shared/HA1/profile/HA1_HDB10_suse02 -D -u ha1adm
7 SAP HANAシステムレプリケーションの設定 #
詳細については、SAP HANA管理ガイドのシステムレプリケーションの設定セクションをご覧ください。
実行手順
プライマリデータベースをバックアップします。
プライマリデータベースを有効にします。
セカンダリデータベースを登録します。
システムレプリケーションを確認します。
7.1 プライマリデータベースをバックアップする #
SAP HANA管理ガイドのSAP HANAデータベースのバックアップとリカバリーセクションの説明に従って、プライマリデータベースをバックアップします。SQLコマンドを使用した例を示します。これらのバックアップコマンドは、バックアップインフラストラクチャに適合させて使用する必要があります。
<sidadm>ユーザーとして、次のコマンドを入力します。
hdbsql -u SYSTEM -d SYSTEMDB \ "BACKUP DATA FOR FULL SYSTEM USING FILE ('backup')"
以下の(または同様の)コマンド出力が表示されます。
0 rows affected (overall time 15.352069 sec; server time 15.347745 sec)
<sidadm>ユーザーとして、以下のコマンドをとして入力します。
hdbsql -i <instanceNumber> -u <dbuser> \ "BACKUP DATA USING FILE ('backup')"
有効なバックアップがない場合は、SAP HANAをシステムレプリケーション構成にすることができません。
7.2 プライマリノードを有効にする #
Linux の<sid>adm ユーザーとして、プライマリノードでシステムレプリケーションを有効にします。サイト名(例: WDF)を定義する必要があります。このサイト名は、システムレプリケーションを介して接続されているすべてのSAP HANAデータベースで一意にしなければなりません。したがって、セカンダリは異なるサイト名にしてください。
「primary」や「secondary」 などの文字列はサイト名に使用しないでください。
-sr_enableオプションを使用してプライマリを有効にします。
suse01:~> hdbnsutil -sr_enable --name=WDF checking local nameserver: checking for active nameserver ... nameserver is running, proceeding ... configuring ini files ... successfully enabled system as primary site ... done.
hdbnsutil -sr_stateConfiguration
コマンドを使用して、プライマリのSR構成を確認します。
suse01:~> hdbnsutil -sr_stateConfiguration --sapcontrol=1 SAPCONTROL-OK: <begin> mode=primary site id=1 site name=WDF SAPCONTROL-OK: <end> done.
モードが「none」から「primary」 に変更され、サイトにサイト名とサイトIDが追加されました。
7.3 セカンダリノードを登録する #
セカンダリ側のSAP HANAデータベースインスタンスは、システムレプリケーションに登録する前に一旦停止する必要があります。HDB
や sapcontrol
などのお好みの方法でインスタンスを停止します。データベースインスタンスが正常に停止すれば、hdbnsutil
を使用してインスタンスを登録することができます。再び、Linux の<sid>admユーザーを使用します。
コマンドラインツールのHDBを使用して、セカンダリを停止することができます。
suse02:~> HDB stop
SAP HANA 2.0から、システムレプリケーションは暗号化されています。そのため、鍵ファイルをプライマリサイトからセカンダリサイトにコピーする必要があります。
cd /usr/sap/<SID>/SYS/global/security/rsecssfs rsync -va {,<node1-siteB>:}$PWD/data/SSFS_<SID>.DAT rsync -va {,<node1-siteB>:}$PWD/key/SSFS_<SID>.KEY
セカンダリの登録は、 hdbnsutil -sr_register …を呼び出すことによってトリガーされます。
... suse02:~> hdbnsutil -sr_register --name=ROT \ --remoteHost=suse01 --remoteInstance=10 \ --replicationMode=sync --operationMode=logreplay adding site ... checking for inactive nameserver ... nameserver suse02:30001 not responding. collecting information ... updating local ini files ... done.
この例では、 remoteHost がプライマリノードであり、remoteInstance はデータベースインスタンス番号です(ここでは10)。
次に、データベースインスタンスを再起動し、システムレプリケーションステータスを確認します。セカンダリノードでは、このモードは「SYNC」または「SYNCMEM」のいずれかである必要があります。レプリケーションモードとしては"ASYNC" も可能ですが、 自動化されたクラスターテイクオーバーではサポートされません。.このモードは、セカンダリの登録中に定義されたsync オプションに依存します。
新たなセカンダリを起動するには、HDBコマンドラインツールを使用します。次に、 hdbnsutil -sr_stateConfiguration
を使用してSRシステムレプリケーション構成を確認します。
suse02:~> HDB start ... suse02:~> hdbnsutil -sr_stateConfiguration --sapcontrol=1 SAPCONTROL-OK: <begin> mode=sync site id=2 site name=ROT active primary site=1 primary masters=suse01 SAPCONTROL-OK: <end> done.
SAP HANAクラスター全体のレプリケーションステータスを表示するには、 プライマリノードで<sid>admユーザーとして、以下のコマンドを使用します。
systemReplicationStatus.py スクリプトは、現在のシステムレプリケーションに関する詳細情報を提供します。
suse01:~> HDBSettings.sh systemReplicationStatus.py --sapcontrol=1 ... site/2/SITE_NAME=ROT1 site/2/SOURCE_SITE_ID=1 site/2/REPLICATION_MODE=SYNC site/2/REPLICATION_STATUS=ACTIVE site/1/REPLICATION_MODE=PRIMARY site/1/SITE_NAME=WDF1 local_site_id=1 ...
7.4 SAP HANA SRシステムレプリケーションのテイクオーバーの手動テスト #
SAP HANAシステムレプリケーションをクラスターに統合する前に、手動でテイクオーバーを実行することが不可欠です。クラスターを使用しないテストは、基本動作(テイクオーバーと登録)が想定どおりに機能していることを確認するのに役立ちます。
ノード1でSAP HANAを停止します。
SAP HANAをノード2にテイクオーバーします。
ノード1をセカンダリとして登録します。
ノード1のSAP HANAを起動します。
同期ステータスがアクティブになるまで待機します。
7.5 オプションSAP HANA SRを手動で元の状態に再構築する #
システムを元の状態に戻します。
ノード2のSAP HANAを停止します。
SAP HANAをノード1にテイクオーバーします。
ノード2をセカンダリとして登録します。
ノード2でSAP HANAを起動します。
同期ステータスがアクティブになるまで待機します。
8 SAP HANA HA/DRプロバイダーの設定 #
この手順は、セカンダリの同期が失われた場合に、直ちにクラスターに通知する際に必須になります。このフックは、セカンダリが非同期になった時点で、HA/DRプロバイダーインタフェースを使用してSAP HANAによって呼び出されます。一般的には、最初のコミット保留が解除されたケースに該当します。システムレプリケーションが復帰したときに、SAP HANAによってフックが再び呼び出されます。
実行手順
SAPHanaSR Pythonフックを実装します。
システムレプリケーション運用モードを構成します。
<sidadm>からクラスターへのアクセスを許可します。
SAP HANAを起動します。
フックの統合をテストします。
8.1 SAPHanaSR Pythonフックを実装する #
この手順は両方のサイトで実行する必要があります。SAP HANAがHA/DRフックスクリプトを起動時に統合できるようにするには、SAP HANAを停止してglobal.iniを変更する必要があります。
HA/DRフックスクリプトを読み取り/書き込み可能なディレクトリにインストールします。
フックをglobal.iniに統合します(オフラインで実行するためにSAP HANAを停止する必要があります)
起動時にフックの統合を確認します。
SAPHanaSRパッケージ(バージョン0.153以降で使用可能)のフックを使用してください。必要に応じて、/ hana / share / myHooksなどのお好みのディレクトリにコピーします。フックは、すべてのSAP HANAクラスターノードで使用できる必要があります。
HDB またhsapcontrolを使用して、SAP HANAを停止します。
sapcontrol -nr <instanceNumber> -function StopSystem
[ha_dr_provider_SAPHanaSR] provider = SAPHanaSR path = /usr/share/SAPHanaSR execution_order = 1 [trace] ha_dr_saphanasr = info
8.2 システムレプリケーション運用モードを構成する #
システムがSAPHanaSRターゲットとして接続されている場合、 global.ini内に、運用モードを定義するエントリーを見つけることができます。 現時点では、以下のモードが利用できます。 現時点では、以下のモードが利用できます。
delta_datashipping
logreplay
logreplay_readaccess
反対方向にテイクオーバーして再登録されるまで、プライマリサイトにおける運用モードのエントリーは失われたままです。当初、利用可能な運用モードはdelta_datashippingでした。現在におけるHAでの推奨モードは、logreplayまたはlogreplay_readaccessです。logreplay運用モードを使用すると、SAP HANAシステムレプリケーションのセカンダリサイトがホットスタンバイシステムになります。すべての運用モードの詳細については、「SAP HANAのシステムレプリケーションを実行する方法」などのSAPドキュメントをご覧ください。
両方のglobal.iniファイルを確認し、必要に応じて運用モードを追加します。
- セクション
[ system_replication ]
- エントリー
operation_mode = logreplay
global.iniのパス: /hana/shared//global/hdb/custom/config/
[system_replication] operation_mode = logreplay
8.3 <sidadm>にクラスターへのアクセスを許可する #
SAPHanaSR pythonフックの現在のバージョンは、sudo
コマンドを使用することにより、<sidadm>ユーザーがクラスター属性にアクセスできるようにします。Linuxでは、visudo
を使用して、/etc/sudoers構成ファイルのviエディタを起動できます。
<sidadm>ユーザーは、hana__sid_site_srHook_ *クラスター属性を設定できる必要があります。SAP HANAシステムレプリケーションフックには、パスワード不要のフリーアクセスが求められます。次の例では、sudoアクセスを限定し、必要な属性を正確に設定することだけにしています。
<sid>を小文字の SAPシステムID( ha1
など)に置き換えます。
<sidadm>にsrHookの使用を許可する基本的なsudoersエントリー。
# SAPHanaSR-ScaleUp entries for writing srHook cluster attribute <sidadm> ALL=(ALL) NOPASSWD: /usr/sbin/crm_attribute -n hana_<sid>_site_srHook_*
高度なセキュリティレベルを達成するためのより詳細なsudoersエントリー。すべてのCmnd_Aliasエントリーは、それぞれ1行のエントリーとして定義する必要があります。次の例では、1行にドキュメントの書式設定によって強制された改行が含まれています。この例では、Cmnd_Aliasエントリーに4つの別々の行があり、1行は<sidadm>ユーザー用で、それ以外がコメント用です。
# SAPHanaSR-ScaleUp entries for writing srHook cluster attribute Cmnd_Alias SOK_SITEA = /usr/sbin/crm_attribute -n hana_<sid>_site_srHook_<siteA> -v SOK -t crm_config -s SAPHanaSR Cmnd_Alias SFAIL_SITEA = /usr/sbin/crm_attribute -n hana_<sid>_site_srHook_<siteA> -v SFAIL -t crm_config -s SAPHanaSR Cmnd_Alias SOK_SITEB = /usr/sbin/crm_attribute -n hana_<sid>_site_srHook_<siteB> -v SOK -t crm_config -s SAPHanaSR Cmnd_Alias SFAIL_SITEB = /usr/sbin/crm_attribute -n hana_<sid>_site_srHook_<siteB> -v SFAIL -t crm_config -s SAPHanaSR <sidadm> ALL=(ALL) NOPASSWD: SOK_SITEA, SFAIL_SITEA, SOK_SITEB, SFAIL_SITEB
9 クラスターの構成 #
この章では、SUSE Linux Enterprise Server for SAP ApplicationsとSAP HANA Database Integrationの一部である、SUSE Linux Enterprise High Availability Extensionクラスターソフトウェアの構成について解説します。
基本的なクラスター構成。
クラスターのプロパティとリソースを構成します。
9.1 基本的なクラスター構成 #
最初のステップは、基本的なクラスターフレームワークを設定することです。便宜上、YaST2またはha-cluster-initスクリプトを使用してください。2番目のCorosysncリングを追加し、UCAST通信に変更して、環境に合わせてタイムアウト値を調整することを強くお勧めします。
9.1.1 「ストレージベースフェンシング」のウォッチドッグを設定する #
SBDフェンシングメカニズム(ディスクレスまたはディスクベース)を使用する場合は、ウォッチドッグも設定する必要があります。ウォッチドッグは、システムがSBD(ディスクレスまたはディスクベース)にアクセスできなくなった場合に、ノードをリセットするために必要になります。ウォッチドッグドライバーをロードするようにLinuxシステムを構成することが必須になります。hpwdt、iTCO_wdtなどの、ハードウェアの#アシスタンスト(ほとんどの最新システムで利用可能)を備えたウォッチドッグを使用することを強くお勧めします。次善の策として、softdogモジュールを使用できます。
ウォッチドッグタイマーへのアクセス: 他のソフトウェアがウォッチドッグタイマーにアクセスすることはできません。常に1つのプロセスだけがアクセスできます。一部のハードウェアベンダーは、システムリセットにウォッチドッグを使用するシステム管理ソフトウェアを提供しています(例: HP ASRデーモン)。ウォッチドッグをSBDで使用する場合は、このようなソフトウェアを無効にする必要があります。
最適なウォッチドッグモジュールを選択します。または、カーネルバージョンと共にインストールされているドライバーのリストを調べる方法もあります。
ls -l /lib/modules/$(uname -r)/kernel/drivers/watchdog
ウォッチドッグモジュールがすでにロードされているかどうかを確認します。
lsmod | egrep "(wd|dog|i6|iT|ibm)"
結果が表示された場合は、システムにはウォッチドッグがすでにロードされています。そのウォッチドッグがウォッチドッグデバイスに対応していない場合は、そのモジュールをアンロードする必要があります。
モジュールを安全にアンロードするには、まずアプリケーションがウォッチドッグデバイスを使用しているかどうかを確認します。
lsof /dev/watchdog rmmod <wrong_module>
ウォッチドッグモジュールを有効にして永続化します。以下の例ではsoftdogが使われていますが、いくつか制約がありますので他のオプションを優先してください。
echo softdog > /etc/modules-load.d/watchdog.conf systemctl restart systemd-modules-load
ウォッチドッグモジュールが正しくロードされていることを確認します。
lsmod | grep dog ls -l /dev/watchdog
ウォッチドッグのテストは、簡単な手順で実行できます。ウォッチドッグは、正規の手順を踏まずにシステムを強制的にリセット/シャットダウンするため、必ず最初にSAP HANAを切り替えてください。
ハードウェアウォッチドッグの場合は、ウォッチドッグがタイムアウトした後のアクションを事前に定義します。ウォッチドッグモジュールがロードされていて、他のアプリケーションによって制御されていない場合は、次の手順を実行します。
ウォッチドッグを継続的に更新せずに、ウォッチドッグをトリガーして、システムをリセットするか電源をオフにします。これが意図されたメカニズムです。次のコマンドは、システムのリセットまたは電源オフを強制します。
touch /dev/watchdog
softdogモジュールが使用されている場合は、以下のアクションを実行できます。
echo 1> /dev/watchdog
テストが成功した場合は、すべてのクラスターメンバーにウォッチドッグを実装する必要があります。
9.1.2 ha-cluster-init
を使用したクラスターの初期設定 #
詳細については、SUSE Linux Enterprise High Availability Extensionの自動クラスター設定を参照してください。
初期設定を作成するには、ha-cluster-init
コマンドを使用してダイアログに従ってください。これは、最初のクラスターノードだけに実行してください。
suse01:~> ha-cluster-init -u -s <sbddevice>
このコマンドは、以下を含む基本的なクラスターフレームワークを構成します。
SSH鍵
構成ファイルを転送するためのcsync2
SBD(1台以上のデバイス)
corosync(1つ以上のリング)
HAWK Webインタフェース
ha-cluster-init
の要求に基づいて、haclusterユーザーのパスワードを変更します。
9.1.3 CorosyncとSBD構成を適用する #
2番目のcorosyncリングを追加することをお勧めします。-uオプションを使用してha-cluster-initを開始しなかった場合は、corosyncを変更してUCAST通信を使用する必要があります。UCASTに変更するには、 systemctl stop pacemaker
を使用して、すでに稼働しているクラスターを停止します。corosync構成とSBDパラメータを設定した後に、クラスターを再起動します。
9.1.3.1 Corosync の構成 #
/etc/corosync/corosync.confファイルにある以下のブロックを確認します。また、本ドキュメントの最後に掲載されている例も参照してください。
totem { ... interface { ringnumber: 0 mcastport: 5405 ttl: 1 } #Transport protocol transport: udpu } nodelist { node { #ring0 address ring0_addr: 192.168.1.11 nodeid: 1 } }
9.1.3.2 SBD構成を適用する #
SBDデバイスを使用していない場合は、このセクションをスキップできますが、サポートされている別のフェンシングメカニズムを必ず実装してください。
詳細については、マニュアルのページsbd.8およびstonith_sbd.7をご覧ください。
パラメータ | 説明 |
---|---|
SBD_WATCHDOG_DEV | ウォッチドッグデバイスを定義します。ウォッチドッグの使用は必須です。SBDは、ウォッチドッグがないと信頼性が低くなります。ウォッチドッグの設定については、SLESマニュアルとSUSE TIDs 7016880を参照してください。 |
SBD_WATCHDOG_TIMEOUT | タイムアウトは秒単位で定義します。定義しなければ、ウォッチドッグはノードがパニックに陥るまで待機したままになります。 このパラメータは、使用中のストレージ環境と整合している必要があります。仮にストレージが30秒間ハングすることが予想される場合は、このパラメータをより長い値に設定する必要があります。一般的な設定は5秒ですが、本稼働環境では意欲的な値になり得ます。 このパラメータは、Pacemaker クラスターのstonith-watchdog-timeoutプロパティにも整合させる必要があります。stonith-watchdog-timeoutプロパティは、SBD_WATCHDOG_TIMEOUTの値以上に設定する必要があります。
|
SBD_STARTMODE | 起動モード。 |
SBD_PACEMAKER | Pacemakerクォーラムとノードに異常がないかをチェックをします。 |
以下では、/dev/disk/by-id/SBDA、および/dev/disk/by-id/SBDBを実際のsbdデバイス名に置き換えます。この例では、SBD_WATCHDOG_TIMEOUT
は15秒に設定されており、一般的な5秒に比べると意欲的な値ではありません。
# /etc/sysconfig/sbd SBD_DEVICE="/dev/disk/by-id/SBDA;/dev/disk/by-id/SBDB" SBD_WATCHDOG_DEV="/dev/watchdog" SBD_WATCHDOG_TIMEOUT=15 SBD_PACEMAKER="yes" SBD_STARTMODE="clean" SBD_OPTS=""
タイムアウトの計算に関して、詳しくは次のSUSE製品ドキュメントもご覧ください。https://documentation.suse.com/sle-ha/15-SP1/single-html/SLE-HA-guide/#sec-ha-storage-protect-watchdog-timings
9.1.3.3 SBDデバイスを確認する #
SBDデバイスを使用していない場合は、このセクションをスキップできますが、サポートされているフェンシングメカニズムを必ず実装してください。
両方のノードからSBDデバイスにアクセスでき、有効なレコードが含まれているか確認することをお勧めします。これを/etc/sysconfig/sbdで構成されているすべてのデバイスに対して確認してください。
suse01:~ # sbd -d /dev/disk/by-id/SBDA dump ==Dumping header on disk /dev/disk/by-id/SBDA Header version : 2.1 UUID : 0f4ea13e-fab8-4147-b9b2-3cdcfff07f86 Number of slots : 255 Sector size : 512 Timeout (watchdog) : 20 Timeout (allocate) : 2 Timeout (loop) : 1 Timeout (msgwait) : 40 ==Header on disk /dev/disk/by-id/SBDA is dumped
サンプルのタイムアウト値は初期値に過ぎませんので、ご使用の環境に合わせて調整してください。
さまざまなクラスターノードの現在のSBDエントリーを確認するには、sbd list
を使用します。すべてのエントリーがclear
されている場合、SBDデバイスにはフェンシングタスクがマークされません。
suse01:~ # sbd -d /dev/disk/by-id/SBDA list 0 suse01 clear
SBD構成パラメータの詳細については、 SUSE Linux Enterprise High-Availability Extension、およびTIDsが 7016880と7008216のストレージベースフェンシングセクションをご覧ください。
ここで、最初のノードでクラスターを再起動します(systemctl start pacemaker
)。
9.1.4 2番目のノードのクラスター構成 #
2ノードクラスターの2番目のノードは、ha-cluster-join
コマンドを実行して統合することができます。このコマンドは、IPアドレスか最初のクラスターノードの名前を要求します。必要なすべての構成ファイルがコピーされます。その結果、クラスターは両方のノードで起動されます。
# ha-cluster-join -c <host1>
9.1.5 初めてクラスターを確認する #
これで、初めて両方のノードでクラスターを確認し、オプションでクラスターを起動する時がきました。
suse01:~ # systemctl status pacemaker suse01:~ # systemctl status sbd suse02:~ # systemctl status pacemaker suse01:~ # systemctl start pacemaker suse02:~ # systemctl status sbd suse02:~ # systemctl start pacemaker
crm_monを使用してクラスターのステータスを確認します。「-r」オプションを使用して、構成済みで停止しているリソースも表示します。
# crm_mon -r
このコマンドは、空のクラスターを表示し、以下のような画面出力を表示します。ここで最も興味深い情報は、「online」オンラインステータスの2つのノードがある点と、「partition with quorum」というメッセージです。
Stack: corosync Current DC: suse01 (version 2.0.1+20190417.13d370ca9-3.6.1-2.0.1+20190417.13d370ca9) - partition with quorum Last updated: Wed Feb 5 15:06:35 2020 Last change: Wed Feb 5 15:04:42 2020 by hacluster via crmd on suse02 2 nodes configured 1 resource configured Online: [ suse01 suse02 ] Full list of resources: stonith-sbd (stonith:external/sbd): Started suse01
9.2 クラスターのプロパティとリソースを構成する #
このセクションでは、crm configure
シェルコマンドを使用して、制約、リソース、ブートストラップ、STONITHを構成する方法について説明します。このコマンドは、SUSE Linux Enterprise High Availability Extensionドキュメントの クラスターリソースの構成・管理(コマンドライン)セクションで説明されています。
crm
コマンドを使用して、オブジェクトをCRMに追加します。以下の例をローカルファイルにコピーし、ファイルを編集して、その構成をCIBにロードしてください。
suse01:~ # vi crm-fileXX suse01:~ # crm configure load update crm-fileXX
9.2.1 クラスターブートストラップなど #
最初の例では、クラスターのブートストラップオプション、リソース、運用のデフォルトを定義します。stonith-timeoutは、SBD msgwaitタイムアウトの1.2倍よりも大きくする必要があります。
suse01:~ # vi crm-bs.txt # enter the following to crm-bs.txt property $id="cib-bootstrap-options" \ stonith-enabled="true" \ stonith-action="reboot" \ stonith-timeout="150s" rsc_defaults $id="rsc-options" \ resource-stickiness="1000" \ migration-threshold="5000" op_defaults $id="op-options" \ timeout="600"
次に、この構成をクラスターに追加します。
suse01:~ # crm configure load update crm-bs.txt
9.2.2 STONITHデバイス #
ディスクレスSBDを使用している場合は、このセクションをスキップしてください。
以下の構成では、SBDディスクのSTONITHリソースを定義します。
# vi crm-sbd.txt # enter the following to crm-sbd.txt primitive stonith-sbd stonith:external/sbd \ params pcmk_delay_max="15"
再び、この構成をクラスターに追加します。
suse01:~ # crm configure load update crm-sbd.txt
IPMI/ILOによるフェンシングについては、 セクション9.2.3項 「IPMIをフェンシングメカニズムとして使用する」をご覧ください。
9.2.3 IPMIをフェンシングメカニズムとして使用する #
IPMI/ILOフェンシングの詳細については、クラスター製品ドキュメント (https://documentation.suse.com/sle-ha/15-SP1/single-html/SLE-HA-guide/)をご覧ください。IPMI STONITHリソースの例は、本ドキュメントのセクション13.4項 「IPMI STONITH手段の例」に掲載されています。
IPMIを使用するには、リモートマネジメントボードがIPMI標準と互換性を有している必要があります。
IPMIベースフェンシングでは、クラスターノードごとにプリミティブを設定する必要があります。各リソースは、1つのクラスターノードを確実にフェンスする役割を果たします。リモートマネジメントボードのIPアドレスとログインユーザー/パスワードをSTONITHリソースエージェントに適合させる必要があります。リモートマネジメントボードへのrootアクセスを提供する代わりに、特別なSTONITHユーザーを作成することをお勧めします。ロケーションルールは、ホストが独自のSTONITHリソースを実行しないことを保証する必要があります。
9.2.4 他のフェンシングメカニズムを使用する #
STONITHメカニズムとして、SBDを最初の選択肢、IPMIを2番目の選択肢として使用することをお勧めします。SUSE Linux Enterprise High Availability製品は、本書では取り上げていないその他のフェンシングメカニズムもサポートしています。
フェンシングの詳細については、SUSE Linux Enterprise High Availabilitガイドをご覧ください。
9.2.5 SAPHanaTopology #
次に、HANAインスタンスが起動する前に、必要なリソースのグループを定義します。crm-saphanatop.txtのようなテキストファイルで変更の準備をし、以下のコマンドと共にロードします。
crm configure load update crm-saphanatop.txt
# vi crm-saphanatop.txt # enter the following to crm-saphanatop.txt primitive rsc_SAPHanaTopology_HA1_HDB10 ocf:suse:SAPHanaTopology \ op monitor interval="10" timeout="600" \ op start interval="0" timeout="600" \ op stop interval="0" timeout="300" \ params SID="HA1" InstanceNumber="10" clone cln_SAPHanaTopology_HA1_HDB10 rsc_SAPHanaTopology_HA1_HDB10 \ meta clone-node-max="1" interleave="true"
すべてのパラメータに関する追加情報は、以下のコマンドを使って検索することができます。
man ocf_suse_SAPHanaTopology
再び、この構成をクラスターに追加します。
suse01:~ # crm configure load update crm-saphanatop.txt
ここで最も重要なパラメータはSIDとインスタンス番号です。これはSAP環境では自明のことです。これらのパラメータの他に、タイムアウト値や、開始、監視、停止の各動作は、いずれも典型的な調整可能なものです。
9.2.6 SAPHana #
次に、HANAインスタンスが起動する前に、必要なリソースのグループを定義します。crm-saphana.txtのようなテキストファイルで変更内容を編集して、 以下のコマンドと共にロードします。
crm configure load update crm-saphana.txt
パラメータ | パフォーマンス最適化 | コスト最適化 | マルチティア |
---|---|---|---|
PREFER_SITE_TAKEOVER | true | false | false / true |
AUTOMATED_REGISTER | false / true | false / true | false |
DUPLICATE_PRIMARY_TIMEOUT | 7200 | 7200 | 7200 |
パラメータ | 説明 |
---|---|
PREFER_SITE_TAKEOVER | 停止したプライマリをローカルで再起動する代わりに、RAがセカンダリインスタンスへのテイクオーバーを優先するかどうかを定義します。 |
AUTOMATED_REGISTER | 以前のプライマリを自動的に登録して、新しいプライマリのセカンダリにするかどうかを定義します。このパラメータを使用すると、システムレプリケーションの自動化のレベルを調整できます。
|
DUPLICATE_PRIMARY_TIMEOUT | デュアルプライマリの状況が発生した場合は、2つのプライマリのタイムスタンプの間に時間差が必要になります。時間差が時間間隔よりも小さい場合、クラスターは一方または両方のインスタンスを「WAITING」ステータスに維持します。これは、管理者がフェイルオーバーに対応する機会を与えるためです。以前のプライマリのノードが完全にクラッシュした場合、以前の プライマリは、時間差が経過した後に登録されます。SAP HANA RDBMS「だけ」がクラッシュした場合は、以前のプライマリが直ちに登録されます。この新たなプライマリへの登録後、すべてのデータはシステムレプリケーションによって上書きされます。 |
すべてのパラメータに関する追加情報は、次のコマンドで検索することができます。
man ocf_suse_SAPHana
# vi crm-saphana.txt # enter the following to crm-saphana.txt primitive rsc_SAPHana_HA1_HDB10 ocf:suse:SAPHana \ op start interval="0" timeout="3600" \ op stop interval="0" timeout="3600" \ op promote interval="0" timeout="3600" \ op monitor interval="60" role="Master" timeout="700" \ op monitor interval="61" role="Slave" timeout="700" \ params SID="HA1" InstanceNumber="10" PREFER_SITE_TAKEOVER="true" \ DUPLICATE_PRIMARY_TIMEOUT="7200" AUTOMATED_REGISTER="false" ms msl_SAPHana_HA1_HDB10 rsc_SAPHana_HA1_HDB10 \ meta clone-max="2" clone-node-max="1" interleave="true"
その構成をクラスターに追加します。
suse01:~ # crm configure load update crm-saphana.txt
ここでも、最も重要なパラメータは、やはりSIDとインスタンス番号です。これらのパラメータの他に、開始、昇格、監視、停止の各動作におけるタイムアウト値は、典型的な調整可能なパラメータです。
9.2.7 プライマリサイトの仮想IPアドレス #
クラスターに追加される最後のリソースは、仮想IPアドレスをカバーします。
# vi crm-vip.txt # enter the following to crm-vip.txt primitive rsc_ip_HA1_HDB10 ocf:heartbeat:IPaddr2 \ op monitor interval="10s" timeout="20s" \ params ip="192.168.1.20"
このファイルをクラスターにロードします。
suse01:~ # crm configure load update crm-vip.txt
ほとんどのインストレーションでは、ipパラメータのみをクライアントシステムに提供する仮想IPアドレスに設定する必要があります。
9.2.8 制約 #
2つの制約により、クライアントデータベースアクセス用の仮想IPアドレスの正しい配置と、SAPHanaとSAPHanaTopologyの2つのリソースエージェント間の開始順序が調整されます。
# vi crm-cs.txt # enter the following to crm-cs.txt colocation col_saphana_ip_HA1_HDB10 2000: rsc_ip_HA1_HDB10:Started \ msl_SAPHana_HA1_HDB10:Master order ord_SAPHana_HA1_HDB10 Optional: cln_SAPHanaTopology_HA1_HDB10 \ msl_SAPHana_HA1_HDB10
このファイルをクラスターにロードします。
suse01:~ # crm configure load update crm-cs.txt
9.2.9 アクティブ/アクティブ読み取り可能なシナリオ #
この手順はオプションです。読み取り可能なセカンダリによるアクティブ/アクティブSAP HANAシステムレプリケーションがある場合は、必要となる2番目の仮想IPアドレスをクラスターに統合することが可能です。これは、2番目の仮想IPアドレスリソースと、そのアドレスをセカンダリサイトにバインドする場所の制約を追加することによって行われます。
# vi crm-re.txt # enter the following to crm-re.txt primitive rsc_ip_HA1_HDB10_readenabled ocf:heartbeat:IPaddr2 \ op monitor interval="10s" timeout="20s" \ params ip="192.168.1.21" colocation col_saphana_ip_HA1_HDB10_readenabled 2000: \ rsc_ip_HA1_HDB10_readenabled:Started msl_SAPHana_HA1_HDB10:Slave
10 クラスターのテスト #
テストのリストは、本ドキュメントの次回の更新時に改訂される予定です。
どのようなクラスターにおいても、テストは極めて重要です。顧客の要望に基づくすべてのテストケースが実施され、完全に適合していることを確認してください。これを怠ると、本稼働環境でプロジェクトが失敗する可能性があります。
テストの前提条件は、特に断りがない限り、両方のノードが起動され、クラスターの通常のメンバーとHANA RDBMSが実行されていることです。また、システムレプリケーションは同期している状態(SOK)です。
10.1 半自動化テストケース #
このテストでは、次の想定をしています。PREFER_SITE_TAKEOVER="true"
およびAUTOMATED_REGISTER="false".
以下のテストは順番に実行されるように設計されており、テスト結果は終了ステータスによって異なります。
10.1.1 テスト: サイトA(ノード1)のプライマリデータベースを停止する #
プライマリデータベース
プライマリHANAデータベースを通常のクラスター動作中に停止します。
<sid>admとして、プライマリHANAデータベースを 正しい手順で停止します。
suse01# HDB stop
<sid>admとして、テイクオーバー後(ノード2で)に古いプライマリ(ノード1の)を新しいプライマリに手動で登録します。
suse01# hdbnsutil -sr_register --remoteHost=suse02 --remoteInstance=10 \ --replicationMode=sync --operationMode=logreplay \ --name=WDF
ルートとして、ノード1でHANAデータベース(現在はセカンダリ)を再起動します。
suse01# crm resource refresh rsc_SAPHana_HA1_HDB10 suse01
クラスターは、プライマリHANAデータベース(ノード1)が停止したことを検出し、リソースを失敗としてマークします。
クラスターは、(ノード2の)セカンダリHANAデータベースを昇格させ、プライマリとして引き継ぎます。
クラスターは、IPアドレスを(ノード2の)新しいプライマリに移行します。
その後しばらくすると、クラスターは(ノード1で)失敗したプライマリのsync_stateをSFAILとして表示します。
AUTOMATED_REGISTER="false"であることから、クラスターは失敗したHANAデータベースを再起動したり、新しいプライマリに登録することはしせん。
手動での登録とリソースの更新後、システムとレプリケーションのペアは同期ステータス(SOK)としてマークされます。
クラスターの「failed actions」は、リカバリー手順に従ってクリーンアップされます。
10.1.2 テスト: サイトB(ノード2)のプライマリデータベースを停止する #
- コンポーネント:
プライマリデータベース
- 説明:
プライマリHANAデータベースを通常のクラスター動作中に停止します。
<sid>admとして、データベースを正しい手順で停止します。
suse02# HDB stop
<sid>admとして、テイクオーバー後(ノード1で)に古いプライマリ(ノード2の)を新しいプライマリに手動で登録します。
suse02# hdbnsutil -sr_register --remoteHost=suse01 --remoteInstance=10 \ --replicationMode=sync --operationMode=logreplay \ --name=ROT
ルートとして、ノード1でHANAデータベース(現在はセカンダリ)を再起動します。
suse02# crm resource refresh rsc_SAPHana_HA1_HDB10 suse02
クラスターは(ノード2で)停止したプライマリHANAデータベースを検出し、リソースを失敗としてマークします。
クラスターは、(ノード1の)セカンダリHANAデータベースを昇格させ、プライマリとして引き継ぎます。
クラスターは、IPアドレスを(ノード1の)新しいプライマリに移行します。
その後しばらくすると、クラスターは(ノード2で)失敗したプライマリのsync_stateをSFAILとして表示します。
AUTOMATED_REGISTER="false"であることから、クラスターは失敗したHANAデータベースを再起動したり、新しいプライマリに登録することはしせん。
手動での登録とリソースの更新後、システムとレプリケーションのペアは同期ステータス(SOK)としてマークされます。
クラスターの「failed actions」は、リカバリー手順に従ってクリーンアップされます。
10.1.3 テスト: サイトA(ノード1)のプライマリデータベースをクラッシュさせる #
- コンポーネント:
プライマリデータベース
- 説明:
プライマリデータベースシステムの完全停止をシミュレートします。
<sid>admとして、シグナルを使用してプライマリデータベースシステムを強制終了します。
suse01# HDB kill-9
<sid>admとして、テイクオーバー後(ノード2で)に古いプライマリ(ノード1の)を新しいプライマリに手動で登録します。
suse01# hdbnsutil -sr_register --remoteHost=suse02 --remoteInstance=10 \ --replicationMode=sync --operationMode=logreplay \ --name=WDF
ルートとして、ノード1でHANAデータベース(現在はセカンダリ)を再起動します。
suse01# crm resource refresh rsc_SAPHana_HA1_HDB10 suse01
クラスターは(ノード1で)停止したプライマリHANAデータベースを検出し、リソースを失敗としてマークします。
クラスターは、(ノード2の)セカンダリHANAデータベースを昇格させ、プライマリとして引き継ぎます。
クラスターは、IPアドレスを(ノード2の)新しいプライマリに移行します。
その後しばらくすると、クラスターは(ノード1で)失敗したプライマリのsync_stateをSFAILとして表示します。
AUTOMATED_REGISTER="false"であることから、クラスターは失敗したHANAデータベースを再起動したり、新しいプライマリに登録することはしせん。
手動での登録とリソースの更新後、システムとレプリケーションのペアは同期ステータス(SOK)としてマークされます。
クラスターの「failed actions」は、リカバリー手順に従ってクリーンアップされます。
10.1.4 テスト: サイトB(ノード2)のプライマリデータベースをクラッシュさせる #
- コンポーネント:
プライマリデータベース
- 説明:
プライマリデータベースシステムの完全停止をシミュレートします。
<sid>admとして、シグナルを使用してプライマリデータベースシステムを強制終了します。
suse02# HDB kill-9
<sid>admとして、テイクオーバー後(ノード1で)に古いプライマリ(ノード2の)を新しいプライマリに手動で登録します。
suse02# hdbnsutil -sr_register --remoteHost=suse01 --remoteInstance=10 \ --replicationMode=sync --operationMode=logreplay \ --name=ROT
ルートとして、ノード1でHANAデータベース(現在はセカンダリ)を再起動します。
suse02# crm resource refresh rsc_SAPHana_HA1_HDB10 suse02
クラスターは(ノード2で)停止したプライマリHANAデータベースを検出し、リソースを失敗としてマークします。
クラスターは、(ノード1の)セカンダリHANAデータベースを昇格させ、プライマリとして引き継ぎます。
クラスターは、IPアドレスを(ノード1の)新しいプライマリに移行します。
その後しばらくすると、クラスターは(ノード2で)失敗したプライマリのsync_stateをSFAILとして表示します。
AUTOMATED_REGISTER="false"であることから、クラスターは失敗したHANAデータベースを再起動したり、新しいプライマリに登録することはしせん。
手動での登録とリソースの更新後、システムとレプリケーションのペアは同期ステータス(SOK)としてマークされます。
クラスターの「failed actions」は、リカバリー手順に従ってクリーンアップされます。
10.1.5 テスト: サイトA(ノード1)のプライマリデータベースをクラッシュさせる #
- コンポーネント:
プライマリサイトのクラスターノード
- 説明:
プライマリHANAデータベースを実行しているプライマリサイトノードのクラッシュをシミュレートします。
「fast-reboot」システムリクエストを送信して、プライマリノードをクラッシュさせます。
suse01# echo 'b' > /proc/sysrq-trigger
SBDフェンシングが使用されていると、pacemakerはフェンスされた後、自動的に再起動しません。この場合は、すべてのSBDデバイスのフェンシングフラグをクリアしてから、pacemakerを起動します。
suse01# sbd -d /dev/disk/by-id/SBDA message suse01 clear suse01# sbd -d /dev/disk/by-id/SBDB message suse01 clear ...
クラスターフレームワークを開始します。
suse01# systemctl start pacemaker
<sid>admとして、テイクオーバー後(ノード2で)に古いプライマリ(ノード1の)を新しいプライマリに手動で登録します。
suse01# hdbnsutil -sr_register --remoteHost=suse02 --remoteInstance=10 \ --replicationMode=sync --operationMode=logreplay \ --name=WDF
ルートとして、ノード1でHANAデータベース(現在はセカンダリ)を再起動します。
suse01# crm resource refresh rsc_SAPHana_HA1_HDB10 suse01
クラスターは、失敗したノード(ノード1)を検出し、それをUNCLEANと宣言し、セカンダリノード(ノード2)を「partition WITHOUT quorum」ステータス に設定します。
クラスターは失敗したノード(ノード1)をフェンスします。
クラスターは、失敗したノード(ノード1)をOFFLINEとして宣言します。
クラスターは、(ノード2の)セカンダリHANAデータベースを昇格させ、プライマリとして引き継ぎます。
クラスターは、IPアドレスを(ノード2の)新しいプライマリに移行します。
その後しばらくすると、クラスターは(ノード2で)失敗したプライマリのsync_stateをSFAILとして表示します。
SBDフェンシングが使用されている場合は、手動のリカバリー手順を使用し、そのノードのフェンシングフラグをクリアしてpacemakerを再起動します。
AUTOMATED_REGISTER="false"であることから、クラスターは失敗したHANAデータベースを再起動したり、新しいプライマリに登録することはしせん。
手動での登録とリソースの更新後、システムとレプリケーションのペアは同期ステータス(SOK)としてマークされます。
クラスターの「failed actions」は、リカバリー手順に従ってクリーンアップされます。
10.1.6 テスト: サイトB(ノード2)のプライマリノードをクラッシュさせる #
- コンポーネント:
セカンダリサイトのクラスターノード
- 説明:
プライマリHANAデータベースを実行しているセカンダリサイトノードのクラッシュをシミュレートします。
「fast-reboot」システムリクエストを送信して、セカンダリノードをクラッシュさせます。
suse02# echo 'b' > /proc/sysrq-trigger
SBDフェンシングが使用されていると、pacemakerはフェンスされた後、自動的に再起動しません。この場合は、すべてのSBDデバイスのフェンシングフラグをクリアしてから、pacemakerを起動します。
suse02# sbd -d /dev/disk/by-id/SBDA message suse02 clear suse02# sbd -d /dev/disk/by-id/SBDB message suse02 clear ...
クラスターフレームワークを起動します。
suse02# systemctl start pacemaker
<sid>admとして、テイクオーバー後(ノード1で)に古いプライマリ(ノード2の)を新しいプライマリに手動で登録します。
suse02# hdbnsutil -sr_register --remoteHost=suse01 --remoteInstance=10 \ --replicationMode=sync --operationMode=logreplay \ --name=ROT
ルートとして、ノード2でHANAデータベース(現在はセカンダリ)を再起動します。
suse02# crm resource refresh rsc_SAPHana_HA1_HDB10 suse02
クラスターは、セカンダリノード(ノード2)が失敗したことを検出し、UNCLEANと宣言して、プライマリノード(ノード1)を「partition WITHOUT quorum」ステータス に設定します。
クラスターは、失敗したノード(ノード2)をフェンスします。
クラスターは、障害が発生したノード(ノード2)をOFFLINEとして宣言します。
クラスターは、(ノード1の)セカンダリHANAデータベースを昇格させ、プライマリとして引き継ぎます。
クラスターは、IPアドレスを(ノード1の)新しいプライマリに移行します。
その後しばらくすると、クラスターは(ノード2で)停止したセカンダリのsync_stateをSFAILとして表示します。
SBDフェンシングが使用されている場合は、手動のリカバリー手順を使用し、そのノードのフェンシングフラグをクリアしてpacemakerを再起動します。
AUTOMATED_REGISTER="false"であることから、クラスターは失敗したHANAデータベースを再起動したり、新しいプライマリに登録することはしせん。
手動での登録とリソースの更新後、システムとレプリケーションのペアは同期ステータス(SOK)としてマークされます。
クラスターの「failed actions」は、リカバリー手順に従ってクリーンアップされます。
10.1.7 テスト: サイトB(ノード2)のセカンダリデータベースを停止する #
- コンポーネント:
セカンダリHANAデータベース
- 説明:
セカンダリHANAデータベースを通常のクラスター動作中に停止します。
<sid>admとして、セカンダリHANAデータベースを正しい手順で停止します。
suse02# HDB stop
ルートとして、セカンダリHANAデータベース(ノード2)の失敗したリソースのステータスを更新します。
suse02# crm resource refresh rsc_SAPHana_HA1_HDB10 suse02
クラスターは、セカンダリデータベース(ノード2)が停止したことを検出し、リソースを失敗としてマークします。
クラスターはシステムレプリケーションの障害を検出し、失敗(SFAIL)としてマークします。
クラスターは、同じノード(ノード2)でセカンダリHANAデータベースを再起動します。
クラスターは、システムレプリケーションが再び同期していることを検出し、それをok(SOK)としてマークします。
クラスターの「failed actions」は、リカバリー手順に従ってクリーンアップされます。
10.1.8 テスト: サイトB(ノード2)のセカンダリデータベースをクラッシュさせる #
- コンポーネント:
セカンダリHANAデータベース
- 説明:
セカンダリデータベースシステムの完全停止をシミュレートします。
<sid>adm.として、シグナルを使用してセカンダリデータベースシステムを強制終了します。
suse02# HDB kill-9
ルートとして、セカンダリHANAデータベース(ノード2)の失敗したリソースステータスをクリーンアップします。
suse02# crm resource refresh rsc_SAPHana_HA1_HDB10 suse02
クラスターは、セカンダリデータベース(ノード2)が停止したことを検出し、リソースを失敗としてマークします。
クラスターはシステムレプリケーションの障害を検出し、失敗(SFAIL)としてマークします。
クラスターは、同じノード(ノード2)でセカンダリHANAデータベースを再起動します。
クラスターは、システムレプリケーションが再び同期していることを検出し、それをok(SOK)としてマークします。
クラスターの「failed actions」は、リカバリー手順に従ってクリーンアップされます。
10.1.9 テスト: サイトB(Node2)のセカンダリノードをクラッシュさせる #
- コンポーネント:
セカンダリサイトのクラスターノード
- 説明:
セカンダリHANAデータベースを実行しているセカンダリサイトノードのクラッシュをシミュレートします。
「fast-reboot」システムリクエストを送信して、セカンダリノードをクラッシュさせます。
suse02# echo 'b' > /proc/sysrq-trigger
SBDフェンシングが使用されていると、pacemakerはフェンスされた後、自動的に再起動しません。この場合は、すべてのSBD デバイスのフェンシングフラグをクリアしてから、pacemakerを起動します。
suse02# sbd -d /dev/disk/by-id/SBDA message suse02 clear suse02# sbd -d /dev/disk/by-id/SBDB message suse02 clear ...
クラスターフレームワークを起動します。
suse02# systemctl start pacemaker
クラスターは、セカンダリノード(ノード2)が失敗したことを検出し、UNCLEANと宣言して、プライマリノード(ノード1)を「partition WITHOUT quorum」ステータス に設定します。
クラスターは、失敗したノード(ノード2)をフェンスします。
クラスターは、障害が発生したノード(ノード2)をOFFLINEとして宣言します。
その後しばらくすると、クラスターは(ノード2で)停止したセカンダリのsync_stateをSFAILとして表示します。
SBDフェンシングが使用されている場合は、手動のリカバリー手順を使用し、そのノードのフェンシングフラグをクリアしてpacemakerを再起動します。
フェンスされたノード(ノード2)がクラスターに復帰すると、以前のセカンダリHANAデータベースが自動的に起動します。
クラスターは、システムレプリケーションが再び同期していることを検出し、それをok(SOK)としてマークします。
10.1.10 テスト: レプリケーションLANの障害 #
- コンポーネント:
レプリケーションLAN
- 説明:
プライマリノードとセカンダリノード間のレプリケーションLAN接続の切断。
レプリケーションLAN上のクラスターノード間の接続を切断します。
レプリケーションLAN上のクラスターノード間の接続を再確立します。
その後しばらくすると、クラスターはセカンダリ(ノード2)のsync_stateをSFAILとして表示します。
プライマリHANAデータベース(ノード1)「HDBSettings.sh systemReplicationStatus.py」は 「CONNECTION TIMEOUT」を示し、セカンダリHANAデータベース(ノード2)はプライマリデータベース(ノード1)に接続できません。
プライマリHANAデータベースは引き続き「normal」として動作しますが、システムレプリケーションは実行されないため、有効なテイクオーバー先ではなくなります。
LAN接続が再確立されると、HDBはHANAデータベース間の接続を自動的に検出して、システムレプリケーションプロセスを再起動します。
クラスターは、システムレプリケーションが再び同期していることを検出し、それをok(SOK)としてマークします。
10.2 完全自動化のテストケース #
以降のテスト説明では、PREFER_SITE_TAKEOVER="true」 およびAUTOMATED_REGISTER="true".を前提にしています。
以下のテストは順番に実行されるように設計されており、テスト結果は終了ステータスによって異なります。
10.2.1 テスト: サイトAのプライマリデータベースを停止する #
プライマリデータベース
プライマリHANAデータベースを通常のクラスター動作中に停止します。
<sid>admとして、プライマリHANAデータベースを 正しい手順で停止します。
suse01# HDB stop
すべて自動化されていますので手動操作は不要です。
ルートとして、ノード1のクラスターリソースを更新します。
suse01# crm resource refresh rsc_SAPHana_HA1_HDB10 suse01
クラスターは(ノード1で)停止したプライマリHANAデータベースを検出し、リソースを失敗としてマークします。
クラスターは、(ノード2の)セカンダリHANAデータベースを昇格させ、プライマリとして引き継ぎます。
クラスターは、IPアドレスを(ノード2の)新しいプライマリに移行します。
その後しばらくすると、クラスターは(ノード1で)失敗したプライマリのsync_stateをSFAILとして表示します。
AUTOMATED_REGISTER="true" により、クラスターは失敗したHANAデータベースを再起動し、新しいプライマリに登録します。
自動的に登録され、リソースが更新された後、システムレプリケーションペアは同期ステータス(SOK)としてマークされます。
クラスターの「failed actions」は、リカバリー手順に従ってクリーンアップされます。
10.2.2 テスト: サイトB(ノード2)のプライマリノードをクラッシュさせる #
サイトBのクラスターノード
プライマリHANAデータベースを実行しているサイトBノードのクラッシュをシミュレートします。
「fast-reboot」システムリクエストを送信して、セカンダリノードをクラッシュさせます。
suse02# echo 'b' > /proc/sysrq-trigger
SBDフェンシングが使用されていると、pacemakerはフェンスされた後、自動的に再起動しません。この場合は、すべてのSBD デバイスのフェンシングフラグをクリアしてから、pacemakerを起動します。
suse02# sbd -d /dev/disk/by-id/SBDA message suse02 clear suse02# sbd -d /dev/disk/by-id/SBDB message suse02 clear ...
クラスターフレームワークを起動します。
suse02# systemctl start pacemaker
ルートとして、ノード2のクラスターリソースを更新します。
suse02# crm resource refresh rsc_SAPHana_HA1_HDB10 suse02
クラスターは、失敗したプライマノード(ノード2)を検出し、それをUNCLEANと宣言し、プライマリノード(ノード2)を「partition WITHOUT quorum」ステータス に設定します。
クラスターは、失敗したプライマリノード)ノード2)をフェンスします。
クラスターは、障害が発生したプライマリノード(ノード2)をOFFLINEとして宣言します。
クラスターは、(ノード1の)セカンダリHANAデータベースを昇格させ、プライマリとして引き継ぎます。
クラスターは、IPアドレスを(ノード1の)新しいプライマリに移行します。
その後しばらくすると、クラスターは(ノード2で)停止したセカンダリのsync_stateをSFAILとして表示します。
SBDフェンシングが使用されている場合は、手動のリカバリー手順を使用し、そのノードのフェンシングフラグをクリアしてpacemakerを再起動します。
フェンスされたノード(ノード2)がクラスターに復帰すると、以前のプライマリがセカンダリになります。
AUTOMATED_REGISTER="true" により、クラスターは失敗したHANAデータベースを再起動し、新しいプライマリに登録します。
クラスターは、システムレプリケーションが再び同期していることを検出し、それをok(SOK)としてマークします。
11 管理 #
11.1 注意事項 #
プロジェクトでは以下を必ず実行してください。
クラスターに他のリソースを追加する前にSTONITHを定義する。
集中的にテストする。
SAP HanaおよびSAPHanaTopologyの動作のタイムアウトを調整する。
PREFER_SITE_TAKEOVER ="true"、AUTOMATED_REGISTER ="false"およびDUPLICATE_PRIMARY_TIMEOUT ="7200"の設定で開始する。
プロジェクトでは以下を避けてください。
クラスター構成の性急な変更/再変更: ノードをスタンバイしてオンラインに再設定したり、マスター/スレーブリソースを停止/開始すること。
適切な時間に同期をしなかったり、ホスト、ユーザー、グループの名前を解決しないままクラスターを作成すること。
クローン、マスター/スレーブ、あるいはIPリソースのロケーションルールを追加すること。本設定ガイドで説明されているロケーションルールだけが許可されています。
crm-shell、HAWK、またはその他のツールでリソースを「migrate」または「move」すると、クライアント優先のロケーションルールが追加されるため、このアクティビティが完全に禁止されます。
11.2 監視とツール #
クラスターのステータスリクエストには、High Availability Web Console (HAWK)、SAP HANA Studiなど、さまざまコマンドラインツールを使用することができます。
11.2.1 HAWK – クラスターステータスなど #
インターネットブラウザを使用して、クラスターのステータスを確認できます。
Ha-cluster-initを使用してクラスターを設定し、上記で述べたようにすべてのパッケージをインストールすると、システムは非常に便利なWebインタフェースを提供してくれます。このグラフィカルなWebインタフェースを使用して、完全なクラスターステータスの概要を取得したり、管理タスクを実行したり、リソースとクラスターブートストラップのパラメータを構成することができます。この強力なユーザーインタフェースを網羅した製品マニュアルをご覧ください。
11.2.2 SAP HANA Studio #
データベース固有の管理とチェックは、SAP HANA Studioを使用して行うことができます。
11.2.3 クラスターコマンドラインツール #
簡単な概要は、 crm_mon
を呼び出すことで取得できます。-r
を使用すると、停止している構成済みのリソースも表示されます。-1
オプションは、crm_mon
に対して、定期的にではなく1回だけステータスを出力するように指定します。
Stack: corosync Current DC: suse01 (version 2.0.1+20190417.13d370ca9-3.6.1-2.0.1+20190417.13d370ca9) - partition with quorum Last updated: Thu Feb 6 12:20:03 2020 Last change: Thu Feb 6 12:19:43 2020 by root via crm_attribute on suse01 2 nodes configured 6 resources configured Online: [ suse01 suse02 ] Full list of resources: stonith-sbd (stonith:external/sbd): Started suse01 Clone Set: cln_SAPHanaTopology_HA1_HDB10 [rsc_SAPHanaTopology_HA1_HDB10] Started: [ suse01 suse02 ] Clone Set: msl_SAPHana_HA1_HDB10 [rsc_SAPHana_HA1_HDB10] (promotable) Masters: [ suse01 ] Slaves: [ suse02 ] rsc_ip_HA1_HDB10 (ocf::heartbeat:IPaddr2): Started suse01
詳細については、本マニュアルのページcrm_mon(8) を参照してください。
11.2.4 SAPHanaSRコマンドラインツール #
一部のSAPHanaまたはSAPHanaTopologyリソースエージェントの内部値を表示するには、SAPHanaSR-showAttr
プログラムを呼び出します。内部値、保存場所、およびそれらのパラメータ名は、次期バージョンで変更される可能性があります。SAPHanaSR-showAttr
コマンドは、常に正しい保管場所から値をフェッチします。
crm_attribute
のようなクラスターコマンドを使用して、クラスターから直接値をフェッチしないでください。このようなコマンドを使用すると、属性を別の保管場所やクラスターの外部に移す際にメソッドが壊れてしまいます。SAPHanaSR-showAttrは、最初はテストプログラムだけに使用し、自動システム監視には使用しないでください。
suse01:~ # SAPHanaSR-showAttr Host \ Attr clone_state remoteHost roles ... site srmode sync_state ... --------------------------------------------------------------------------------- suse01 PROMOTED suse02 4:P:master1:... WDF sync PRIM ... suse02 DEMOTED suse01 4:S:master1:... ROT sync SOK ...
SAPHanaSR-showAttr
は、scriptなど他の出力形式もサポートしています。スクリプト形式は、フィルターを実行できるようにすることを目的としています。バージョン0.153以降の SAPHanaSRパッケージは、SAPHanaSR-filter
フィルターエンジンも提供します。出力形式スクリプトを伴ったSAPHanaSR-showAttr
とSAPHanaSR-filter
を組み合わせると効果的なクエリを定義できます。
suse01:~ # SAPHanaSR-showAttr --format=script | \ SAPHanaSR-filter --search='remote' Thu Feb 6 12:28:10 2020; Hosts/suse01/remoteHost=suse02 Thu Feb 6 12:28:10 2020; Hosts/suse02/remoteHost=suse01
SAPHanaSR-replay-archive
は、hb_report
(crm_report
)アーカイブからのSAPHanaSR属性値の分析に役立ちます。これにより、事後分析が可能になります。
この例では、管理者はHDB kill-9
コマンドを使用してプライマリSAP HANAインスタンスを強制終了しました。この発生時刻は午後9:10頃です。
suse01:~ # hb_report -f 19:00 INFO: suse01# The report is saved in ./hb_report-1-11-11-2019.tar.bz2 INFO: suse01# Report timespan: 11/11/19 19:00:00 - 11/11/19 21:05:33 INFO: suse01# Thank you for taking time to create this report. suse01:~ # SAPHanaSR-replay-archive --format=script \ ./hb_report-1-11-11-2019.tar.bz2 | \ SAPHanaSR-filter --search='roles' --filterDouble Mon Nov 11 20:38:01 2019; Hosts/suse01/roles=4:P:master1:master:worker:master Mon Nov 11 20:38:01 2019; Hosts/suse02/roles=4:S:master1:master:worker:master Mon Nov 11 21:11:37 2019; Hosts/suse01/roles=1:P:master1::worker: Mon Nov 11 21:12:43 2019; Hosts/suse02/roles=4:P:master1:master:worker:master
上記の例の属性は、最初にsuse01がプライマリ(4:P)を実行し、suse02がセカンダリ(4:S)を実行していたことを示しています。
21:11(中央ヨーロッパ時間 – CET)に、suse01のプライマリが突然停止し、1:Pに低下しました。
クラスターが割込みテイクオーバーを開始しました。21:12(CET)に、以前のセカンダリが新しい実行マスターとして検出されました(4:Sから4:Pに変更)。
11.2.5 SAP HANA LandscapeHostConfiguration #
SAPHanaデータベースのステータスを確認し、クラスターが対応すべきかを確認するには、landscapeHostConfigurationスクリプトを使用して、Linux ユーザーの<sid>admとして呼び出します。
suse01:~> HDBSettings.sh landscapeHostConfiguration.py | Host | Host | ... NameServer | NameServer | IndexServer | IndexServer | | | Active | ... Config Role | Actual Role | Config Role | Actual Role | | ------ | ------ | ... ------------ | ----------- | ----------- | ----------- | | suse01 | yes | ... master 1 | master | worker | master | overall host status: ok
SAPHanaリソースエージェントは、SAP HAのガイドラインに従って、リターンコードを次のように解釈します。
リターンコード | 解釈 |
---|---|
4 | SAP HANAデータベースは問題なく稼働しています。クラスターはデータベースが正常に稼働中と解釈します。 |
3 | SAP HANAデータベースは稼働しており、ステータス情報が提供されています。クラスターはデータベースが正常に稼働中と解釈します。 |
2 | SAP HANAデータベースは稼働中であり、警告状態です。クラスターはデータベースが正常に稼働中と解釈します。 |
1 | SAP HANAデータベースは停止しています。本来データベースは稼働しているはずで、意図的に停止させていない場合は、テイクオーバーのトリガーになる可能性があります。 |
0 | 内部スクリプトエラー – 無視されます。 |
11.3 メンテナンス #
OSまたはSUSE Linux Enterprise High Availability Extensionのアップデートを受け取るには、ご使用のシステムをローカルのSUSE ManagerまたはSMTに登録するか、リモートのSUSEカスタマーセンターに登録することをお勧めします。
11.3.1 OSとクラスターをアップデートする #
クラスターソフトウェアを含むSUSE Linux Enterprise Server for SAP Applicationsパッケージのアップデートについては、SUSE Linux Enterprise High Availability Extension製品ドキュメントのクラスターをアップグレードしソフトウェアパッケージをアップデートするHigh Availability Administratioガイドに規定されているローリングアップデート手順に従ってください。
11.3.2 SAP HANAをアップデートする -– シームレスなSAP HANA保守 #
システムレプリケーションのSAP HANAデータベースシステムをアップデートするには、定義済みのSAPプロセスに準拠する必要があります。このセクションでは、システムレプリケーションを再び自動化するために、アップデート手順の前後に実行すべきステップについて説明します。
SUSEは、クラスター内のSAP HANA保守プロセスを最適化しました。改善された手順では、マスター/スレーブリソースを保守に設定し、残りのクラスター(SAPHanaTopologyクローンとIpaddr2 vIPリソース)をアクティブのままに保つだけです。アップデートされた手順を使用すると、仮想IPアドレスが実行中のプライマリを自動的に追跡できるため、クラスター内でシームレスなSAP HANA保守が可能になります。
クラスターがSAP HANAデータベースシステムで実行される保守作業に反応しないように準備します。マスター/スレーブリソースを管理対象外に設定し、クラスターノードを保守モードに設定します。
- アップデート前のタスク
マスター/スレーブリソースを保守モードに設定します。
crm resource maintenance <master-slave-resource>
本ガイドで指定したmaster-slave-resourceは
msl_SAPHana_HA1_HDB10
です。- アップデート
両方のSAP HANAデータベースシステムのSAPアップデートプロセスを実行します。この手順はSAPによって記述されています。
- アップデート後のタスク
保守後にプライマリ/セカンダリのロールが交換されることに留意してください。したがって、クラスターに対しては、状況に関わらずアップデートされたSAP HANAデータベースシステムへの再プローブを実施するように指示します。
crm resource refresh <master-slave-resource>
両方のサイトでSAP HANAのアップデートが完了したら、クラスターに保守プロセスが終了したことを通知します。これにより、再びクラスターはSAPをアクティブに制御および監視することができるようになります。
crm resource maintenance <master-slave-resource> off
11.3.3 SAP HANAプライマリを移行する #
次の手順では、プライマリがノード1で実行され、セカンダリがノード2で実行されていると想定しています。この目的は、ノードのロールを「exchange」することですので、最終的に、プライマリはノード2で実行され、セカンダリはノード1で実行されることになります。
ロールの交換には、さまざまな方法があります。以下の手順は、ネイティブHANAコマンドを使用してロールの変更を「accept」するようにクラスターに指示する方法を示しています。
- 移行前
マスター/スレーブリソースを保守モードに設定します。これはどのクラスターノードでも実行できます。
crm resource maintenance <master-slave-resource-name>
- 手動によるテイクオーバープロセス
プライマリSAP HANAデータベースシステムを停止します。この例では、<sid>admユーザーとしてノード1にコマンドを入力します。
HDB stop
セカンダリSAP HANAデータベースシステムでテイクオーバープロセスを開始します。この例では、<sid>admユーザーとしてノード2にコマンドを入力します。
hdbnsutil -sr_takeover
以前のプライマリを新しいセカンダリとして登録します。この例では、<sid>admユーザーとしてノード1にコマンドを入力します。
hdbnsutil -sr_register --remoteHost=suse02 --remoteInstance=10 \ --replicationMode=sync --name=WDF \ --operationMode=logreplay
新しいセカンダリSAP HANAデータベースシステムを起動します。この例では、<sid>admユーザーとしてノード1にコマンドを入力します。
HDB start
- 移行後
SAPHanaSR-showAttrが両方のSAP HANAデータベースシステムが再起動していることを示すまでしばらく待機します(フィールドロールは数字4で始まる必要があります)。新しいセカンダリには、「S」 (セカンダリ用)ロールが割り当てられている必要があります。
以前のマスター/スレーブのロールに関わらず、失敗したマスターを再監視するようにクラスターに指示します。ルートユーザーとして、このコマンドはどのクラスターノードでも送信することができます。
crm resource refresh master-slave-resource-name
マスター/スレーブリソースを再び管理対象のステータスに設定します。ルートユーザーとして、このコマンドはどのクラスターノードでも送信することができます。
crm resource maintenance <master-slave-resource-name> off
次に、クラスターを使用して、移行の一部を自動化する方法について説明します。SAPHanaSR-showAttr とSAPHanaSR-filterを使用してクエリ属性を定義する場合、バージョン0.153以降のSAPHanaSRが必要です。
forceオプションを使用して、このノードから「move away」するルールを作成します。
crm resource move <master-slave-resource-name> force
「move away」 (force)ルールにより、クラスターは現在のプライマリを停止します。その後、システムレプリケーションが以前に同期されていた場合は、セカンダリサイトでpromoteを実行します。システムレプリケーションのステータスが同期していない(SFAIL)場合は、プライマリを移行しないでください。
重要force オプションなしで移行すると、以前のプライマリが停止しないままテイクオーバーされることになります。forceオプションを使用した移行のみがサポートされます。
注記crm リソースのmove コマンドは、以前はmigrateという名称でした。migrateコマンドは現在でも有効ですが、すでに過去のものとみなされています。
セカンダリが新しいプライマリロールへと完全に引き継がれるまで待ちます。SAPHanaSR-showAttrコマンドラインツールを使用して、引き継がれたことを確認し、新しいプライマリの「roles」属性をチェックします。それは「4:P」で始まるはずです。
suse01:~ # SAPHanaSR-showAttr --format=script | \ SAPHanaSR-filter --search='roles' Mon Nov 11 20:38:50 2019; Hosts/suse01/roles=1:P:master1::worker: Mon Nov 11 20:38:50 2019; Hosts/suse02/roles=4:P:master1:master:worker:master
AUTOMATED_REGISTER="true"
と設定している場合は、この手順をスキップできます。さもなければ、以前のプライマリを登録する必要があります。この例では、<sid>admユーザーとしてノード1にコマンドを入力します。hdbnsutil -sr_register --remoteHost=suse02 --remoteInstance=10 \ --replicationMode=sync --operationMode=logreplay \ --name=WDF
リソースの禁止ルールをクリアして、クラスターが新しいセカンダリを起動できるようにします。
crm resource clear <master-slave-resource-name>
注記crm resourcのclearコマンドは、以前はunmigrateという名称でした。unmigrateコマンドはまだ有効ですが、すでに過去のものとみなされています。
新しいセカンダリが起動するまで待ちます。SAPHanaSR-showAttrコマンドラインツールを使用して、引き継がれたことを確認し、新しいプライマリの「roles」属性をチェックします。それは、「4:S」で始まるはずです。
suse01:~ # SAPHanaSR-showAttr --format=script | \ SAPHanaSR-filter --search='roles' Mon Nov 11 20:38:50 2019; Hosts/suse01/roles=4:S:master1::worker: Mon Nov 11 20:38:50 2019; Hosts/suse02/roles=4:P:master1:master:worker:master
12 役に立つリンク、マニュアル、SAPノート #
12.1 SUSEのベストプラクティスなど #
- ブログシリーズ#towardsZeroDowntime
- SUSE Linux Enterprise上のSAPにおけるベストプラクティス
- 2014年のブログ - SAP HANA®のフェイルセーフ運用: SUSE、高可用性ソリューションを拡張
12.2 SUSE製品ドキュメント #
- SUSE製品マニュアルとドキュメント
- 現行のSLES for SAPオンラインドキュメント
- 現行のSUSE Linux Enterprise High Availability Extensionオンラインドキュメント
- Tuning guide for SUSE Linux Enterprise Server
https://documentation.suse.com/sles/15-SP1/html/SLES-all/book-sle-tuning.html
- Storage administration guide for SUSE Linux Enterprise Server
https://documentation.suse.com/sles/15-SP1/html/SLES-all/book-storage.html
- リリースノート
- TID Estimate correct multipath timeout
- TID How to load the correct watchdog kernel module
- TID Addressing file system performance issues on NUMA machines
- TID Overcommit Memory in SLES
- SLES技術情報
- XFS file system
https://www.suse.com/communities/conversations/xfs-the-file-system-of-choice/
12.3 マニュアルページ #
- crm
crm.8
- crm_simulate
crm_simulate.8
- cs_clusterstate
cs_clusterstate.8
- ocf_suse_SAPHana
ocf_suse_SAPHana.7
- ocf_suse_SAPHanaTopology
ocf_suse_SAPHanaTopology.7
- sbd
sbd.8
- stonith_sbd
stonith_sbd.7
- SAPHanaSR
SAPHanaSR.7
- SAPHanaSR-showAttr
SAPHanaSR-showAttr.8
- SAPHanaSR-replay-archive
SAPHanaSR-replay-archive.8
- SAPHanaSR_manitenance_examples
SAPHanaSR_manitenance_examples.8
12.4 SAP製品ドキュメント #
- SAP HANA Installation and Update Guide
http://help.sap.com/hana/SAP_HANA_Server_Installation_Guide_en.pdf
- SAP HANA Administration Guide
http://help.sap.com/hana/SAP_HANA_Administration_Guide_en.pdf
12.5 SAPノート #
- 2578899 - SUSE Linux Enterprise Server 15: インストレーションノート
- 2684254 - SAP HANA DB: Recommended OS settings for SLES 15 / SLES for SAP Applications 15
- 1876398 - Network configuration for System Replication in HANA SP6
- 611361 - Hostnames of SAP servers
- 1275776 - Preparing SLES for Sap Environments
- 1514967 - SAP HANA: セントラルノート
- 1523337 - SAP In-Memory Database 1.0: セントラルノート
- 2380229 - SAP HANA Platform 2.0 - Central Note
- 1501701 - Single Computing Unit Performance and Sizing
- 1944799 - SAP HANA Guidelines for SLES Operating System Installation
- 1890444 - Slow HANA system due to CPU power save mode
- 1888072 - SAP HANA DB: Indexserver crash in strcmp sse42
- 1846872 - "No space left on device" error reported from HANA
13 例 #
13.1 ha-cluster-init
構成の例 #
suse01:~ # ha-cluster-init -u Generating SSH key Configuring csync2 Generating csync2 shared key (this may take a while)...done csync2 checking files...done Configure Corosync (unicast): This will configure the cluster messaging layer. You will need to specify a network address over which to communicate (default is eth0's network, but you can use the network address of any active interface). Address for ring0 [192.168.1.11] Port for ring0 [5405] Configure SBD: If you have shared storage, for example a SAN or iSCSI target, you can use it avoid split-brain scenarios by configuring SBD. This requires a 1 MB partition, accessible to all nodes in the cluster. The device path must be persistent and consistent across all nodes in the cluster, so /dev/disk/by-id/* devices are a good choice. Note that all data on the partition you specify here will be destroyed. Do you wish to use SBD (y/n)? y Path to storage device (e.g. /dev/disk/by-id/...), or "none" []/dev/disk/by-id/SBDA WARNING: All data on /dev/disk/by-id/SBDA will be destroyed! Are you sure you wish to use this device (y/n)? y Initializing SBD......done Hawk cluster interface is now running. To see cluster status, open: https://192.168.1.11:7630/ Log in with username 'hacluster', password 'linux' You should change the hacluster password to something more secure! Waiting for cluster........done Loading initial cluster configuration Configure Administration IP Address: Optionally configure an administration virtual IP address. The purpose of this IP address is to provide a single IP that can be used to interact with the cluster, rather than using the IP address of any specific cluster node. Do you wish to configure a virtual IP address (y/n)? n Done (log saved to /var/log/ha-cluster-bootstrap.log)
13.2 クラスター構成の例 #
以下は、2ノードのクラスター(suse01、suse02)と、SID HA1およびインスタンス番号10のSAP HANAデータベースに対する完全なcrm構成を示しています。この例の仮想IPアドレスは192.168.1.20です。
node suse01 node suse02 primitive rsc_SAPHanaTopology_HA1_HDB10 ocf:suse:SAPHanaTopology \ op monitor interval=10 timeout=300 \ op start interval=0 timeout=300 \ op stop interval=0 timeout=300 \ params SID=HA1 InstanceNumber=10 primitive rsc_SAPHana_HA1_HDB10 ocf:suse:SAPHana \ op monitor interval=61 role=Slave timeout=700 \ op start interval=0 timeout=3600 \ op stop interval=0 timeout=3600 \ op promote interval=0 timeout=3600 \ op monitor interval=60 role=Master timeout=700 \ params SID=HA1 InstanceNumber=10 PREFER_SITE_TAKEOVER=true \ DUPLICATE_PRIMARY_TIMEOUT=7200 AUTOMATED_REGISTER=false primitive rsc_ip_HA1_HDB10 ocf:heartbeat:IPaddr2 \ op monitor interval=10 timeout=20 \ params ip="192.168.1.20" primitive stonith-sbd stonith:external/sbd \ params pcmk_delay_max=15 ms msl_SAPHana_HA1_HDB10 rsc_SAPHana_HA1_HDB10 \ meta clone-max=2 clone-node-max=1 interleave=true clone cln_SAPHanaTopology_HA1_HDB10 rsc_SAPHanaTopology_HA1_HDB10 \ meta clone-node-max=1 interleave=true colocation col_saphana_ip_HA1_HDB10 2000: \ rsc_ip_HA1_HDB10:Started msl_SAPHana_HA1_HDB10:Master order ord_SAPHana_HA1_HDB10 2000: \ cln_SAPHanaTopology_HA1_HDB10 msl_SAPHana_HA1_HDB10 property cib-bootstrap-options: \ dc-version="1.1.19+20180928.0d2680780-1.8-1.1.19+20180928.0d2680780" \ cluster-infrastructure=corosync \ stonith-enabled=true \ stonith-action=reboot \ stonith-timeout=150s \ last-lrm-refresh=1398346620 rsc_defaults rsc-options: \ resource-stickiness=1000 \ migration-threshold=5000 op_defaults op-options \ timeout=600 \ record-pending=true
13.3 /etc/corosync/corosync.confの例 #
次のファイルは、典型的なリングが1つのcorosync構成を示しています。詳細および追加のリングについては、SUSE製品ドキュメントをご覧ください。
# Read the corosync.conf.5 manual page totem { version: 2 secauth: on crypto_hash: sha1 crypto_cipher: aes256 cluster_name: suse-ha clear_node_high_bit: yes token: 5000 token_retransmits_before_loss_const: 10 join: 60 consensus: 6000 max_messages: 20 interface { ringnumber: 0 mcastport: 5405 ttl: 1 } transport: udpu } logging { fileline: off to_stderr: no to_logfile: no logfile: /var/log/cluster/corosync.log to_syslog: yes debug: off timestamp: on logger_subsys { subsys: QUORUM debug: off } } nodelist { node { ring0_addr: 192.168.1.11 nodeid: 1 } node { ring0_addr: 192.168.1.12 nodeid: 2 } } quorum { # Enable and configure quorum subsystem (default: off) # see also corosync.conf.5 and votequorum.5 provider: corosync_votequorum expected_votes: 2 two_node: 1 }
13.4 IPMI STONITH手段の例 #
primitive rsc_suse01_stonith stonith:external/ipmi \ params hostname="suse01" ipaddr="192.168.1.101" userid="stonith" \ passwd="k1llm3" interface="lanplus" \ op monitor interval="1800" timeout="30" ... primitive rsc_suse02_stonith stonith:external/ipmi \ params hostname="suse02" ipaddr="192.168.1.102" userid="stonith" \ passwd="k1llm3" interface="lanplus" \ op monitor interval="1800" timeout="30" ... location loc_suse01_stonith rsc_suse01_stonith -inf: suse01 location loc_suse02_stonith rsc_suse02_stonith -inf: suse02
14 参照 #
詳細については、以下のドキュメントをご覧ください。
14.1 Pacemaker #
- Pacemakerプロジェクトのドキュメント
15 法的通知 #
Copyright © 2006–2020 SUSE LLC および寄稿者。全著作権所有
この文書は、GNUフリー文書ライセンスのバージョン1.2または(オプションとして)バージョン1.3の条項に従って、複製、頒布、および/または改変が許可されています。ただし、この著作権表示およびライセンスは変更せずに記載することが求められます。ライセンスバージョン1.2のコピーは、「GNUフリー文書ライセンス」セクションに含まれています。
SUSE、SUSEロゴ、およびYaSTは、米国およびその他の国におけるSUSE LLCの登録商標です。SUSEの商標については、https://www.suse.com/company/legal/を参照してください。
Linux は、Linus Torvalds氏の登録商標です。本文書に記載されたその他のすべての名称または商標は、各社の所有者の商標または登録商標である可能性があります。
本文書は、「SUSEベストプラクティス」と呼ばれる一連の文書の一部です。各文書は、SUSEの従業員と第三者によって自発的に寄稿されたものです。本文書の内容は、特定の行動を取る方法の一例を示しているにすぎません。
また、SUSEは、本文書に記載されている動作が主張どおり実行されること、あるいは意図しない結果に終わることを立証しません。
本文書に記載されているすべての情報は、細部に至るまで最大限の注意を払って制作されています。しかし、完全に正確であることを保証するものではありません。したがって、SUSE LLC、その関連会社、著者、翻訳者のいずれも、本文書内の誤りとそこから生じる結果について 一切の保証はいたしません。なお、本文書は以下のライセンスのもとで発行されていることを注記します。
16 GNU Free Documentation License #
Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc. 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.
0. PREAMBLE #
The purpose of this License is to make a manual, textbook, or other functional and useful document "free" in the sense of freedom: to assure everyone the effective freedom to copy and redistribute it, with or without modifying it, either commercially or non-commercially. Secondarily, this License preserves for the author and publisher a way to get credit for their work, while not being considered responsible for modifications made by others.
This License is a kind of "copyleft", which means that derivative works of the document must themselves be free in the same sense. It complements the GNU General Public License, which is a copyleft license designed for free software.
We have designed this License to use it for manuals for free software, because free software needs free documentation: a free program should come with manuals providing the same freedoms that the software does. But this License is not limited to software manuals; it can be used for any textual work, regardless of subject matter or whether it is published as a printed book. We recommend this License principally for works whose purpose is instruction or reference.
1. APPLICABILITY AND DEFINITIONS #
This License applies to any manual or other work, in any medium, that contains a notice placed by the copyright holder saying it can be distributed under the terms of this License. Such a notice grants a world-wide, royalty-free license, unlimited in duration, to use that work under the conditions stated herein. The "Document", below, refers to any such manual or work. Any member of the public is a licensee, and is addressed as "you". You accept the license if you copy, modify or distribute the work in a way requiring permission under copyright law.
A "Modified Version" of the Document means any work containing the Document or a portion of it, either copied verbatim, or with modifications and/or translated into another language.
A "Secondary Section" is a named appendix or a front-matter section of the Document that deals exclusively with the relationship of the publishers or authors of the Document to the Document's overall subject (or to related matters) and contains nothing that could fall directly within that overall subject. (Thus, if the Document is in part a textbook of mathematics, a Secondary Section may not explain any mathematics.) The relationship could be a matter of historical connection with the subject or with related matters, or of legal, commercial, philosophical, ethical or political position regarding them.
The "Invariant Sections" are certain Secondary Sections whose titles are designated, as being those of Invariant Sections, in the notice that says that the Document is released under this License. If a section does not fit the above definition of Secondary then it is not allowed to be designated as Invariant. The Document may contain zero Invariant Sections. If the Document does not identify any Invariant Sections then there are none.
The "Cover Texts" are certain short passages of text that are listed, as Front-Cover Texts or Back-Cover Texts, in the notice that says that the Document is released under this License. A Front-Cover Text may be at most 5 words, and a Back-Cover Text may be at most 25 words.
A "Transparent" copy of the Document means a machine-readable copy, represented in a format whose specification is available to the general public, that is suitable for revising the document straightforwardly with generic text editors or (for images composed of pixels) generic paint programs or (for drawings) some widely available drawing editor, and that is suitable for input to text formatters or for automatic translation to a variety of formats suitable for input to text formatters. A copy made in an otherwise Transparent file format whose markup, or absence of markup, has been arranged to thwart or discourage subsequent modification by readers is not Transparent. An image format is not Transparent if used for any substantial amount of text. A copy that is not "Transparent" is called "Opaque".
Examples of suitable formats for Transparent copies include plain ASCII without markup, Texinfo input format, LaTeX input format, SGML or XML using a publicly available DTD, and standard-conforming simple HTML, PostScript or PDF designed for human modification. Examples of transparent image formats include PNG, XCF and JPG. Opaque formats include proprietary formats that can be read and edited only by proprietary word processors, SGML or XML for which the DTD and/or processing tools are not generally available, and the machine-generated HTML, PostScript or PDF produced by some word processors for output purposes only.
The "Title Page" means, for a printed book, the title page itself, plus such following pages as are needed to hold, legibly, the material this License requires to appear in the title page. For works in formats which do not have any title page as such, "Title Page" means the text near the most prominent appearance of the work's title, preceding the beginning of the body of the text.
A section "Entitled XYZ" means a named subunit of the Document whose title either is precisely XYZ or contains XYZ in parentheses following text that translates XYZ in another language. (Here XYZ stands for a specific section name mentioned below, such as "Acknowledgements", "Dedications", "Endorsements", or "History".) To "Preserve the Title" of such a section when you modify the Document means that it remains a section "Entitled XYZ" according to this definition.
The Document may include Warranty Disclaimers next to the notice which states that this License applies to the Document. These Warranty Disclaimers are considered to be included by reference in this License, but only as regards disclaiming warranties: any other implication that these Warranty Disclaimers may have is void and has no effect on the meaning of this License.
2. VERBATIM COPYING #
You may copy and distribute the Document in any medium, either commercially or noncommercially, provided that this License, the copyright notices, and the license notice saying this License applies to the Document are reproduced in all copies, and that you add no other conditions whatsoever to those of this License. You may not use technical measures to obstruct or control the reading or further copying of the copies you make or distribute. However, you may accept compensation in exchange for copies. If you distribute a large enough number of copies you must also follow the conditions in section 3.
You may also lend copies, under the same conditions stated above, and you may publicly display copies.
3. COPYING IN QUANTITY #
If you publish printed copies (or copies in media that commonly have printed covers) of the Document, numbering more than 100, and the Document's license notice requires Cover Texts, you must enclose the copies in covers that carry, clearly and legibly, all these Cover Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on the back cover. Both covers must also clearly and legibly identify you as the publisher of these copies. The front cover must present the full title with all words of the title equally prominent and visible. You may add other material on the covers in addition. Copying with changes limited to the covers, as long as they preserve the title of the Document and satisfy these conditions, can be treated as verbatim copying in other respects.
If the required texts for either cover are too voluminous to fit legibly, you should put the first ones listed (as many as fit reasonably) on the actual cover, and continue the rest onto adjacent pages.
If you publish or distribute Opaque copies of the Document numbering more than 100, you must either include a machine-readable Transparent copy along with each Opaque copy, or state in or with each Opaque copy a computer-network location from which the general network-using public has access to download using public-standard network protocols a complete Transparent copy of the Document, free of added material. If you use the latter option, you must take reasonably prudent steps, when you begin distribution of Opaque copies in quantity, to ensure that this Transparent copy will remain thus accessible at the stated location until at least one year after the last time you distribute an Opaque copy (directly or through your agents or retailers) of that edition to the public.
It is requested, but not required, that you contact the authors of the Document well before redistributing any large number of copies, to give them a chance to provide you with an updated version of the Document.
4. MODIFICATIONS #
You may copy and distribute a Modified Version of the Document under the conditions of sections 2 and 3 above, provided that you release the Modified Version under precisely this License, with the Modified Version filling the role of the Document, thus licensing distribution and modification of the Modified Version to whoever possesses a copy of it. In addition, you must do these things in the Modified Version:
Use in the Title Page (and on the covers, if any) a title distinct from that of the Document, and from those of previous versions (which should, if there were any, be listed in the History section of the Document). You may use the same title as a previous version if the original publisher of that version gives permission.
List on the Title Page, as authors, one or more persons or entities responsible for authorship of the modifications in the Modified Version, together with at least five of the principal authors of the Document (all of its principal authors, if it has fewer than five), unless they release you from this requirement.
State on the Title page the name of the publisher of the Modified Version, as the publisher.
Preserve all the copyright notices of the Document.
Add an appropriate copyright notice for your modifications adjacent to the other copyright notices.
Include, immediately after the copyright notices, a license notice giving the public permission to use the Modified Version under the terms of this License, in the form shown in the Addendum below.
Preserve in that license notice the full lists of Invariant Sections and required Cover Texts given in the Document's license notice.
Include an unaltered copy of this License.
Preserve the section Entitled "History", Preserve its Title, and add to it an item stating at least the title, year, new authors, and publisher of the Modified Version as given on the Title Page. If there is no section Entitled "History" in the Document, create one stating the title, year, authors, and publisher of the Document as given on its Title Page, then add an item describing the Modified Version as stated in the previous sentence.
Preserve the network location, if any, given in the Document for public access to a Transparent copy of the Document, and likewise the network locations given in the Document for previous versions it was based on. These may be placed in the "History" section. You may omit a network location for a work that was published at least four years before the Document itself, or if the original publisher of the version it refers to gives permission.
For any section Entitled "Acknowledgements" or "Dedications", Preserve the Title of the section, and preserve in the section all the substance and tone of each of the contributor acknowledgements and/or dedications given therein.
Preserve all the Invariant Sections of the Document, unaltered in their text and in their titles. Section numbers or the equivalent are not considered part of the section titles.
Delete any section Entitled "Endorsements". Such a section may not be included in the Modified Version.
Do not retitle any existing section to be Entitled "Endorsements" or to conflict in title with any Invariant Section.
Preserve any Warranty Disclaimers.
If the Modified Version includes new front-matter sections or appendices that qualify as Secondary Sections and contain no material copied from the Document, you may at your option designate some or all of these sections as invariant. To do this, add their titles to the list of Invariant Sections in the Modified Version's license notice. These titles must be distinct from any other section titles.
You may add a section Entitled "Endorsements", provided it contains nothing but endorsements of your Modified Version by various parties--for example, statements of peer review or that the text has been approved by an organization as the authoritative definition of a standard.
You may add a passage of up to five words as a Front-Cover Text, and a passage of up to 25 words as a Back-Cover Text, to the end of the list of Cover Texts in the Modified Version. Only one passage of Front-Cover Text and one of Back-Cover Text may be added by (or through arrangements made by) any one entity. If the Document already includes a cover text for the same cover, previously added by you or by arrangement made by the same entity you are acting on behalf of, you may not add another; but you may replace the old one, on explicit permission from the previous publisher that added the old one.
The author(s) and publisher(s) of the Document do not by this License give permission to use their names for publicity for or to assert or imply endorsement of any Modified Version.
5. COMBINING DOCUMENTS #
You may combine the Document with other documents released under this License, under the terms defined in section 4 above for modified versions, provided that you include in the combination all of the Invariant Sections of all of the original documents, unmodified, and list them all as Invariant Sections of your combined work in its license notice, and that you preserve all their Warranty Disclaimers.
The combined work need only contain one copy of this License, and multiple identical Invariant Sections may be replaced with a single copy. If there are multiple Invariant Sections with the same name but different contents, make the title of each such section unique by adding at the end of it, in parentheses, the name of the original author or publisher of that section if known, or else a unique number. Make the same adjustment to the section titles in the list of Invariant Sections in the license notice of the combined work.
In the combination, you must combine any sections Entitled "History" in the various original documents, forming one section Entitled "History"; likewise combine any sections Entitled "Acknowledgements", and any sections Entitled "Dedications". You must delete all sections Entitled "Endorsements".
6. COLLECTIONS OF DOCUMENTS #
You may make a collection consisting of the Document and other documents released under this License, and replace the individual copies of this License in the various documents with a single copy that is included in the collection, provided that you follow the rules of this License for verbatim copying of each of the documents in all other respects.
You may extract a single document from such a collection, and distribute it individually under this License, provided you insert a copy of this License into the extracted document, and follow this License in all other respects regarding verbatim copying of that document.
7. AGGREGATION WITH INDEPENDENT WORKS #
A compilation of the Document or its derivatives with other separate and independent documents or works, in or on a volume of a storage or distribution medium, is called an "aggregate" if the copyright resulting from the compilation is not used to limit the legal rights of the compilation's users beyond what the individual works permit. When the Document is included in an aggregate, this License does not apply to the other works in the aggregate which are not themselves derivative works of the Document.
If the Cover Text requirement of section 3 is applicable to these copies of the Document, then if the Document is less than one half of the entire aggregate, the Document's Cover Texts may be placed on covers that bracket the Document within the aggregate, or the electronic equivalent of covers if the Document is in electronic form. Otherwise they must appear on printed covers that bracket the whole aggregate.
8. TRANSLATION #
Translation is considered a kind of modification, so you may distribute translations of the Document under the terms of section 4. Replacing Invariant Sections with translations requires special permission from their copyright holders, but you may include translations of some or all Invariant Sections in addition to the original versions of these Invariant Sections. You may include a translation of this License, and all the license notices in the Document, and any Warranty Disclaimers, provided that you also include the original English version of this License and the original versions of those notices and disclaimers. In case of a disagreement between the translation and the original version of this License or a notice or disclaimer, the original version will prevail.
If a section in the Document is Entitled "Acknowledgements", "Dedications", or "History", the requirement (section 4) to Preserve its Title (section 1) will typically require changing the actual title.
9. TERMINATION #
You may not copy, modify, sublicense, or distribute the Document except as expressly provided for under this License. Any other attempt to copy, modify, sublicense or distribute the Document is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.
10. FUTURE REVISIONS OF THIS LICENSE #
The Free Software Foundation may publish new, revised versions of the GNU Free Documentation License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. See http://www.gnu.org/copyleft/.
Each version of the License is given a distinguishing version number. If the Document specifies that a particular numbered version of this License "or any later version" applies to it, you have the option of following the terms and conditions either of that specified version or of any later version that has been published (not as a draft) by the Free Software Foundation. If the Document does not specify a version number of this License, you may choose any version ever published (not as a draft) by the Free Software Foundation.
ADDENDUM: How to use this License for your documents #
Copyright (c) YEAR YOUR NAME. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License".
If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, replace the "with...Texts". line with this:
with the Invariant Sections being LIST THEIR TITLES, with the Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.
If you have Invariant Sections without Cover Texts, or some other combination of the three, merge those two alternatives to suit the situation.
If your document contains nontrivial examples of program code, we recommend releasing these examples in parallel under your choice of free software license, such as the GNU General Public License, to permit their use in free software.