3.3. Pacemaker の設定
HANA スケールアウト環境が設定され、HANA システムレプリケーションが想定どおりに動作している場合は、RHEL HA アドオンを使用して HANA スケールアウトシステムレプリケーション環境を管理するように HA クラスターを設定できます。
Pacemaker のスプリットブレイン設定を防ぐには、追加のクォーラムインスタンスが必要です。この例では、ノードを追加します。このソリューションで majoritymaker と呼ばれるこのノードは、適切な設定の奇数個のクラスターノードに必要です。これは、Pacemaker とパブリックネットワークのみを必要とする追加のミニマリストホストです。このノードでは、SAP HANA データベースはインストールされておらず、ストレージ設定は廃止されています。
前提条件
-
saphostagentをインストールし、/usr/sap/hostcontrol/exe/sapcontrol が存在するか確認している。詳細は、1031096 - Installing Package SAPHOSTAGENT を参照してください。 - RHEL High Availability リポジトリーがシステムに設定されていることを確認している。この設定なしでは Pacemaker をインストールできません。
- すべてのシステムに root としてログインしている。
このドキュメントの RHEL システムの登録およびリポジトリーの有効化 セクションで説明されているように、クラスターのパッケージをインストールするために、すべてのクラスターノードが登録され、必要なリポジトリーが有効化されていることを確認している。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
手順
- クラスターを設定します。詳細は、高可用性クラスターの設定と管理 を参照してください。
クラスター内の各ノード (
majoritymakerを含む) に、Red Hat High Availability Add-On ソフトウェアパッケージと、High Availability チャネルから利用可能なすべてのフェンスエージェントをインストールします。yum -y install pcs pacemaker fence-agents
[root]# yum -y install pcs pacemaker fence-agentsCopy to Clipboard Copied! Toggle word wrap Toggle overflow または、特定の fence-agents のみをインストールすることもできます。
yum install fence-agents-sbd fence-agents-ipmilan
[root]# yum install fence-agents-sbd fence-agents-ipmilanCopy to Clipboard Copied! Toggle word wrap Toggle overflow firewalledデーモンを実行している場合は、以下のコマンドを実行して Red Hat High Availability Add-On が必要とするポートを有効にします。firewall-cmd --permanent --add-service=high-availability firewall-cmd --add-service=high-availability
[root]# firewall-cmd --permanent --add-service=high-availability [root]# firewall-cmd --add-service=high-availabilityCopy to Clipboard Copied! Toggle word wrap Toggle overflow この設定の後、各クラスターノードでユーザー
haclusterのパスワードを設定します。passwd hacluster Changing password for user hacluster. New password: Retype new password: passwd: all authentication tokens updated successfully.
[root]# passwd hacluster Changing password for user hacluster. New password: Retype new password: passwd: all authentication tokens updated successfully.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 各ノードで次のコマンドを実行してデーモンを起動し、有効にします。
systemctl start [root]# pcsd.service systemctl enable pcsd.service
[root]# systemctl start [root]# pcsd.service systemctl enable pcsd.serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow 1 つのノードのみで、
haclusterユーザーを認証する必要があります。このコマンドには、クラスターの一部であるすべてのノードを含めることが重要です。パスワードを指定しない場合は、前の手順で定義したhaclusterパスワードの入力を求められます。RHEL 8.x の場合は以下を実行します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 同じノード上の
pcs clusterセットアップを使用して、corosync設定を生成および同期します。RHEL 8 の例では、2 つのクラスターネットワークを使用している場合も示されています。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のクラスターコマンドを使用して、すべてのノードでサービスを有効にします。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow すべての手順を完了すると、クラスターとノードが設定されます。リソースエージェントを設定する最初の手順は、アクセスできなくなったノードを再起動する STONITH を使用してフェンシングメソッドを設定することです。サポートされている環境では、この STONITH 設定が必要です。
ハードウェアまたは仮想化環境に適したフェンスエージェントを使用して、環境に合わせて STONITH を設定します。以下は、STONITH 用のフェンスデバイスを設定する一般的な例です。
pcs stonith create <stonith id> <fence_agent> ipaddr=<fence device> login=<login> passwd=<passwd>
[root@dc1hana01]# pcs stonith create <stonith id> <fence_agent> ipaddr=<fence device> login=<login> passwd=<passwd>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記各デバイスの設定は異なり、この環境では STONITH を設定することが必須です。サポートが必要な場合は、Red Hat Support チームに直接お問い合わせください。詳細は、RHEL High Availability クラスターのサポートポリシー - フェンシング/STONITH の一般的な要件 および フェンシング設定 を参照してください。
設定後、クラスターのステータスは次の出力のようになります。これは、Red Hat Enterprise 仮想化環境のフェンシングデバイスの例です。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.3.1. Scale-Out システム用の SAP HANA リソースエージェントのインストール リンクのコピーリンクがクリップボードにコピーされました!
リソースエージェントを設定する際に、resource-agent-sap-hana-scaleout パッケージが、majoritymaker を含むすべてのシステムにインストールされました。
yum install resource-agents-sap-hana-scaleout
[root@dc1hana01]# yum install resource-agents-sap-hana-scaleout
正しいリポジトリーが接続されていることを確認します。yum repolist には、以下が含まれている必要があります。
root# yum repolist "rhel-x86_64-server-sap-hana-<version>” RHEL Server SAP HANA (v. <version> for 64-bit <architecture>).
root# yum repolist
"rhel-x86_64-server-sap-hana-<version>” RHEL Server SAP HANA (v. <version> for 64-bit <architecture>).
3.3.2. すべての SAP HANA インスタンスでの srConnectionChanged() フックの有効化 リンクのコピーリンクがクリップボードにコピーされました!
SAP の Implementing a HA/DR Provider に記載されているように、SAP HANA の最新バージョンでは、SAP HANA が特定のイベントの通知を送信できるようにする「フック」が提供されています。srConnectionChanged() フックを使用すると、クラスターのアクションを必要とする SAP HANA System Replication のステータスの変更が発生したことを検出するクラスターの機能を向上させ、偶発的なテイクオーバーが回避すべき状況でトリガーされないようにすることで、データ損失/データ破損を避けることができます。SAP HANA 2.0 SPS06 以降およびsrConnectionChanged() フックをサポートするためのコンポーネントを提供する resource-agents-sap-hana-scaleout パッケージのバージョンを使用する場合は、クラスターのセットアップを続行する前にフックを有効にする必要があります。
手順
- 共有デバイス上の各データセンターの 1 つのノードにフックをインストールします。詳細は、Implementing a HA/DR Provider を参照してください。
フックを設定するために、hana 共有フォルダーにディレクトリーを作成します。これは、SAP HANA データベースから追加データを作成するように設定されています。これを有効にするには、システムを停止し、
global.iniファイルに 2 つの設定パラメーターを追加する必要があります。このソリューションの次の例では、ha_dr_provider_SAPHanaSrとtraceの設定を示しています。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 各クラスターノードで、
sudo visudo /etc/sudoers.d/20-saphanaを実行して/etc/sudoers.d/20-saphanaファイルを作成し、以下の内容を追加して、srConnectionChanged()フックが呼び出されたときにフックスクリプトがノード属性を更新できるようにします。rh1adm ALL=(ALL) NOPASSWD: /usr/sbin/crm_attribute -n hana_rh1_glob_srHook -v * -t crm_config -s SAPHanaSR rh1adm ALL=(ALL) NOPASSWD: /usr/sbin/crm_attribute -n hana_rh1_gsh -v * -l reboot -t crm_config -s SAPHanaSR Defaults:rh1adm !requiretty
rh1adm ALL=(ALL) NOPASSWD: /usr/sbin/crm_attribute -n hana_rh1_glob_srHook -v * -t crm_config -s SAPHanaSR rh1adm ALL=(ALL) NOPASSWD: /usr/sbin/crm_attribute -n hana_rh1_gsh -v * -l reboot -t crm_config -s SAPHanaSR Defaults:rh1adm !requirettyCopy to Clipboard Copied! Toggle word wrap Toggle overflow デフォルト設定が必要な理由に関する詳細は、The srHook attribute is set to SFAIL in a Pacemaker cluster managing SAP HANA system replication, even though replication is in a healthy state を参照してください。
インテグレーションが成功したら、SAP HANA データベースを起動します。
# Execute the following commands on one HANA node in every datacenter [root]# su - rh1adm [rh1adm]% sapcontrol -nr 10 -function StartSystem
# Execute the following commands on one HANA node in every datacenter [root]# su - rh1adm [rh1adm]% sapcontrol -nr 10 -function StartSystemCopy to Clipboard Copied! Toggle word wrap Toggle overflow フックスクリプトが期待どおりに動作していることを確認します。HANA インスタンスの停止など、フックをトリガーするアクションを実行します。次に、以下のメソッドを使用して、フックがログに何か記録したか確認します。
[rh1adm@dc1hana01]% cdtrace [rh1adm@dc1hana01]% awk '/ha_dr_SAPHanaSR.*crm_attribute/ \ { printf "%s %s %s %s\n",$2,$3,$5,$16 }' nameserver_* 2018-05-04 12:34:04.476445 ha_dr_SAPHanaSR SFAIL 2018-05-04 12:53:06.316973 ha_dr_SAPHanaSR SOK[rh1adm@dc1hana01]% cdtrace [rh1adm@dc1hana01]% awk '/ha_dr_SAPHanaSR.*crm_attribute/ \ { printf "%s %s %s %s\n",$2,$3,$5,$16 }' nameserver_* 2018-05-04 12:34:04.476445 ha_dr_SAPHanaSR SFAIL 2018-05-04 12:53:06.316973 ha_dr_SAPHanaSR SOKCopy to Clipboard Copied! Toggle word wrap Toggle overflow SAP HANA フックが機能していることを確認する方法は、M_HA_DR_PROVIDERS の監視 を参照してください。
3.3.3. Pacemaker リソースの設定 リンクのコピーリンクがクリップボードにコピーされました!
Pacemaker 設定プロセスでは、HANA と Pacemaker 環境を制御する 2 つのリソースエージェント (SAPHanaTopology と SAPHanaController) を作成する必要があります。さらに、エンドユーザーと SAP アプリケーションサーバーの接続用に、Pacemaker で仮想 IP アドレスを設定する必要があります。実行されたアクションに基づいて、リソースエージェントが正しい順序で実行され、仮想 IP アドレスが適切なホストにマップされるように、2 つの依存関係が追加されます。
前提条件
設定中に不要な影響を回避するために、クラスターの
maintenance-modeを設定している。pcs property set maintenance-mode=true
[root@dc1hana01]# pcs property set maintenance-mode=trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow
3.3.3.1. SAPHanaTopology リソースの設定 リンクのコピーリンクがクリップボードにコピーされました!
SAPHanaTopologyリソースエージェントは、各ノード上の SAP HANA System Replication のステータスと設定を収集します。さらに、SAP HANA インスタンスの起動、停止、監視に必要なローカル SAP HostAgent を起動および監視します。リソースエージェントには、インストールされている SAP HANA 環境に応じて次の属性があります。Expand 属性名
必須/オプション
デフォルト値
説明
SID
はい
null
SAP HANA インストールの SAP システム識別子 (SID) (すべてのノードで同一である必要があります)。例: RH2
InstanceNumber
はい
null
SAP HANA インストールのインスタンス番号 (すべてのノードで同一である必要があります)。例: 02
このソリューションでは、SID は RH1 に設定され、インスタンス番号は 10 に設定されています。
注記タイムアウトとモニターのパラメーターは最初のデプロイメントに推奨され、環境のテスト中に変更できます。環境内のノードのサイズや数など、いくつかの依存関係があります。
クラスター全体の 1 つのホストで、RHEL 8.x に対して root として次のコマンドを実行します。
pcs resource create rsc_SAPHanaTopology_RH1_HDB10 SAPHanaTopology SID=RH1 InstanceNumber=10 op methods interval=0s timeout=5 op monitor interval=10 timeout=600 clone clone-max=6 clone-node-max=1 interleave=true --disabled
[root@dc1hana01]# pcs resource create rsc_SAPHanaTopology_RH1_HDB10 SAPHanaTopology SID=RH1 InstanceNumber=10 op methods interval=0s timeout=5 op monitor interval=10 timeout=600 clone clone-max=6 clone-node-max=1 interleave=true --disabledCopy to Clipboard Copied! Toggle word wrap Toggle overflow Pacemaker でリソースが作成されると、クローンが作成されます。
注記clone-node-maxパラメーターは、シングルノード上で起動できるリソースエージェントのコピーの数を定義します。インターリーブとは、このクローンが順序制約を使用して別のクローンに依存している場合、その別のクローンのすべてのインスタンスが起動するのを待つのではなく、その別のクローンのローカルインスタンスが起動した後に起動できることを意味します。clone-maxパラメーターは、起動できるクローンの数を定義します。たとえば、サイトあたり 2 ノードの最小設定の場合は、SAPHanaControllerおよびSAPHanaTopologyにclone-max=4を使用する必要があります。サイトあたり 3 ノード (スタンバイノードは含まない) の場合は、6 を使用する必要があります。次のコマンドを使用してリソースが起動したら、ノード属性の形式で保存された収集情報を表示できます。
root# pcs status --full
root# pcs status --fullCopy to Clipboard Copied! Toggle word wrap Toggle overflow
3.3.3.2. SAPHanaController リソースの設定 リンクのコピーリンクがクリップボードにコピーされました!
SAPHanaTopology リソースエージェントの設定プロセスが完了すると、SAPHanaController リソースエージェントを設定できます。SAP Hana Topology リソースエージェントはデータのみを収集しますが、SAPHanaTopology リソースエージェントは以前に収集されたデータに基づいて SAP 環境を制御します。次の表に示すように、5 つの重要な設定パラメーターによってクラスター機能が定義されます。
| 属性名 | 必須/オプション | デフォルト値 | 説明 |
| SID | はい | null | SAP HANA インストールの SAP システム識別子 (SID) (すべてのノードで同一である必要があります)。例: RH2 |
| InstanceNumber | はい | null | SAP HANA インストールのインスタンス番号 (すべてのノードで同一である必要があります)。例: 02 |
| PREFER_SITE_TAKEOVER | いいえ | null | リソースエージェントは、プライマリーをローカルで再起動するのではなく、セカンダリーインスタンスに切り替えることを優先する必要がありますか? true: セカンダリーサイトへのテイクオーバーを優先します。false: ローカルでの再起動を優先します。never: いかなる状況でも他のノードへのテイクオーバーを開始しません。 |
| AUTOMATED_REGISTER | いいえ | false | テイクオーバーイベントが発生し、DUPLICATE_PRIMARY_TIMEOUT の有効期限が切れた場合、以前のプライマリーインスタンスをセカンダリーとして登録する必要がありますか? ("false": いいえ、手動介入が必要になります。"true": はい、以前のプライマリーはリソースエージェントによってセカンダリーとして登録されます) [1]。 |
| DUPLICATE_PRIMARY_TIMEOUT | いいえ | 7200 | デュアルプライマリー状況が発生した場合に、2 つのプライマリータイムスタンプ間に必要な時間差 (秒単位)。時間差が時間ギャップより小さい場合、クラスターは 1 つまたは両方のインスタンスを "WAITING" ステータスで保持します。これは、システム管理者にテイクオーバーに対応する機会を与えるためです。時間差が経過した後、AUTOMATED_REGISTER が true に設定されている場合、障害が発生した以前のプライマリーはセカンダリーとして登録されます。新しいプライマリーへの登録後、以前のプライマリー上のすべてのデータはシステムレプリケーションによって上書きされます。 |
[1] - テストおよび概念実証 (PoC) 環境のベストプラクティスとして、障害が発生したプライマリーインスタンスが自動的にセカンダリーインスタンスとして登録されるのを防ぐために、AUTOMATED_REGISTER をデフォルト値 (AUTOMATED_REGISTER="false") のままにしておくことを推奨します。テスト後、フェイルオーバーシナリオが期待どおりに機能する場合 (特に実稼働環境の場合)、テイクオーバー後にシステムレプリケーションがタイムリーに再開され、中断が回避されるように AUTOMATED_REGISTER="true" を設定することを推奨します。AUTOMATED_REGISTER="false" の場合、プライマリーノードで障害が発生したときは、セカンダリー HANA System Replication ノードとして手動で登録する必要があります。
次のコマンドは、RHEL 8.x で SAPHanaController プロモート可能リソースを作成する方法の例です。この例は、SID RH1、InstanceNumber 10、Prefer Site Takeover と Automated_REGISTER の値が true、および Duplicate Primary Timeout が 7200 というパラメーターに基づいています。
pcs resource create rsc_SAPHana_RH1_HDB10 SAPHanaController SID=RH1 InstanceNumber=10 PREFER_SITE_TAKEOVER=true DUPLICATE_PRIMARY_TIMEOUT=7200 AUTOMATED_REGISTER=true op demote interval=0s timeout=320 op methods interval=0s timeout=5 op monitor interval=59 role="Promoted" timeout=700 op monitor interval=61 role="Unpromoted" timeout=700 op promote interval=0 timeout=3600 op start interval=0 timeout=3600 op stop interval=0 timeout=3600 promotable clone-max=6 promoted-node-max=1 interleave=true --disabled
[root@dc1hana01]# pcs resource create rsc_SAPHana_RH1_HDB10 SAPHanaController SID=RH1 InstanceNumber=10 PREFER_SITE_TAKEOVER=true DUPLICATE_PRIMARY_TIMEOUT=7200 AUTOMATED_REGISTER=true op demote interval=0s timeout=320 op methods interval=0s timeout=5 op monitor interval=59 role="Promoted" timeout=700 op monitor interval=61 role="Unpromoted" timeout=700 op promote interval=0 timeout=3600 op start interval=0 timeout=3600 op stop interval=0 timeout=3600 promotable clone-max=6 promoted-node-max=1 interleave=true --disabled
clone-max の場合、コマンドにリストされている HDB_WORKER の数の 2 倍を使用してください。
このソリューションでは、SAPHanaController の作成後、次のコマンドを使用してリソースをプロモート可能なリソースとして定義します (SID は RH1、InstanceNumber は 10)。
詳細は、マルチステートリソース: 複数のモードを持つリソース を参照してください。
3.3.3.3. 仮想 IP アドレスを管理するためのリソースの設定 リンクのコピーリンクがクリップボードにコピーされました!
クラスターには、プライマリー SAP HANA スケールアウトサイトのマスターネームサーバーにアクセスするためにクライアントが使用する仮想 IP アドレスを管理するためのリソースを含める必要があります。
次のコマンドは、仮想 IP 10.0.0.250 を持つ IPaddr2 リソースを作成する方法の例です。
pcs resource create rsc_ip_SAPHana_RH1_HDB10 ocf:heartbeat:IPaddr2 ip=10.0.0.250 op monitor interval="10s" timeout="20s"
[root@dc1hana01]# pcs resource create rsc_ip_SAPHana_RH1_HDB10 ocf:heartbeat:IPaddr2 ip=10.0.0.250 op monitor interval="10s" timeout="20s"
3.3.4. 制約の作成 リンクのコピーリンクがクリップボードにコピーされました!
正しく動作させるには、SAPHanaController リソースが起動する前に SAPHanaTopology リソースが起動していること、また、SAPHanaController のマスターリソースが実行されるノードに仮想 IP アドレスが存在することを確認します。この手順を使用して、必要な 4 つの制約を作成します。
手順: SAPHana の前に SAPHanaTopology を起動する
次のコマンドは、リソースの開始順序を義務付ける制約を作成する方法の例です。
制約を作成します。
pcs constraint order start rsc_SAPHanaTopology_RH1_HDB10-clone then start rsc_SAPHana_RH1_HDB10-clone
[root@dc1hana01]# pcs constraint order start rsc_SAPHanaTopology_RH1_HDB10-clone then start rsc_SAPHana_RH1_HDB10-cloneCopy to Clipboard Copied! Toggle word wrap Toggle overflow IPaddr2リソースをプロモートしたSAPHanaリソースと同じ場所に配置します。pcs constraint colocation add rsc_ip_SAPHana_RH1_HDB10 with promoted rsc_SAPHana_RH1_HDB10-clone
[root@dc1hana01]# pcs constraint colocation add rsc_ip_SAPHana_RH1_HDB10 with promoted rsc_SAPHana_RH1_HDB10-cloneCopy to Clipboard Copied! Toggle word wrap Toggle overflow クラスター環境でアクティブなロールを使用するために、
majoritymakerを回避します。pcs constraint location add topology-avoids-majoritymaker rsc_SAPHanaTopology_RH1_HDB10-clone majoritymaker -INFINITY resource-discovery=never pcs constraint location add hana-avoids-majoritymaker rsc_SAPHana_RH1_HDB10-clone majoritymaker -INFINITY resource-discovery=never
[root@dc1hana01]# pcs constraint location add topology-avoids-majoritymaker rsc_SAPHanaTopology_RH1_HDB10-clone majoritymaker -INFINITY resource-discovery=never [root@dc1hana01]# pcs constraint location add hana-avoids-majoritymaker rsc_SAPHana_RH1_HDB10-clone majoritymaker -INFINITY resource-discovery=neverCopy to Clipboard Copied! Toggle word wrap Toggle overflow maintenance-modeを無効にします。maintenance-modeを false に設定した後、maintenance-modeを使用してリソースを起動します。すべての設定が完了する前に pacemaker の動作を回避するために、上記の例では--disabledを使用しています。デフォルトでは、リソースは作成されるとすぐに起動されます。--disabledの場合、次のコマンドを使用してリソースを起動できます。pcs resource enable <resource-name>
[root@dc1hana01]# pcs resource enable <resource-name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow maintenance-modeを終了するには、以下を使用してください。pcs property set maintenance-mode=false
[root@dc1hana01]# pcs property set maintenance-mode=falseCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次の 3 つのコマンドを実行して、クラスター環境が正しく動作していることを確認します。
-
pcs statusは、すべてのリソースの概要と、それらが正しく機能しているかを示します。 -
pcs status --fullは、クラスター環境のすべてのリソースの概要と追加の属性情報を提供します。 SAPHanaSR-showAttr --sid=RH1は、属性情報に基づいた読みやすい概要を提供します。maintenance-modeを無効にしてから数分後に正しいステータスが表示されます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-