この記事では、Red Hat Enterprise Linux(RHEL)上で基本的な2ノードのPacemakerクラスタのセットアップと設定方法を説明します。 説明書は RHEL 8.6+、 RHEL 9.x、 RHEL 10.xをカバーしています。
前提条件
RHEL High Availability (HA) のドキュメント
- 高可用性クラスターの設定および管理。
- RHEL High Availability クラスターのサポート ポリシー - sbd および fence_sbd。
- RHEL High Availability クラスターのサポート ポリシー - fence_azure_arm。
- ソフトウェアでエミュレーションされたウォッチドッグの既知の制限。
- RHEL High Availability のコンポーネントの探索 - sbd および fence_sbd。
- RHEL High Availability クラスターの設計ガイダンス - sbd の考慮事項。
- RHEL 8 の導入に関する考慮事項 - 高可用性およびクラスター
Azure固有の RHEL ドキュメント
SAP オファリングの RHEL ドキュメント
概要
このガイドは、必要なリソースグループ、Azureの仮想ネットワーク、サブネット、仮想マシン(VM)をすでに展開している前提です。
Linux上で動くクラスターは、不健康なノードをフェンシングするためにフェンシングエージェントが必要です。 この作業をAzureで行うには、以下のいずれかの方法を用いてください。
- Azure Shared Disk を用いた Storage Based Death (SBD)
- iSCSIターゲットを用いたストレージベースデス(SBD)
- Azure Fencing Agent (Azure フェンシング エージェント)
注
本文書で使用されている接頭辞は以下の通りです:
- [A]: すべてのノードに当てはまります。
- [1]: ノード 1 にのみ当てはまります。
- [2]: ノード 2 にのみ当てはまります。
重要
Azureでは、ストレージベースのフェンシング(fence_sbd)を持つRHELの高可用性クラスタは、ソフトウェアエミュレートされたウォッチドッグを使用します。 SBDを使用する際は以下のドキュメントを確認してください。
Azure共有ディスクでのSBD使用方法
Azure Shared Disksを使うことで、クラスター内のすべての仮想マシンに同じディスクをマウントできます。 SBDデバイスをその共有ディスク上でホストすれば、追加のインフラ要件なしで可能です。
Benefits
- 追加のリソースを必要としない、SBD向けのネイティブなAzure共有ブロックデバイスオプションを提供します。
- 仮想マシンはマネージドディスクを直接接続し、追加のネットワーク要素への依存を減らすことができます。
重要な考慮事項
-
Premium SSDSKU の Azure 共有ディスクを SBD デバイスとして使用できます。 - サポートされているオペレーティングシステムの一覧を確認してください。
- Azureプレミアム共有ディスクを使用するSBDデバイスは、ローカル冗長ストレージ(LRS)およびゾーン冗長ストレージ(ZRS)をサポートします。
- デプロイのタイプに応じて、SBD デバイスとしてAzure共有ディスクに適した冗長ストレージを選択します。
- Azure Premium Shared Disk(skuName - Premium_LRS)で LRS を使用する SBD デバイスは、可用性セットでのデプロイのみをサポートします。
- Azureプレミアム共有ディスク(skuName - Premium_ZRS)にZRSを使用するSBDデバイスは、可用性ゾーンでの展開に推奨されます。
- SBD デバイスに使用するAzure共有ディスクは、大きくする必要はありません。 共有ディスクを使用できるクラスター ノードの数は、maxShares 値によって決まります。 例えば、SAP ASCS/ERSやSAP HANAのスケールアップのような2ノードクラスタで、SBDデバイスにP1またはP2のディスクサイズを使用できます。
- ノードが2つ以上あるクラスタの場合は、選択したディスクの文書化された maxShares を参照してください。
- Azure共有ディスクSBDデバイスを異なるPacemakerクラスタ間に接続しないでください。
- 複数のAzure共有ディスク SBD デバイスを使用する場合は、VM に接続できるデータ ディスクの最大数の制限を確認します。
- Azure共有ディスクの制限事項の詳細については、Azure共有ディスクのドキュメントの「制限事項」セクションを慎重に確認してください。
iSCSIターゲットを用いたSBDの使用
このソリューションでは、少なくとも1台の追加仮想マシン(VM)上でInternet Small Computer System Interface(iSCSI)ターゲットをホストする必要があります。
Benefits
- これらのiSCSIホストサーバーは、同じリージョン内の他のPacemakerクラスターのiSCSIターゲットもホストできます。
- すでにオンプレミスで使っている場合、Pacemakerクラスタの運用方法を変更する必要はありません。
重要な考慮事項
- クラスタのレジリエンシーを最高レベルにするには、3台のiSCSIホストサーバーを使用する必要があります。
- サーバーを1台しか使用しないと、単一障害点が生じ、そのサーバーが停止した場合にクラスタはフェンシングできなくなります。
- ペースメーカーは、ターゲットが2つしかなく、そのうち1人が倒れている場合はフェンシングを許可しません。
- iSCSIのターゲットホストサーバーは、クラスタと同じリージョンに存在しなければなりません。
- クラスタとiSCSIホストサーバー間のネットワークルーティングは、非冗長なネットワークデバイス( 例えばネットワーク仮想アプライアンス)を経由してはなりません。
- ネットワーク機器のメンテナンスイベントやその他の問題は、クラスタ全体の安定性と信頼性に悪影響を及ぼすことがあります。
Azure Fence Agentの使用
Azure Fence Agentを使うことで、クラスターはAzure APIを直接呼び出してノードをフェンス化し、失敗したノードを再起動できます。
Benefits
- 追加のリソースは必要ありません。
- 管理されたIDは認証情報のメンテナンスを一切削除します。
重要な考慮事項
- 認証にはマネージドIDを使いましょう。 現在サービスプリンシパルを使っている場合は、Azure Fence AgentをSPNからMSIに更新してください。
- Azure fence agentはパブリックAzureエンドポイントへのアウトバウンド接続が必要です。 考えられる解決策と詳細については、「標準 ILB を使用した VM のパブリック エンドポイント接続」を参照してください。
- 監視およびフェンス操作は逆シリアル化されます。 その結果、長時間実行されている監視操作と同時フェンス イベントがある場合、既に実行されている監視操作により、クラスターのフェールオーバーに遅延は発生しません。
SBD 用の Azure Shared Disk をデプロイする
PowerShellを使ってAzure共有ディスクを作成・接続するには、以下のコマンドを実行します。 Azure CLIやAzureポータルを使ってリソースをデプロイしたい場合は、「ZRSディスクをデプロイする」をご覧ください。
$ResourceGroup = "<ResourceGroupName>"
$DiskSizeInGB = 4
$DiskName = "<SBDDiskName>"
# Must be Equal to or greater than the Number of Nodes in the Cluster
$ShareNodes = 2
# Options are "Premium_LRS" or "Premium_ZRS"
$SKUName = "<DiskSKU>"
# VMs to attach the disk to
$vmNames = @("sap-cl1", "sap-cl2")
# Lun to attach the disk to. You should use the same lun on all servers in the cluster.
$lunNumber = <lunNumber>
$diskConfig = New-AzDiskConfig -Location $Location -SkuName $SkuName -CreateOption Empty -DiskSizeGB $DiskSizeInGB -MaxSharesCount $ShareNodes
$dataDisk = New-AzDisk -ResourceGroupName $ResourceGroup -DiskName $DiskName -Disk $diskConfig
# Attach SBD disk to cluster VMs
foreach ($vmName in $vmNames)
{
$vm = Get-AzVM -ResourceGroupName $resourceGroup -Name $vmName
Add-AzVMDataDisk -VM $vm -Name $diskName -CreateOption Attach -ManagedDiskId $dataDisk.Id -Lun $lunNumber
Update-AzVM -VM $vm -ResourceGroupName $resourceGroup -Verbose
}
iSCSIターゲットの使用
iSCSIターゲットホストサーバーを構築する
サポートされているRHEL OSバージョンで動作する3台の仮想マシンを展開します。 VMは必ずしも大きくする必要はありません。 Standard_E2sやStandard_D2sなどのVMサイズで十分です。
注
SAPにはHAやUpdate ServicesでRHELを使う必要はありませんし、iSCSIターゲットサーバーのSAP用OSイメージにはRHELを使う必要はありません。 代わりに標準のRHEL OSイメージを使うこともできます。 ただし、サポートライフサイクルは、OS 製品リリースによって異なります。
最新のアップデートをインストールし、必要なら再起動してください。
sudo dnf -y updateiSCSIターゲットパッケージをインストールしてください。
sudo dnf install -y targetcliiSCSIサービスを有効化し、開始します。
sudo systemctl start target sudo systemctl enable targetファイアウォールのポートを開けてください。
sudo firewall-cmd --add-port=3260/tcp --permanent sudo firewall-cmd --reload
iSCSIターゲットの作成
各クラスターごとに、各iSCSIホストサーバーにiSCSIディスクをプロビジョニングし、すべてのクラスタノードにそのディスクへのアクセスを許可する必要があります。 この例では、2つの異なるクラスターごとにディスクを作成します:
- ascsnw1:NW1のASCS/ERSクラスター
- hdbnw1:NW1用のHANAデータベースクラスター
- sap-cl1およびsap-cl2:NW1 ASCS/ERSクラスタノードのホスト名
- sap-db1およびsap-db2:NW1 HANAクラスタノードのホスト名
- すべての SBD デバイスのルート フォルダーを作成します。
sudo mkdir /sbd - 最初のクラスタ(ascsnw1)用のSBDデバイスを作成します。
# Create Storage Object sudo targetcli backstores/fileio create sbdascsnw1 /sbd/sbdascsnw1 50M write_back=false # Create iSCSI Target sudo targetcli iscsi/ create iqn.2006-04.ascsnw1.local:ascsnw1 # Creates the LUN and attaches it to the iSCSI Target sudo targetcli iscsi/iqn.2006-04.ascsnw1.local:ascsnw1/tpg1/luns/ create /backstores/fileio/sbdascsnw1 # Grant Cluster Node 1 (sap-cl1) access to the iSCSI Target sudo targetcli iscsi/iqn.2006-04.ascsnw1.local:ascsnw1/tpg1/acls/ create iqn.2006-04.sap-cl1.local:sap-cl1 # Grant Cluster Node 2 (sap-cl2) access to the iSCSI Target sudo targetcli iscsi/iqn.2006-04.ascsnw1.local:ascsnw1/tpg1/acls/ create iqn.2006-04.sap-cl2.local:sap-cl2 - 2つ目のクラスター(hdbnw1)用のSBDデバイスを作成します。
# Create Storage Object sudo targetcli backstores/fileio create sbdhdbnw1 /sbd/sbdhdbnw1 50M write_back=false # Create iSCSI Target sudo targetcli iscsi/ create iqn.2006-04.hdbnw1.local:hdbnw1 # Creates the LUN and attaches it to the iSCSI Target sudo targetcli iscsi/iqn.2006-04.hdbnw1.local:hdbnw1/tpg1/luns/ create /backstores/fileio/sbdhdbnw1 # Grant Cluster Node 1 (sap-db1) access to the iSCSI Target sudo targetcli iscsi/iqn.2006-04.hdbnw1.local:hdbnw1/tpg1/acls/ create iqn.2006-04.sap-db1.local:sap-db1 # Grant Cluster Node 2 (sap-db2) access to the iSCSI Target sudo targetcli iscsi/iqn.2006-04.hdbnw1.local:hdbnw1/tpg1/acls/ create iqn.2006-04.sap-db2.local:sap-db2 - 構成を保存します。
sudo targetcli saveconfig - セットアップを確認してください。
sudo targetcli ls o- / ............................................................................................... [...] o- backstores .................................................................................... [...] | o- block ........................................................................ [Storage Objects: 0] | o- fileio ....................................................................... [Storage Objects: 2] | | o- sbdascsnw1 ..................................... [/sbd/sbdascsnw1 (50.0MiB) write-thru activated] | | | o- alua ......................................................................... [ALUA Groups: 1] | | | o- default_tg_pt_gp ............................................. [ALUA state: Active/optimized] | | o- sbdhdbnw1 ....................................... [/sbd/sbdhdbnw1 (50.0MiB) write-thru activated] | | o- alua ......................................................................... [ALUA Groups: 1] | | o- default_tg_pt_gp ............................................. [ALUA state: Active/optimized] | o- pscsi ........................................................................ [Storage Objects: 0] | o- ramdisk ...................................................................... [Storage Objects: 0] o- iscsi .................................................................................. [Targets: 2] | o- iqn.2006-04.hdbnw1.local:hdbnw1 ......................................................... [TPGs: 1] | | o- tpg1 ..................................................................... [no-gen-acls, no-auth] | | o- acls ................................................................................ [ACLs: 2] | | | o- iqn.2006-04.sap-db1.local:sap-db1 .......................................... [Mapped LUNs: 1] | | | | o- mapped_lun0 ..................................................... [lun0 fileio/sbdhdb (rw)] | | | o- iqn.2006-04.sap-db2.local:sap-db2 .......................................... [Mapped LUNs: 1] | | | o- mapped_lun0 ..................................................... [lun0 fileio/sbdhdb (rw)] | | o- luns ................................................................................ [LUNs: 1] | | | o- lun0 ................................. [fileio/sbdhdbnw1 (/sbd/sbdhdbnw1) (default_tg_pt_gp)] | | o- portals .......................................................................... [Portals: 1] | | o- 0.0.0.0:3260 ........................................................................... [OK] | o- iqn.2006-04.ascsnw1.local:ascsnw1 ....................................................... [TPGs: 1] | o- tpg1 ..................................................................... [no-gen-acls, no-auth] | o- acls ................................................................................ [ACLs: 2] | | o- iqn.2006-04.sap-cl1.local:sap-cl1 .......................................... [Mapped LUNs: 1] | | | o- mapped_lun0 ................................................. [lun0 fileio/sbdascsnw1 (rw)] | | o- iqn.2006-04.sap-cl2.local:sap-cl2 .......................................... [Mapped LUNs: 1] | | o- mapped_lun0 ................................................. [lun0 fileio/sbdascsnw1 (rw)] | o- luns ................................................................................ [LUNs: 1] | | o- lun0 ............................... [fileio/sbdascsnw1 (/sbd/sbdascsnw1) (default_tg_pt_gp)] | o- portals .......................................................................... [Portals: 1] | o- 0.0.0.0:3260 ........................................................................... [OK] o- loopback ............................................................................... [Targets: 0]
Azure Fence Agent を構成する
ID の作成
マネージドアイデンティティ(MSI)を作成するには、クラスタ内の各VMごとに システム割り当てのマネージドアイデンティティを作成します 。 現時点ではユーザー割り当てのマネージドIDはサポートされていません。
カスタム ロールを作成する。
あなたのアイデンティティは、VMに対してフェンシングアクションを行うためにAzure RBACの許可が必要です。 最小権限アクセス(LPA)セキュリティモデルに準拠するために、 カスタムRBACロールを作成します。
必要に応じてサブスクリプションIDを置き換え、あなたの役割には以下の定義を用いてください。
{ "Name": "Linux Fence Agent", "description": "Allowed to power-off and start virtual machines", "assignableScopes": [ "/subscriptions/<Subscription 1 ID (GUID)>", "/subscriptions/<Subscription N ID (GUID)>" ], "actions": [ "Microsoft.Compute/*/read", "Microsoft.Compute/virtualMachines/powerOff/action", "Microsoft.Compute/virtualMachines/start/action" ], "notActions": [], "dataActions": [], "notDataActions": [] }カスタムロールをあなたのアイデンティティに割り当ててください。
クラスタ内の各VMごとに、その管理IDをクラスタ内のすべてのVM(自身も含む)のカスタム「Linux Fence Agent」ロールに割り当てます。 詳細な手順については、「Azure portal を使用してリソースにマネージド ID アクセスを割り当てる」を参照してください。
重要
マネージドIDでの権限の割り当ておよび解除は、有効期限まで 遅延する可能性がある ことに注意してください。
クラスタの作成と構成
[A] OSを更新し、必要に応じて再起動してください。
sudo dnf -y update[A] 必要なクラスタパッケージをインストールしてください。
sudo dnf install -y nmap-ncat pcs pacemaker resource-agents resource-agents-cloud[A] 必要なフェンスパッケージを設置してください。
sudo dnf install -y sbd fence-agents-sbdsudo dnf install -y sbd fence-agents-sbd iscsi-initiator-utilssudo dnf install -y fence-agents-azure-arm[A] DNSの設定を。
DNS サーバーを使用するか、すべてのノードで
/etc/hostsを変更できます。 この例では、/etc/hostsファイルを使用する方法を示します。エントリを使用しているIPアドレスとホスト名に一致するように更新してください。
sudo vi /etc/hosts [...] # IP address of cluster node 1 10.27.0.6 sap-cl1 # IP address of cluster node 2 10.27.0.7 sap-cl2sudo vi /etc/hosts [...] # IP address of cluster node 1 10.0.0.6 sap-cl1 # IP address of cluster node 2 10.0.0.7 sap-cl2 # IP address of iSCSI Target Host Server 1 10.0.0.17 sbd-iscsi1 # IP address of iSCSI Target Host Server 1 10.0.0.18 sbd-iscsi2 # IP address of iSCSI Target Host Server 1 10.0.0.19 sbd-iscsi3[A]
haclusterパスワードをすべてのノードで同じに更新してください。sudo passwd hacluster[A] ファイアウォールを更新しろ。
sudo firewall-cmd --add-service=high-availability --permanent sudo firewall-cmd --reload[A] ペースメーカーサービスを有効にしてください。
sudo systemctl start pcsd.service sudo systemctl enable pcsd.service[1] クラスターを作成してください。
sudo pcs host auth sap-cl1 sap-cl2 -u hacluster sudo pcs cluster setup ascsnw1 sap-cl1 sap-cl2 totem token=30000 sudo pcs cluster start --allPacemakerの起動遅延を設定してください。
起動直後にPacemakerを起動すると、フェイルオーバー完了前にノードがクラスタに再加入し、フェイルオーバーや回復遅延を防ぐ可能性があります。 この問題を解決するには、再起動時のペースメーカー起動を遅らせるタイマーサービスを使う方法があります。
-
[A] タイマーサービスの設定。
sudo vi /etc/systemd/system/pacemaker.timer[Unit] Description=Delay start of pacemaker.service after boot [Timer] OnBootSec=186 Unit=pacemaker.service [Install] WantedBy=timers.target -
[A] タイマーサービスを有効にしてください。
sudo systemctl daemon-reload sudo systemctl enable pacemaker.timer -
[1] ペースメーカーサービスを無効化。
sudo pcs cluster disable --all
-
[A] タイマーサービスの設定。
クラスターの検証。
-
[1] ペースメーカークラスターの検証。
sudo pcs status Cluster name: ascsnw1 Cluster Summary: * Stack: corosync (Pacemaker is running) * Current DC: sap-cl1 (version 3.0.0-5.1.el10_0-8818a21) - partition with quorum * Last updated: Tue May 19 22:15:08 2026 on sap-cl1 * Last change: Tue Apr 21 23:11:34 2026 by root via root on sap-cl1 * 2 nodes configured * 0 resource instances configured Node List: * Online: [ sap-cl1 sap-cl2 ] Full List of Resources: Daemon Status: corosync: active/disabled pacemaker: active/disabled pcsd: active/enabled -
[A] サービスの検証。
systemctl list-unit-files pacemaker.timer pacemaker.service corosync.service pcsd.serviceUNIT FILE STATE PRESET corosync.service disabled disabled pacemaker.service disabled disabled pacemaker.timer enabled disabled pcsd.service enabled disabled
-
[1] ペースメーカークラスターの検証。
フェンシングの設定
-
[A] SBDサービスを有効にする。
sudo systemctl enable sbd -
[A] ソフトウェアウォッチドッグを有効にしてください。
echo softdog | sudo tee /etc/modules-load.d/softdog.conf sudo modprobe softdog -
[A] iSCSIデバイスIDを発見。
- LUN番号に基づいてマウントポイントを決定します
ls -l /dev/disk/azure/scsi1/lun1 lrwxrwxrwx. 1 root root 12 Apr 16 20:22 /dev/disk/azure/scsi1/lun1 -> ../../../sdb - マウントからiSCSIデバイスIDを取得してください。
ls -l /dev/disk/by-id/scsi-3* | grep -i sdb lrwxrwxrwx. 1 root root 9 Apr 16 20:22 /dev/disk/by-id/scsi-360022480055c9f501a24256ea0f87617 -> ../../sdb
- LUN番号に基づいてマウントポイントを決定します
-
[1] SBD デバイスを作成します。
sudo sbd -d /dev/disk/by-id/scsi-360022480055c9f501a24256ea0f87617 -1 60 -4 120 create
-
[1] SBDデバイスをクラスタに追加します。
sudo pcs stonith create sbd fence_sbd devices=/dev/disk/by-id/scsi-360022480055c9f501a24256ea0f87617 op monitor interval=600 timeout=15 -
[1] SBDの設定を変更してください。
sudo pcs property set stonith-timeout=210 sudo pcs property set stonith-enabled=true -
[A] SBDの設定ファイルを検証してください。
sudo vi /etc/sysconfig/sbd[...] SBD_DELAY_START=no [...] SBD_PACEMAKER=yes [...] SBD_STARTMODE=always [...]
-
[A] 必要なサービスを有効にしてください。
sudo systemctl enable sbd iscsi iscsid -
[A] ソフトウェア ウォッチドッグを有効にする。
echo softdog | sudo tee /etc/modules-load.d/softdog.conf sudo modprobe softdog -
[1] ノード1の
InitiatorNameを更新してください。sudo vi /etc/iscsi/initiatorname.iscsi [...] InitiatorName=iqn.2006-04.sap-cl1.local:sap-cl1 -
[2] ノード2の
InitiatorNameを更新してください。# Node 2 sudo vi /etc/iscsi/initiatorname.iscsi [...] InitiatorName=iqn.2006-04.sap-cl2.local:sap-cl2 -
[A] iSCSIサービスを再起動してください。
sudo systemctl restart iscsi iscsid -
[A] すべてのiSCSIホストサーバーからiSCSIターゲットをマウントします。
for hostServer in sbd-iscsi1 sbd-iscsi2 sbd-iscsi3; do iscsiadm -m discovery --type=st --portal=${hostServer}:3260 iscsiadm -m node -T iqn.2006-04.ascsnw1.local:ascsnw1 --login --portal=${hostServer}:3260 iscsiadm -m node --portal=${hostServer}:3260 -T iqn.2006-04.ascsnw1.local:ascsnw1 --op=update --name=node.startup --value=automatic done -
[A] iSCSIデバイスIDを発見する。
- iSCSIのマウントポイントを特定してください。
lsscsi [0:0:0:0] disk Msft Virtual Disk 1.0 /dev/sda [1:0:0:1] disk Msft Virtual Disk 1.0 /dev/sdb [2:0:0:0] disk LIO-ORG sbdascsnw1 4.0 /dev/sdc [3:0:0:0] disk LIO-ORG sbdascsnw1 4.0 /dev/sdd [4:0:0:0] disk LIO-ORG sbdascsnw1 4.0 /dev/sde - iSCSIデバイスIDを取得してください。
ls -l /dev/disk/by-id/scsi-3* | grep sd[c,d,e] lrwxrwxrwx 1 root root 9 Jul 21 18:02 /dev/disk/by-id/scsi-3600140537cf4c6d604a4ae4b58f1a528 -> ../../sdd lrwxrwxrwx 1 root root 9 Jul 21 17:50 /dev/disk/by-id/scsi-360014056e4d07b80e1148ac973330dff -> ../../sdc lrwxrwxrwx 1 root root 9 Jul 21 18:04 /dev/disk/by-id/scsi-360014059f135275c24647d49268123e5 -> ../../sde
- iSCSIのマウントポイントを特定してください。
-
[1] SBDデバイスを作成してください。
sudo sbd -d /dev/disk/by-id/scsi-3600140537cf4c6d604a4ae4b58f1a528 -1 60 -4 120 create sudo sbd -d /dev/disk/by-id/scsi-360014056e4d07b80e1148ac973330dff -1 60 -4 120 create sudo sbd -d /dev/disk/by-id/scsi-360014059f135275c24647d49268123e5 -1 60 -4 120 create
-
[1] SBDデバイスをクラスタに追加します。
sudo pcs stonith create sbd fence_sbd \ devices=/dev/disk/by-id/scsi-3600140537cf4c6d604a4ae4b58f1a528,/dev/disk/by-id/scsi-360014056e4d07b80e1148ac973330dff,/dev/disk/by-id/scsi-360014059f135275c24647d49268123e5 \ op monitor interval=600 timeout=120 -
[1] SBDの設定を変更してください。
sudo pcs property set stonith-timeout=210 sudo pcs property set stonith-enabled=true -
[A] SBDの設定ファイルを検証してください。
sudo vi /etc/sysconfig/sbd[...] SBD_DELAY_START=no [...] SBD_PACEMAKER=yes [...] SBD_STARTMODE=always [...]
[1] Azure Fence Agent を設定します。
注
政府クラウドAzure使用する場合は、Azure Fence Agentの設定時に
cloud=オプションを指定する必要があります。 たとえば、Azure米国政府機関向けクラウドのcloud=usgovなどです。sudo pcs stonith create rsc_st_azure fence_azure_arm msi=true \ resourceGroup="<ResourceGroupName>" subscriptionId="<SubscriptionID>" \ pcmk_host_map="sap-cl1:<AzureVMNameCL1>;sap-cl2:<AzureVMNameCL2>" \ power_timeout=240 pcmk_reboot_timeout=900 pcmk_monitor_timeout=120 \ pcmk_monitor_retries=4 pcmk_action_limit=3 pcmk_delay_max=15 \ meta failure-timeout=120s op monitor interval=3600 timeout=120[1] Azure Fence Agent 用にクラスタを設定してください。
sudo pcs property set stonith-enabled=true sudo pcs property set stonith-timeout=900
2つ以上のノードを持つPacemakerクラスタの構築
より大きなクラスターを構築する場合は、以下の点を念頭に置いてください:
[1] クラスター構成を調整。
ノードが3つ以上追加されると、
Votequorum - Expected votesとVotequorum - Flags - 2Nodeの値は自動的に更新されます。2Nodeフラグが存在せず、Votequorum - Expected votesがクラスタ内のノード数と等しいかを検証します。sudo pcs quorum status Quorum information ------------------ [...] Votequorum information ---------------------- Expected votes: 3 Highest expected: 3 Total votes: 3 Quorum: 2 Flags: Quorate WaitForAll Membership information ---------------------- [...]フェンスの配置を調整してください。
sudo crm resource param stonith-sbd delete pcmk_delay_max sudo crm resource param stonith-sbd set pcmk_action_limit -1sudo crm resource param rsc_st_azure delete pcmk_delay_max sudo crm resource param rsc_st_azure pcmk_action_limit -1
Azure のスケジュールされたイベントに対して Pacemaker を構成する
Scheduled Eventsは、アプリケーションがVMのメンテナンス準備をする時間を与えるAzureメタデータサービスです。 再起動などの今後のメンテナンスイベントに関する情報を提供し、アプリケーションがそれに備えて混乱を抑えられます。
azure-events-az リソースエージェントはこのメタデータサービスを監視します。 エージェントがイベントを検出し、別のクラスタノードが利用可能であると判断すると、ノードレベルのヘルス属性 #health-azure を -1000000に設定します。 この値によりクラスタはノードを不健康とみなし、影響を受けたノードからリソースを移動させます。 ロケーション制約により、 health- から始まるリソースは除外されます。なぜなら、azure-events-azエージェントは両方のノードで動作する必要があるからです。 影響を受けたクラスタノードが実行中のクラスタリソースから解放されると、エージェントはメタデータサービスに通知し、スケジュールされたイベントは継続されます。 すべてのイベントが完了すると、リソースエージェントは #health-azure 属性を 0に戻し、ノードを再び健康状態にマークします。
重要
前回は、リソース エージェント azure-events の使用について説明しました。 新しいリソース エージェント azure-events-az は、さまざまな可用性ゾーンに展開された Azure 環境を完全にサポートします。 Pacemakerを使ったすべてのSAPハイアプライシステムには、新しいazure-events-azエージェントを使いましょう。
resource-agentsパッケージをインストールしてアップデートしてください。sudo dnf install -y resource-agents[1] クラスターをメンテナンスモードに切り替えろ。
sudo pcs property set maintenance-mode=true[1] ペースメーカークラスターの健康ノード戦略と制約を設定します。
重要
次の手順で説明するリソース以外に、
health-で始まるクラスター内の他のリソースは定義しないでください。sudo pcs property set node-health-strategy=custom sudo pcs constraint location 'regexp%!health-.*' \ rule score-attribute='#health-azure' \ "defined #uname"[1] クラスター属性の初期値を設定します。
各クラスタノードごとにコマンドを実行します。 スケールアウト環境には、マジョリティメーカーのVMを含めてください。
# Node 1 sudo crm_attribute --node sap-cl1 --name '#health-azure' --update 0 # Node 2 sudo crm_attribute --node sap-cl2 --name '#health-azure' --update 0 # Node N sudo crm_attribute --node sap-clN --name '#health-azure' --update 0[1] Pacemaker 内でリソースを構成します。 資源は
health-azureから始まらなければなりません。sudo pcs resource create health-azure-events \ ocf:heartbeat:azure-events-az \ meta failure-timeout=120s \ op monitor interval=10s timeout=240s \ op start timeout=10s start-delay=90ssudo pcs resource clone health-azure-events meta allow-unhealthy-nodes=trueペースメーカーのクラスターをメンテナンスモードから解除し、エラーを消してください
sudo pcs property set maintenance-mode=false sudo pcs resource cleanupすべてのノードで
health-azure-eventsが正常に起動しているか確認してください。sudo pcs status Cluster name: ascsnw1 Cluster Summary: * Stack: corosync (Pacemaker is running) * Current DC: sap-cl1 (version 3.0.0-5.1.el10_0-8818a21) - partition with quorum * Last updated: Tue May 19 22:15:08 2026 on sap-cl1 * Last change: Tue Apr 21 23:11:34 2026 by root via root on sap-cl1 * 2 nodes configured * 3 resource instances configured Node List: * Online: [ sap-cl1 sap-cl2 ] Full List of Resources: * sbd (stonith:fence_sbd): Started sap-cl1 * Clone Set: health-azure-events-clone [health-azure-events]: * Started: [ sap-cl1 sap-cl2 ] Daemon Status: corosync: active/disabled pacemaker: active/disabled pcsd: active/enabled sbd: active/enabledスケジュール化されたイベントに対する初回クエリの実行には、最大 2 分かかることがあります。 スケジュール化されたイベントを使用した Pacemaker テストでは、クラスター VM の再起動または再デプロイ アクションを使用できます。 詳細については、「スケジュールされたイベント」を参照してください。
オプションのフェンス構成
ヒント
このセクションは、特殊なフェンス デバイス fence_kdump を構成する必要がある場合にのみ適用されます。
VM 内で診断情報を収集する必要がある場合は、フェンス エージェント fence_kdump に基づいて別のフェンス デバイスを構成すると有用な場合があります。
fence_kdump エージェントでは、他のフェンス メソッドが呼び出される前に、kdump クラッシュ復旧に入ったノードを検出してクラッシュ復旧サービスを完了できるようにすることができます。 Azure VM を使用している場合、fence_kdump は、SBD や Azure フェンス エージェントなどの従来のフェンス メカニズムに代わるものではないことに注意してください。
重要
fence_kdump が第 1 レベルのフェンス デバイスとして構成されている場合、それによってフェンス操作で遅延が発生し、アプリケーション リソースのフェールオーバーでそれぞれ遅延が発生することに注意してください。
クラッシュ ダンプが正常に検出された場合、フェンスはクラッシュ復旧サービスが完了するまで遅延されます。 失敗したノードが到達不能な場合や応答しない場合は、構成されている繰り返しの回数と、fence_kdump のタイムアウトによって決まる時間だけフェンスが遅延されます。
提案されている fence_kdump のタイムアウトは、実際の環境に合わせて調整する必要がある場合があります。
fence_kdump フェンスは、VM 内で診断を収集するために必要な場合にのみ構成し、SBD やAzureフェンス エージェントなどの従来のフェンスメソッドと常に組み合わせて構成することをお勧めします。
以下の Red Hat KB には、fence_kdump フェンスの構成に関する重要な情報が含まれています。
- Red Hat Pacemaker クラスターでfence_kdumpを構成する方法を参照してください。
- 「Pacemaker を使用する RHEL クラスターでフェンス レベルを構成および管理する方法」を参照してください。
- 既定のタイムアウトを変更する方法については、「RHEL 6、7、8 HA アドオンで使用する kdump を構成する方法」を参照してください。
-
fence_kdumpを使用するときにフェールオーバーの遅延を減らす方法については、「fence_kdump構成を追加するときに予想されるフェールオーバーの遅延を減らすことができますか?」を参照してください。
次の省略可能な手順を実行して、Azureフェンス エージェントの構成に加えて、fence_kdump を第 1 レベルのフェンス構成として追加します。
[A]
kdumpがアクティブになっていて、構成されていることを確認します。systemctl is-active kdump # Expected result # active[A]
fence_kdumpフェンス エージェントをインストールします。sudo dnf install -y fence-agents-kdump[1] クラスター内に
fence_kdumpフェンス デバイスを作成します。pcs stonith create rsc_st_kdump fence_kdump pcmk_reboot_action="off" pcmk_host_list="sap-cl1 sap-cl2" timeout=30[1] フェンス レベルを構成して、
fence_kdumpフェンス メカニズムが最初に動作するようにします。pcs stonith create rsc_st_kdump fence_kdump pcmk_reboot_action="off" pcmk_host_list="sap-cl1 sap-cl2" pcs stonith level add 1 sap-cl1 rsc_st_kdump pcs stonith level add 1 sap-cl2 rsc_st_kdump # Replace <stonith-resource-name> to the resource name of the STONITH resource configured in your pacemaker cluster (example based on above configuration - sbd or rsc_st_azure) pcs stonith level add 2 sap-cl1 <stonith-resource-name> pcs stonith level add 2 sap-cl2 <stonith-resource-name> # Check the fencing level configuration pcs stonith level # Example output # Target: sap-cl1 # Level 1 - rsc_st_kdump # Level 2 - <stonith-resource-name> # Target: sap-cl2 # Level 1 - rsc_st_kdump # Level 2 - <stonith-resource-name>[A] ファイアウォールを通過する
fence_kdumpのために必要なポートを許可します。firewall-cmd --add-port=7410/udp --permanent firewall-cmd --reload[A]
fence_kdump_nodesの一部のバージョンでタイムアウトによる/etc/kdump.confの失敗が発生しないように、fence_kdumpでkexec-toolsの構成を実行します。 詳細については、kexec-tools バージョン 2.0.15 以降で fence_kdump_nodes が指定されていない場合に fence_kdump がタイムアウトするを参照してください。 ここでは、2 ノード クラスターの構成例を示します。/etc/kdump.confで変更を加えた後に、kdump イメージを再生成する必要があります。 再生成するには、kdumpサービスを再起動します。vi /etc/kdump.conf # On node prod-cl1-0 make sure the following line is added fence_kdump_nodes prod-cl1-1 # On node prod-cl1-1 make sure the following line is added fence_kdump_nodes prod-cl1-0 # Restart the service on each node systemctl restart kdump[A]
initramfsイメージ ファイルにfence_kdumpとhostsのファイルが含まれることを確認します。lsinitrd /boot/initramfs-$(uname -r)kdump.img | egrep "fence|hosts" # Example output # -rw-r--r-- 1 root root 208 Jun 7 21:42 etc/hosts # -rwxr-xr-x 1 root root 15560 Jun 17 14:59 usr/libexec/fence_kdump_sendノードをクラッシュさせて構成をテストします。
重要
クラスターが既に運用環境で使用中の場合は、ノードをクラッシュさせるとアプリケーションに影響があるため、それに応じてテストを計画します。
echo c > /proc/sysrq-trigger
次のステップ
- SAP の Azure 仮想マシン の計画と実装。
- SAP 用の Azure 仮想マシン のデプロイ。
- SAP 用の Azure 仮想マシン DBMS デプロイ。
- Red Hat Enterprise Linux上のAzure VMsにおけるNFS Simple Mountの高可用性。
- 高可用性を確立し、Azure VM 上の SAP HANA のディザスター リカバリーを計画する方法については、Azure Virtual Machines での SAP HANA の高可用性に関するページを参照してください。