このガイドでは、アクティブ/パッシブ クラスタ構成を使用して、 Google Cloudの Red Hat Enterprise Linux(RHEL)高可用性クラスタに SAP MaxDB システムをデプロイする方法について説明します。
Linux に単一ノード SAP MaxDB システムをデプロイするには、SAP MaxDB デプロイガイドをご覧ください。
このガイドは、SAP システムの Linux HA 構成に精通している SAP MaxDB の上級ユーザーを対象としています。
このガイドでデプロイするシステム
このガイドでは、次の手順について説明します。
- 障害発生時にトラフィックを再ルーティングするように内部パススルー ネットワーク ロードバランサを構成する
- RHEL に Pacemaker クラスタを構成して、フェイルオーバー中に SAP システムやその他のリソースを管理する
デプロイされたクラスタには、以下の機能が含まれます。
- 異なるゾーンにある 2 つの Compute Engine VM(SAP MaxDB のインスタンスを実行可能)
- SAP MaxDB のインストール用のリージョン Persistent Disk。
- Pacemaker 高可用性クラスタ リソース マネージャー。
- STONITH フェンシング メカニズム。
SAP NetWeaver の高可用性インストールについては、このガイドでは説明しません。
前提条件
SAP MaxDB 高可用性クラスタを作成する前に、次の前提条件を満たしていることを確認してください。
- SAP MaxDB プランニング ガイドを参照した。
- Red Hat サブスクリプションを持っている。
- 個人または組織で Google Cloud アカウントを所有していて、SAP MaxDB をデプロイするプロジェクトを作成済みである。
データ所在地、アクセス制御、サポート担当者、規制要件に準拠しながら SAP ワークロードを実行する必要がある場合は、必要な Assured Workloads フォルダを作成する必要があります。詳細については、 Google Cloudでの SAP のコンプライアンスと主権管理をご覧ください。
プロジェクト メタデータで OS Login が有効になっている場合は、デプロイが完了するまで一時的に OS Login を無効にする必要があります。デプロイのために、次の手順によりインスタンス メタデータで SSH 認証鍵を構成します。OS Login が有効になっている場合、メタデータ ベースの SSH 認証鍵構成は無効になり、このデプロイは失敗します。 デプロイが完了したら、再度 OS Login を有効にできます。
詳細情報
ネットワークの作成
セキュリティ上の理由から、新しいネットワークを作成します。アクセスできるユーザーを制御するには、ファイアウォール ルールを追加するか、別のアクセス制御方法を使用します。
プロジェクトにデフォルトの VPC ネットワークがある場合、デフォルトは使用せず、明示的に作成したファイアウォール ルールが唯一の有効なルールとなるように、独自の VPC ネットワークを作成してください。
デプロイ中、VM インスタンスは通常、 Google Cloudの SAP 用エージェントをダウンロードするためにインターネットにアクセスする必要があります。 Google Cloudから入手できる SAP 認定の Linux イメージのいずれかを使用している場合も、ライセンスを登録して OS ベンダーのリポジトリにアクセスするために、VM インスタンスからインターネットにアクセスする必要があります。このアクセスをサポートするために、NAT ゲートウェイを配置し、VM ネットワーク タグを使用して構成します。ターゲット VM に外部 IP がない場合でもこの構成が可能です。
ネットワークを設定するには:
Console
- Google Cloud のコンソールで、[VPC ネットワーク] ページに移動します。
- [VPC ネットワークを作成] をクリックします。
- ネットワークの名前を入力します。
命名規則に従って名前を付けてください。VPC ネットワークは、Compute Engine の命名規則を使用します。
- [サブネット作成モード] で [カスタム] をクリックします。
- [新しいサブネット] セクションで、サブネットに次の構成パラメータを指定します。
- サブネットの名前を入力します。
- [リージョン] で、サブネットを作成する Compute Engine のリージョンを選択します。
- [IP スタックタイプ] で [IPv4(シングルスタック)] を選択し、CIDR 形式で IP アドレス範囲を入力します。(
10.1.0.0/24
など)これはサブネットのプライマリ IPv4 範囲です。複数のサブネットワークを追加する場合は、ネットワーク内の各サブネットワークに重複しない CIDR IP 範囲を割り当ててください。各サブネットワークとその内部 IP 範囲は、単一のリージョンにマッピングされることに注意してください。
- [完了] をクリックします。
- さらにサブネットを追加するには、[サブネットを追加] をクリックして前の手順を繰り返します。ネットワークを作成した後で、ネットワークにさらにサブネットを追加できます。
- [作成] をクリックします。
gcloud
- Cloud Shell に移動します。
- カスタム サブネットワーク モードで新しいネットワークを作成するには、次のコマンドを実行します。
gcloud compute networks create NETWORK_NAME --subnet-mode custom
NETWORK_NAME
は、新しいネットワークの名前に置き換えます。命名規則に従って名前を付けてください。VPC ネットワークは、Compute Engine の命名規則を使用します。デフォルトの自動モードでは、各 Compute Engine リージョンにサブネットが自動的に作成されます。この自動モードを使用しないようにするには、
--subnet-mode custom
を指定します。詳しくは、サブネット作成モードをご覧ください。 - サブネットワークを作成し、リージョンと IP 範囲を指定します。
gcloud compute networks subnets create SUBNETWORK_NAME \ --network NETWORK_NAME --region REGION --range RANGE
次のように置き換えます。
SUBNETWORK_NAME
: 新しいサブネットワークの名前NETWORK_NAME
: 前の手順で作成したネットワークの名前。REGION
: サブネットワークを配置するリージョン。RANGE
: CIDR 形式で指定された IP アドレス範囲(例:10.1.0.0/24
)。複数のサブネットワークを追加する場合は、ネットワーク内の各サブネットワークに重複しない CIDR IP 範囲を割り当ててください。各サブネットワークとその内部 IP 範囲は、単一のリージョンにマッピングされることに注意してください。
- 必要に応じて前の手順を繰り返し、サブネットワークを追加します。
NAT ゲートウェイの設定
パブリック IP アドレスなしで 1 台以上の VM を作成する必要がある場合は、ネットワーク アドレス変換(NAT)を使用して、VM がインターネットにアクセスできるようにする必要があります。Cloud NAT は、 Google Cloud の分散ソフトウェア定義マネージド サービスであり、VM からインターネットへのパケットの送信と、それに対応するパケットの受信を可能にします。また、別個の VM を NAT ゲートウェイとして設定することもできます。
プロジェクトに Cloud NAT インスタンスを作成する方法については、Cloud NAT の使用をご覧ください。
プロジェクトに Cloud NAT を構成すると、VM インスタンスはパブリック IP アドレスなしでインターネットに安全にアクセスできるようになります。
ファイアウォール ルールの追加
デフォルトでは、暗黙のファイアウォール ルールにより、Virtual Private Cloud(VPC)ネットワークの外部からの受信接続がブロックされます。受信側の接続を許可するには、VM にファイアウォール ルールを設定します。VM との受信接続が確立されると、トラフィックはその接続を介して双方向に許可されます。
特定のポートへの外部アクセスを許可するファイアウォール ルールや、同じネットワーク上の VM 間のアクセスを制限するファイアウォール ルールも作成できます。VPC ネットワーク タイプとして default
が使用されている場合は、default-allow-internal
ルールなどの追加のデフォルト ルールも適用されます。追加のデフォルト ルールは、同じネットワークであれば、すべてのポートで VM 間の接続を許可します。
ご使用の環境に適用可能な IT ポリシーによっては、データベース ホストへの接続を分離するか制限しなければならない場合があります。これを行うには、ファイアウォール ルールを作成します。
目的のシナリオに応じて、次の対象にアクセスを許可するファイアウォール ルールを作成できます。
- すべての SAP プロダクトの TCP/IP にリストされているデフォルトの SAP ポート。
- パソコンまたは企業のネットワーク環境から Compute Engine VM インスタンスへの接続。使用すべき IP アドレスがわからない場合は、社内のネットワーク管理者に確認してください。
ファイアウォール ルールを作成するには:
コンソール
Google Cloud コンソールで、Compute Engine の [ファイアウォール] ページに移動します。
ページ上部の [ファイアウォール ルールを作成] をクリックします。
- [ネットワーク] フィールドで、VM が配置されているネットワークを選択します。
- [ターゲット] フィールドで、このルールが適用される Google Cloud上のリソースを指定します。たとえば、[ネットワーク上のすべてのインスタンス] を指定します。 Google Cloud上の特定のインスタンスにルールを制限するには、[指定されたターゲットタグ] にタグを入力します。
- [ソースフィルタ] フィールドで、次のいずれかを選択します。
- 特定の IP アドレスからの受信トラフィックを許可する場合は、[IP 範囲] を選択します。[ソース IP の範囲] フィールドで IP アドレスの範囲を指定します。
- サブネット: 特定のサブネットワークからの受信トラフィックを許可する場合に使用します。次の [サブネット] フィールドにサブネットワーク名を指定します。このオプションを使用すると、3 層構成またはスケールアウト構成で VM 間のアクセスを許可できます。
- [プロトコルとポート] セクションで、[指定したプロトコルとポート] を選択して
tcp:PORT_NUMBER
を指定します。
[作成] をクリックしてファイアウォール ルールを作成します。
gcloud
次のコマンドを使用して、ファイアウォール ルールを作成します。
$
gcloud compute firewall-rules create firewall-name
--direction=INGRESS --priority=1000 \
--network=network-name --action=ALLOW --rules=protocol:port \
--source-ranges ip-range --target-tags=network-tags
VM のデプロイと MaxDB のインストール
HA クラスタの構成を開始する前に、HA クラスタのプライマリ ノードとセカンダリ ノードとして機能する VM インスタンスと SAP MaxDB システムを定義してデプロイします。
MaxDB のデプロイ用に VM を作成する
HA デプロイの一環として、2 つの Google Cloud Compute Engine VM を作成する必要があります。ガイドの Compute Engine インスタンスを作成して起動するを参照してください。
リージョン Persistent Disk は、E2、N1、N2、N2D マシンタイプの使用のみをサポートしています。詳細については、リージョン Persistent Disk ガイドをご覧ください。
サイズ設定に基づいて適切なマシンタイプを選択するには、SAP Note 2456432 - SAP applications on Google Cloud: Supported products and Google Cloud machine types をご覧ください。
ゾーン復元力を得るために、2 つの VM を別々のゾーンに作成し、次の最小要件を満たすようにします。
VM の詳細:
Instance Name
Zone
- 優先ゾーンMachine Type
- サイズに基づくSubnet
- このリージョン用に作成されたサブネット名
次の API へのアクセス スコープが少なくとも付与されているサービス アカウント。
- https://www.googleapis.com/auth/compute
- https://www.googleapis.com/auth/servicecontrol
- https://www.googleapis.com/auth/service.management.readonly
- https://www.googleapis.com/auth/logging.write
- https://www.googleapis.com/auth/monitoring.write
- https://www.googleapis.com/auth/trace.append
- https://www.googleapis.com/auth/devstorage.read_write
/usr/sap
に使用する各 VM の追加ディスク(最小 20 GB)
SAP MaxDB 用にリージョン ディスクを 1 つ作成する
このデプロイでは、1 つのリージョン ディスクを使用して、/sapdb
ディレクトリ内に MaxDB ファイルを保持します。
ディスクを作成します。リージョン ディスクのレプリケーション ゾーンが、2 つの VM を作成したゾーンと一致していることを確認します。
リージョン ディスクを、MaxDB のインストールと構成タスクを実行する VM の 1 つにアタッチします。
SAP のインストール用に RHEL OS を準備する
SAP 製品のインストールには、特定のオペレーティング システムの設定とパッケージが必要です。SAP Note: 2772999 - Red Hat Enterprise Linux 8.x: Installation and Configuration のガイドラインに沿って操作します。
このタスクは両方のノードで行う必要があります。
ファイルシステムを作成する
SSH を使用して両方のインスタンスに接続し、
/usr/sap/SID
マウントポイントと/sapdb
マウントポイントを作成します。#
sudo mkdir -p /usr/sap/SID#
sudo mkdir -p /sapdbmkfs
を使用して、VM にアタッチされた 2 つの追加ディスクにファイル システムを作成します。この時点で、リージョン ディスクはいずれかの VM にアタッチされるだけであるため、
/sapdb
ファイル システムの作成は 1 回のみ行われます。/etc/fstab
ファイルを編集して、両方のノードで再起動時に常に/usr/sap/SID
をマウントするようにします。MaxDB のインストールを行うノードに
/sapdb
ファイル システムを手動でマウントします。ファイルシステムの作成とマウントについては、Linux VM で非ブートディスクをフォーマットしてマウントするをご覧ください。
LVM 構成を変更する
論理ボリューム管理(LVM)の設定を変更し、共有ボリューム グループ(VG)が常に 1 つのノードにのみアタッチされ、アクセスできるようにする必要があります。
これを行うには、両方のノードで次の手順を実行します。
root として
/etc/lvm/lvm.conf
ファイルを編集し、system_id_source
の値をnone
からuname
に変更します。結果を確認します。
#
grep -i system_id_source /etc/lvm/lvm.conf次のような出力が表示されます。
# Configuration option global/system_id_source. system_id_source = "uname"
さらに、ノードが再起動したときに VM がクラスタで管理される VG を有効にしないように、
/etc/lvm/lvm.conf
構成ファイルで次のパラメータに、クラスタで管理されない VG の完全な名前をカンマで区切って指定します。たとえば、
usrsap
がクラスタで管理されていない VG 名である場合:auto_activation_volume_list = [ usrsap ]
たとえば、クラスタで管理されていない VG が存在しない場合、このパラメータは空の値で追加する必要があります。
auto_activation_volume_list = [ ]
データベースと SAP Host Agent のインストール
オペレーティング システムが構成されたら、SAP MaxDB データベースと SAP Host Agent をインストールできます。MaxDB は通常、統合されている SAP プロダクトとともにインストールされます。
インストールは、リージョン Persistent Disk をアタッチしたインスタンスでのみ 1 回のみ実行されます。
VM に SAP MaxDB をインストールするには:
- Linux ベースの VM への SSH 接続を確立します。
- SAP インストール ガイドに従って、SAP Software Provisioning Manager(SWPM)、SAP プロダクト インストール メディア、MaxDB インストール メディアをダウンロードします。
- SAP プロダクトの SAP インストール ガイドに従って、SAP プロダクトと SAP MaxDB データベースをインストールします。追加のガイダンスについては、SAP MaxDB documentation をご覧ください。
追加のインストール情報については、SAP Note 1020175 - FAQ: SAP MaxDB installation, upgrade or applying a patch をご覧ください。
インストールが完了したら、次の検証を実行します。
sidadm ユーザーとして、MaxDB のステータスを確認します。
#
dbmcli -d SID -u control,password db_state出力は次の例のようになります。
>dbmcli -d MDB -u control, my_p4$$w0rd db_state OK State ONLINE
x_server
のステータスも確認します。#
x_server出力は次の例のようになります。
>x_server 2024-10-23 19:01:43 11968 19744 INF 12916 Found running XServer on port 7200 2024-10-23 19:01:43 11968 19744 INF 13011 version 'U64/LIX86 7.9.10 Build 004-123-265-969' 2024-10-23 19:01:43 11968 19744 INF 13010 installation MDB - path: /sapdb/MDB/db 2024-10-23 19:01:45 11971 13344 INF 12916 Found running sdbgloballistener on port 7210 2024-10-23 19:01:45 11971 13344 INF 13011 version 'U64/LIX86 7.9.10 Build 004-123-265-969'
SAP Host エージェントが実行されているかどうかを確認します。
#
ps -ef | grep -i hostctrl出力は次の例のようになります。
>ps -ef | grep -i hostctrl root 1543 1 0 Oct18 ? 00:00:15 /usr/sap/hostctrl/exe/saphostexec pf=/usr/sap/hostctrl/exe/host_profile sapadm 1550 1 0 Oct18 ? 00:03:00 /usr/sap/hostctrl/exe/sapstartsrv pf=/usr/sap/hostctrl/exe/host_profile -D root 1618 1 0 Oct18 ? 00:03:48 /usr/sap/hostctrl/exe/saposcol -l -w60 pf=/usr/sap/hostctrl/exe/host_profile mdbadm 12751 11261 0 19:03 pts/0 00:00:00 grep --color=auto -i hostctrl
インストールの検証後、MaxDB インスタンスと x_server を停止します。
# dbmcli -d SID -u control, and password db_offline # x_server stop
インストール後のタスクの実行
SAP MaxDB インスタンスを使用する前に、次のデプロイ後の手順を実行することをおすすめします。
- 最新のパッチがある場合は、それを使用して SAP MaxDB ソフトウェアを更新します。
- 追加のコンポーネントをインストールします。
- 新しい SAP MaxDB データベースを構成してバックアップします。
詳細については、SAP MaxDB Database Administration をご覧ください。
SAP MaxDB システムが正常にデプロイされたら、HA クラスタを定義して構成します。
Cloud Load Balancing のフェイルオーバー サポートを構成する
フェイルオーバーをサポートする内部パススルー ネットワーク ロードバランサ サービスは、ヘルスチェック サービスに基づいて、SAP MaxDB クラスタ内のアクティブ ホストにトラフィックをルーティングします。
仮想 IP の IP アドレスを予約する
仮想 IP(VIP)アドレスはフローティング IP アドレスとも呼ばれ、アクティブな SAP MaxDB システムに従います。ロードバランサは、VIP に送信されるトラフィックを、アクティブな SAP MaxDB システムをホストしている VM に転送します。
Cloud Shell を開きます。
仮想 IP の IP アドレスを予約します。これは、アプリケーションが SAP MaxDB へのアクセスに使用する IP アドレスです。
--addresses
フラグを省略すると、指定したサブネット内の IP アドレスが自動的に選択されます。$
gcloud compute addresses create VIP_NAME \ --region CLUSTER_REGION --subnet CLUSTER_SUBNET \ --addresses VIP_ADDRESS静的 IP の予約の詳細については、静的内部 IP アドレスの予約をご覧ください。
IP アドレスの予約を確認します。
$
gcloud compute addresses describe VIP_NAME \ --region CLUSTER_REGION出力は次の例のようになります。
address: 10.0.0.19 addressType: INTERNAL creationTimestamp: '2024-10-23T14:19:03.109-07:00' description: '' id: '8961491304398200872' kind: compute#address name: vip-for-maxdb-ha networkTier: PREMIUM purpose: GCE_ENDPOINT region: https://www.googleapis.com/compute/v1/projects/example-project-123456/regions/us-central1 selfLink: https://www.googleapis.com/compute/v1/projects/example-project-123456/regions/us-central1/addresses/vip-for-maxdb-ha status: RESERVED subnetwork: https://www.googleapis.com/compute/v1/projects/example-project-123456/regions/us-central1/subnetworks/example-subnet-us-central1
ホスト VM のインスタンス グループを作成する
Cloud Shell で 2 つの非マネージド インスタンス グループを作成し、プライマリ ホスト VM を 1 つのグループに、セカンダリ ホスト VM をもう一方のグループに割り当てます。
$
gcloud compute instance-groups unmanaged create PRIMARY_IG_NAME \ --zone=PRIMARY_ZONE$
gcloud compute instance-groups unmanaged add-instances PRIMARY_IG_NAME \ --zone=PRIMARY_ZONE \ --instances=PRIMARY_HOST_NAME$
gcloud compute instance-groups unmanaged create SECONDARY_IG_NAME \ --zone=SECONDARY_ZONE$
gcloud compute instance-groups unmanaged add-instances SECONDARY_IG_NAME \ --zone=SECONDARY_ZONE \ --instances=SECONDARY_HOST_NAMEインスタンス グループが作成されたことを確認します。
$
gcloud compute instance-groups unmanaged list出力は次の例のようになります。
NAME ZONE NETWORK NETWORK_PROJECT MANAGED INSTANCES maxdb-ha-ig-1 us-central1-a example-network example-project-123456 No 1 maxdb-ha-ig-2 us-central1-c example-network example-project-123456 No 1
Compute Engine ヘルスチェックを作成する
Cloud Shell で、ヘルスチェックを作成します。ヘルスチェックで使用するポートには、他のサービスと競合しないようにプライベート範囲の 49152~65535 を選択します。チェック間隔とタイムアウトの値は、Compute Engine のライブ マイグレーション イベント中のフェイルオーバーの許容範囲を広げるために、デフォルトよりも少し長くなっています。必要に応じて値を調整できます。
$
gcloud compute health-checks create tcp HEALTH_CHECK_NAME --port=HEALTHCHECK_PORT_NUM \ --proxy-header=NONE --check-interval=10 --timeout=10 --unhealthy-threshold=2 \ --healthy-threshold=2ヘルスチェックが作成されたことを確認します。
$
gcloud compute health-checks describe HEALTH_CHECK_NAME出力は次の例のようになります。
checkIntervalSec: 10 creationTimestamp: '2023-10-23T21:03:06.924-07:00' healthyThreshold: 2 id: '4963070308818371477' kind: compute#healthCheck name: maxdb-health-check selfLink: https://www.googleapis.com/compute/v1/projects/example-project-123456/global/healthChecks/maxdb-health-check tcpHealthCheck: port: 60000 portSpecification: USE_FIXED_PORT proxyHeader: NONE timeoutSec: 10 type: TCP unhealthyThreshold: 2
ヘルスチェック用のファイアウォール ルールを作成する
プライベート範囲のポートのファイアウォール ルールを定義して、Compute Engine のヘルスチェックで使用される IP 範囲(35.191.0.0/16
と 130.211.0.0/22
)からホスト VM へのアクセスを許可します。詳細については、ヘルスチェック用のファイアウォール ルールの作成をご覧ください。
ホスト VM にネットワーク タグを追加します(まだ設定されていない場合)。このタグは、ファイアウォール ルールのヘルスチェックで使用されます。
$
gcloud compute instances add-tags PRIMARY_HOST_NAME \ --tags NETWORK_TAGS \ --zone PRIMARY_ZONE$
gcloud compute instances add-tags SECONDARY_HOST_NAME \ --tags NETWORK_TAGS \ --zone SECONDARY_ZONEまだ作成していない場合は、ヘルスチェックを許可するファイアウォール ルールを作成します。
$
gcloud compute firewall-rules create RULE_NAME \ --network NETWORK_NAME \ --action ALLOW \ --direction INGRESS \ --source-ranges 35.191.0.0/16,130.211.0.0/22 \ --target-tags NETWORK_TAGS \ --rules tcp:HLTH_CHK_PORT_NUM例:
gcloud compute firewall-rules create fw-allow-health-checks \ --network example-network \ --action ALLOW \ --direction INGRESS \ --source-ranges 35.191.0.0/16,130.211.0.0/22 \ --target-tags cluster-ntwk-tag \ --rules tcp:60000
ロードバランサとフェイルオーバー グループを構成する
ロードバランサのバックエンド サービスを作成します。
$
gcloud compute backend-services create BACKEND_SERVICE_NAME \ --load-balancing-scheme internal \ --health-checks HEALTH_CHECK_NAME \ --no-connection-drain-on-failover \ --drop-traffic-if-unhealthy \ --failover-ratio 1.0 \ --region CLUSTER_REGION \ --global-health-checksプライマリ インスタンス グループをバックエンド サービスに追加します。
$
gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \ --instance-group PRIMARY_IG_NAME \ --instance-group-zone PRIMARY_ZONE \ --region CLUSTER_REGIONセカンダリのフェイルオーバー インスタンス グループをバックエンド サービスに追加します。
$
gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \ --instance-group SECONDARY_IG_NAME \ --instance-group-zone SECONDARY_ZONE \ --failover \ --region CLUSTER_REGION転送ルールを作成します。IP アドレスには、VIP 用に予約した IP アドレスを指定します。以下で指定されているリージョンの外部から SAP MaxDB システムにアクセスする必要がある場合は、定義に
--allow-global-access
フラグを含めます。$
gcloud compute forwarding-rules create RULE_NAME \ --load-balancing-scheme internal \ --address VIP_ADDRESS \ --subnet CLUSTER_SUBNET \ --region CLUSTER_REGION \ --backend-service BACKEND_SERVICE_NAME \ --ports ALLSAP MaxDB 高可用性システムへのリージョン間アクセスの詳細については、内部 TCP/UDP ロード バランシングをご覧ください。
ロードバランサの構成をテストする
バックエンド インスタンス グループはすぐには正常として登録されませんが、ヘルスチェックに応答するようにリスナーを設定することで、ロードバランサの構成をテストできます。リスナーを設定した後、ロードバランサが正しく構成されていれば、バックエンド インスタンス グループのステータスは正常に変わります。
以降のセクションでは、構成のテストに使用できるさまざまな方法について説明します。
socat
ユーティリティでロードバランサをテストする
socat
ユーティリティを使用して、ヘルスチェック ポートを一時的にリッスンできます。
両方のホスト VM に
socat
ユーティリティをインストールします。$
sudo yum install -y socatsocat
プロセスを開始して、ヘルスチェック ポートで 60 秒間リッスンします。$
sudo timeout 60s socat - TCP-LISTEN:HLTH_CHK_PORT_NUM,forkCloud Shell で、ヘルスチェックがリスナーを検出するまで数秒待ってから、バックエンド インスタンス グループのヘルスチェックを行います。
$
gcloud compute backend-services get-health BACKEND_SERVICE_NAME \ --region CLUSTER_REGION出力は次のようになります。
--- backend: https://www.googleapis.com/compute/v1/projects/example-project-123456/zones/us-central1-a/instanceGroups/maxdb-ha-ig-1 status: healthStatus: ‐ healthState: HEALTHY instance: https://www.googleapis.com/compute/v1/projects/example-project-123456/zones/us-central1-a/instances/maxdb-ha-vm-1 ipAddress: 10.0.0.35 port: 80 kind: compute#backendServiceGroupHealth --- backend: https://www.googleapis.com/compute/v1/projects/example-project-123456/zones/us-central1-c/instanceGroups/maxdb-ha-ig-2 status: healthStatus: ‐ healthState: HEALTHY instance: https://www.googleapis.com/compute/v1/projects/example-project-123456/zones/us-central1-c/instances/maxdb-ha-vm-2 ipAddress: 10.0.0.34 port: 80 kind: compute#backendServiceGroupHealth
ポート 22 を使用してロードバランサをテストする
ホスト VM で SSH 接続用にポート 22 が開いている場合、ヘルス チェッカーに応答できるリスナーを備えたポート 22 を使用するように、ヘルス チェッカーを一時的に編集できます。
ポート 22 を一時的に使用するには、次の手順に従います。
コンソールでヘルスチェックをクリックします。
[編集] をクリックします。
[ポート] 項目で、ポート番号を 22 に変更します。
[保存] をクリックし、1~2 分待ちます。
Cloud Shell で、バックエンド インスタンス グループのヘルスチェックを行います。
$
gcloud compute backend-services get-health BACKEND_SERVICE_NAME \ --region CLUSTER_REGION出力は次のようになります。
--- backend: https://www.googleapis.com/compute/v1/projects/example-project-123456/zones/us-central1-a/instanceGroups/maxdb-ha-ig-1 status: healthStatus: ‐ healthState: HEALTHY instance: https://www.googleapis.com/compute/v1/projects/example-project-123456/zones/us-central1-a/instances/maxdb-ha-vm-1 ipAddress: 10.0.0.35 port: 80 kind: compute#backendServiceGroupHealth --- backend: https://www.googleapis.com/compute/v1/projects/example-project-123456/zones/us-central1-c/instanceGroups/maxdb-ha-ig-2 status: healthStatus: ‐ healthState: HEALTHY instance: https://www.googleapis.com/compute/v1/projects/example-project-123456/zones/us-central1-c/instances/maxdb-ha-vm-2 ipAddress: 10.0.0.34 port: 80 kind: compute#backendServiceGroupHealth
完了したら、ヘルスチェックのポート番号を元のポート番号に戻します。
Pacemaker を設定する
次の手順では、SAP MaxDB 用の Compute Engine VM に Pacemaker クラスタの Red Hat 実装を構成します。
この手順は、以下を含む高可用性クラスタを構成するための Red Hat のドキュメントに基づいています。
両方のノードにクラスタ エージェントをインストールする
両方のノードで次の手順を行います。
root として、Pacemaker コンポーネントをインストールします。
#
yum -y install pcs pacemaker fence-agents-gce resource-agents-gcp resource-agents-sap-hana#
yum update -yGoogle 提供の RHEL-for-SAP イメージを使用している場合、これらのパッケージはすでにインストールされていますが、一部更新が必要な場合があります。
パッケージの一部としてインストールされる
hacluster
ユーザーのパスワードを設定します。#
passwd haclusterプロンプトで、
hacluster
のパスワードを指定します。Google Cloudが提供する RHEL イメージでは、OS ファイアウォール サービスがデフォルトで有効になっています。高可用性トラフィックを許可するようにファイアウォール サービスを構成します。
#
firewall-cmd --permanent --add-service=high-availability#
firewall-cmd --reloadpcs サービスを起動し、起動時に有効化するように構成します。
#
systemctl start pcsd.service#
systemctl enable pcsd.servicepcs サービスのステータスを確認します。
#
systemctl status pcsd.service出力は次のようになります。
● pcsd.service - PCS GUI and remote configuration interface Loaded: loaded (/usr/lib/systemd/system/pcsd.service; enabled; vendor preset: disabled) Active: active (running) since Sat 2023-10-23 21:17:05 UTC; 25s ago Docs: man:pcsd(8) man:pcs(8) Main PID: 31627 (pcsd) CGroup: /system.slice/pcsd.service └─31627 /usr/bin/ruby /usr/lib/pcsd/pcsd Oct 23 21:17:03 maxdb-ha-vm-1 systemd[1]: Starting PCS GUI and remote configuration interface... Oct 23 21:17:05 maxdb-ha-vm-1 systemd[1]: Started PCS GUI and remote configuration interface.
両方のノードで必要なすべての HA サービスが有効化されており、起動していることを確認します。
#
systemctl enable pcsd.service pacemaker.service corosync.service/etc/hosts
ファイルに、クラスタ内の両方のホストの完全なホスト名と内部 IP アドレスを追加します。次に例を示します。127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 10.0.0.40 maxdb-ha-vm-1.us-central1-a.c.example-project-123456.internal maxdb-ha-vm-1 # Added by Google 10.0.0.41 maxdb-ha-vm-2.us-central1-c.c.example-project-123456.internal maxdb-ha-vm-2 169.254.169.254 metadata.google.internal # Added by Google
RHEL クラスタノードでの
/etc/hosts
ファイルの設定に関する Red Hat からの詳細情報については、https://access.redhat.com/solutions/81123 をご覧ください。
クラスタを作成する
いずれかのノードの root として、
hacluster
ユーザーを承認します。RHEL バージョンのタブをクリックすると、コマンドが表示されます。RHEL 8 以降
#
pcs host auth primary-host-name secondary-host-nameRHEL 7
#
pcs cluster auth primary-host-name secondary-host-nameプロンプトが表示されたら、
hacluster
ユーザーに設定したhacluster
ユーザー名とパスワードを入力します。クラスタを作成します。
RHEL 8 以降
#
pcs cluster setup cluster-name primary-host-name secondary-host-nameRHEL 7
#
pcs cluster setup --name cluster-name primary-host-name secondary-host-name
corosync.conf のデフォルト設定を編集する
プライマリ ホストの /etc/corosync/corosync.conf
ファイルを編集して、 Google Cloud上の HA クラスタのフォールト トレラントをテストするためのより適切な開始ポイントを設定します。
どちらのホストでも、任意のテキスト エディタを使用して
/etc/corosync/corosync.conf
ファイルを編集用に開きます。#
/etc/corosync/corosync.conf/etc/corosync/corosync.conf
が新しいファイルまたは空の場合は、/etc/corosync/
ディレクトリでサンプル ファイルを確認し、corosync ファイルの基礎として使用できます。corosync.conf ファイルの
totem
セクションに、次のプロパティと RHEL のバージョンごとの推奨値を追加します。RHEL 8 以降
transport: knet
token: 20000
token_retransmits_before_loss_const: 10
join: 60
max_messages: 20
例:
totem { version: 2 cluster_name: hacluster secauth: off transport: knet token: 20000 token_retransmits_before_loss_const: 10 join: 60 max_messages: 20 } ...
RHEL 7
transport: udpu
token: 20000
token_retransmits_before_loss_const: 10
join: 60
max_messages: 20
例:
totem { version: 2 cluster_name: hacluster secauth: off transport: udpu token: 20000 token_retransmits_before_loss_const: 10 join: 60 max_messages: 20 } ...
編集した
corosync.conf
ファイルを含むホストから、クラスタ全体に corosync 構成を同期します。RHEL 8 以降
#
pcs cluster sync corosyncRHEL 7
#
pcs cluster sync自動的に起動するようにクラスタを設定します。
#
pcs cluster enable --all#
pcs cluster start --allcorosync-cmapctl ユーティリティを使用して、クラスタで新しい corosync 設定が有効なことを確認します。
#
corosync-cmapctl
フェンスを設定する
Google Cloud が提供する RHEL イメージには、 Google Cloudに固有の fence_gce
フェンス エージェントが含まれています。fence_gce
を使用して、各ホスト VM のフェンス デバイスを作成します。
フェンシング アクションの後に適切なイベントのシーケンスを保証するには、VM のフェンス後に Corosync が再起動するようにオペレーティング システムを構成します。また、遅延を考慮して、再起動の Pacemaker タイムアウトも調整します。
fence_gce
フェンス エージェントで利用可能なすべてのオプションを確認するには、fence_gce -h
を発行します。
フェンシング デバイス リソースを作成する
プライマリ ホストで root として以下を行います。
各ホスト VM にフェンス デバイスを作成します。
#
pcs stonith create primary-fence-name fence_gce \ port=primary-host-name \ zone=primary-host-zone \ project=project-id \ pcmk_reboot_timeout=300 pcmk_monitor_retries=4 pcmk_delay_max=30 \ op monitor interval="300s" timeout="120s" \ op start interval="0" timeout="60s"#
pcs stonith create secondary-fence-name fence_gce \ port=secondary-host-name \ zone=secondary-host-zone \ project=project-id \ pcmk_reboot_timeout=300 pcmk_monitor_retries=4 \ op monitor interval="300s" timeout="120s" \ op start interval="0" timeout="60s"各フェンス デバイスを他のホスト VM に対して制限します。
#
pcs constraint location primary-fence-name avoids primary-host-name#
pcs constraint location secondary-fence-name avoids secondary-host-name
プライマリ ホストで root として、セカンダリ フェンス デバイスをテストします。
セカンダリ ホスト VM をシャットダウンします。
#
fence_gce -o off -n secondary-host-name --zone=secondary-host-zoneコマンドが成功すると、セカンダリ ホスト VM への接続が失われ、その VM は Google Cloud コンソールの [VM インスタンス] ページで停止したものとして表示されます。ページの更新が必要になる場合があります。
セカンダリ ホスト VM を再起動します。
#
fence_gce -o on -n secondary-host-name --zone=secondary-host-zone
セカンダリ ホストで root として、コマンド内のプライマリ ホストの値を使用し、前述の手順を繰り返してプライマリ フェンス デバイスをテストします。
いずれかのホストで root として、クラスタのステータスを確認します。
#
pcs statusクラスタ ステータスのリソース セクションに、次の例のようにフェンス リソースが表示されます。
[root@maxdb-ha-vm-2 ~]# pcs status Cluster name: maxdb-ha-cluster Stack: corosync Current DC: maxdb-ha-vm-1 (version 1.1.19-8.el7_6.5-c3c624ea3d) - partition with quorum Last updated: Mon Jun 15 17:19:07 2020 Last change: Mon Jun 15 17:18:33 2020 by root via cibadmin on maxdb-ha-vm-1 2 nodes configured 2 resources configured Online: [ maxdb-ha-vm-1 maxdb-ha-vm-2 ] Full list of resources: STONITH-maxdb-ha-vm-1 (stonith:fence_gce): Started maxdb-ha-vm-2 STONITH-maxdb-ha-vm-2 (stonith:fence_gce): Started maxdb-ha-vm-1 Daemon Status: corosync: active/enabled pacemaker: active/enabled pcsd: active/enabled
Corosync の再起動の遅延を設定する
両方のホストで、root として Corosync の起動を遅延させる
systemd
ドロップイン ファイルを作成し、フェンス付き VM の再起動後に適切な一連のイベントが行われるようにします。systemctl edit corosync.service
このファイルに次の行を追加します。
[Service] ExecStartPre=/bin/sleep 60
ファイルを保存し、エディタを終了します。
systemd マネージャー構成を再読み込みします。
systemctl daemon-reload
ドロップイン ファイルが作成されていることを確認します。
service corosync status
次の例に示すように、ドロップイン ファイルの行が表示されます。
● corosync.service - Corosync Cluster Engine Loaded: loaded (/usr/lib/systemd/system/corosync.service; disabled; vendor preset: disabled) Drop-In: /etc/systemd/system/corosync.service.d └─override.conf Active: active (running) since Tue 2021-07-20 23:45:52 UTC; 2 days ago
リスナーをインストールし、ヘルスチェック リソースを作成する
ヘルスチェック リソースを構成するには、まずリスナーをインストールする必要があります。
リスナーをインストールする
ロードバランサは、各ホストのヘルスチェック ポートでリスナーを使用して、MaxDB インスタンスが実行されている場所を判断します。
両方のホストの root として、TCP リスナーをインストールします。以下の手順では、HAProxy をインストールしてリスナーとして使用します。
#
yum install haproxy構成ファイル
haproxy.cfg
を編集用に開きます。#
vi /etc/haproxy/haproxy.cfghaproxy.cfg
のデフォルト セクションで、mode
をtcplog
に変更します。デフォルト セクションの後に、以下を追加して新しいセクションを作成します。
#--------------------------------------------------------------------- # Health check listener port for SAP MaxDB HA cluster #--------------------------------------------------------------------- listen healthcheck bind *:healthcheck-port-num
バインドポートは、ヘルスチェックの作成時に使用したポートと同じです。
完了したら、次の例のように更新されます。
#--------------------------------------------------------------------- # common defaults that all the 'listen' and 'backend' sections will # use if not designated in their block #--------------------------------------------------------------------- defaults mode tcp log global option tcplog option dontlognull option http-server-close # option forwardfor except 127.0.0.0/8 option redispatch retries 3 timeout http-request 10s timeout queue 1m timeout connect 10s timeout client 1m timeout server 1m timeout http-keep-alive 10s timeout check 10s maxconn 3000 #--------------------------------------------------------------------- # Set up health check listener for SAP MaxDB HA cluster #--------------------------------------------------------------------- listen healthcheck bind *:60000
各ホストで root として、サービスを開始し、正しく構成されていることを確認します。
#
systemctl start haproxy.serviceGoogle Cloud コンソールの [ロードバランサ] ページで、ロードバランサのエントリをクリックします。
[ロードバランサの詳細] ページの [バックエンド] セクションで、両方のホストで HAProxy サービスがアクティブな場合、各インスタンス グループ エントリの [正常] の列に
1/1
が表示されます。各ホストで、HAProxy サービスを停止します。
#
systemctl stop haproxy.service各ホストで HAProxy サービスを停止すると、各インスタンス グループの [正常] の列に
0/1
が表示されます。後でヘルスチェックが構成されると、クラスタはアクティブ ノードのリスナーを再起動します。
ヘルスチェック リソースを作成する
HAProxy サービスのヘルスチェック リソースを、いずれかのホスト上で root として作成します。
#
pcs resource create healthcheck_resource_name service:haproxy op monitor interval=10s timeout=20s —-group SAPMaxDB_Groupヘルスチェック サービスが SAP MaxDB インスタンスと同じホスト上でアクティブであることを確認します。
#
pcs statusヘルスチェック リソースが MaxDB と同じホスト上にない場合は、次のコマンドを使用して移動します。
#
pcs resource move healthcheck_resource_name target_host_name#
pcs resource clear healthcheck_resource_nameコマンド
pcs resource clear
は、リソースを新しいロケーションに残し、pcs resource move
コマンドによって作成された不要なロケーション制約を削除します。ステータスのリソース セクションは次の例のようになります。
Full list of resources: STONITH-maxdb-ha-vm-1 (stonith:fence_gce): Started maxdb-ha-vm-2 STONITH-maxdb-ha-vm-2 (stonith:fence_gce): Started maxdb-ha-vm-1 Resource Group: SAPMaxDB_Group rsc_healthcheck_MDB (service:haproxy): Started maxdb-ha-vm-1
クラスタのデフォルトを設定する
移行のしきい値と継続性を設定して、障害が発生する前に試行するフェイルオーバーの回数を決定し、最初に現在のホストで再起動を試みるようにシステムを設定します。この処理は、1 つのノードに設定するだけで、クラスタに適用されます。
いずれかのホストの root として、リソースのデフォルトを設定します。
#
pcs resource defaults resource-stickiness=1000#
pcs resource defaults migration-threshold=5000プロパティ
resource-stickiness
は、サービスの運用が継続される可能性を制御します。値が大きいほど、サービスの継続性が高まります。1000
の値はサービスの継続性が高いことを意味します。プロパティ
migration-threshold
は、サービスが別のホストにフェイルオーバーするまでに発生する必要がある障害の数を指定します。5,000 という値は、存続期間が短いエラー状況でのフェイルオーバーを回避するのに十分に高い値です。リソースのデフォルトを確認するには、
pcs resource defaults
を入力します。リソースのオペレーション タイムアウトのデフォルトを設定します。
#
pcs resource op defaults timeout=600sリソースのオペレーションのデフォルトを確認するには、
pcs resource op defaults
を入力します。次のクラスタ プロパティを設定します。
#
pcs property set stonith-enabled="true"#
pcs property set stonith-timeout="300s"プロパティの設定は、
pcs property list
で確認できます。
クラスタに MaxDB リソースを作成する
これらの手順を実行する前に、MaxDB と x_server
が停止しており、/sapdb
ファイルシステムがマウント解除されていることを確認します。
gcp-pd-move リソースを作成する
gcp-pd-move
リソースは、クラスタ フェイルオーバー時にノード間で永続ディスクを移動するためのリソース エージェントです。
いずれかのノードで root として次のコマンドを使用してリソースを作成します。
#
pcs resource create pd_move_resource_name gcp-pd-move \ disk_name=regional_pd_name mode="READ_WRITE" disk_scope=regional \ op monitor interval=10s timeout=15s \ op start interval=0s timeout=300s \ op stop interval=0s timeout=15s \ --group SAPMaxDB_Group
LVM リソースを作成する
LVM が有効なリソース エージェントは、ディスクを他のノードに移動した後に LVM を有効にするために使用されます。
いずれかのノードで root として次のコマンドを使用して、LVM リソースを作成します。
#
pcs resource create lvm_resource_name LVM-activate \ vgname=vgname_for_maxdb \ vg_access_mode=system_id activation_mode=exclusive \ --group SAPMaxDB_Group次に例を示します。
# pcs resource create sapdb_lvm LVM-activate \ vgname=sapdb vg_access_mode=system_id \ activation_mode=exclusive \ --group SAPMaxDB_Group
ファイル システム リソースを作成する
ファイル システム リソースは、フェイルオーバー操作中に /sapdb
のマウントを解除し、別のノードにマウントするためにクラスタ内で使用されます。
いずれかのノードで root として次のコマンドを実行して、ファイル システム リソースを作成します。
#
pcs resource create fs_resource_name Filesystem \ device=filesystem directory=/sapdb fstype=fs_type \ --group SAPMaxDB_Group次に例を示します。
# pcs resource create sapdb_FS Filesystem \ device=/dev/mapper/sapdb-sapdblv directory=/sapdb fstype=ext4 \ --group SAPMaxDB_Group
MaxDB リソース グループの準備
MaxDB リソース グループを有効にするには、次の手順を実施する必要があります。
MaxDB のインストールを行ったノードから他のノードにユーザーとグループを同期します。
SAP MaxDB ユーザーは、
/etc/passwd
のエントリをコピーしてノード間で同期する必要があります。次に例を示します。sdb:x:1002:1003:MaxDB User:/home/sdb:/bin/false madbadm:x:1003:1005:SAP System Administrator:/home/mdbadm:/bin/csh
同様に、
/etc/group
のエントリをノード間でコピーして、SAP グループも同期する必要があります。次に例を示します。dba:x:1003:mdbadm sapsys:x:1005:
オペレーティング システムのディレクトリに格納される MaxDB 固有のファイルを同期します。root ユーザーとして、次のコマンドを実行します。
#
rsync -av /etc/services target_host:/etc/services#
rsync -av /home/* target_host:/home#
rsync -av --exclude=sapservices /usr/sap/* target_host:/usr/sap#
rsync -av --ignore-existing /usr/sap/sapservicestarget_host:/usr/sap/sapservices#
rsync -av /etc/init.d/sapinittarget_host:/etc/init.d/# MaxDB specific files
#
rsync -av /etc/opttarget_host:/etc#
rsync -av /var/lib/sdbtarget_host:/var/lib2 番目のノードの SAP OS ユーザーの場合は、ホーム ディレクトリでそれぞれのホスト名を使用するように次の環境ファイルの名前を変更します。
mv .sapenv_maxdb-ha-vm-1.sh .sapenv_maxdb-ha-vm-2.sh mv .sapenv_maxdb-ha-vm-1.csh .sapenv_maxdb-ha-vm-2.csh mv .sapsrc_maxdb-ha-vm-1.sh .sapsrc_maxdb-ha-vm-2.sh mv .sapsrc_maxdb-ha-vm-1.csh .sapsrc_maxdb-ha-vm-2.csh mv .dbenv_maxdb-ha-vm-1.sh .sapenv_maxdb-ha-vm-2.sh mv .dbenv_maxdb-ha-vm-1.csh .dbenv_maxdb-ha-vm-2.csh
SAPDatabase
リソース エージェントは、データベースの停止または起動のために DB 固有のコマンドを使用せず、saphostctrl
コマンドに依存しています。SAP Host Agent は、saphostctrl を使用して MAXDB を正常にモニタリングおよび制御するために、xuser
エントリを作成する必要があります。詳細については、SAP Note 2435938 - SAP Host Agent SAP MaxDB: DBCredentials for DB connect をご覧ください。
root として次のコマンドを実行して、アクティブ ノードで
SetDatabaseProperty
を実行します。/usr/sap/hostctrl/exe/saphostctrl -host primary-host-name -user sapadm password \ -dbname SID -dbtype ada -function SetDatabaseProperty DBCredentials=SET \ -dboption User=SUPERDBA -dboption Password=password
次のコマンドを使用してエントリをテストします。データベースが停止している場合でも、このコマンドでステータスを戻すことができるはずです。
/usr/sap/hostctrl/exe/saphostctrl -host secondary-host-name -dbname SID \ -dbtype ada -function GetDatabaseStatus
saphostctrl エージェント コマンドは、MaxDB インストール時の xuser
プログラムを使用します。2 番目のノードを準備するために、SAPMaxDB_group
を maxdb-node-b に移動します。
任意のノードで、root として次のコマンドを実行します。
pcs resource move SAPMaxDB_group
作成した 4 つのリソース(ヘルスチェック、gcp-pd-move
、LVM、ファイル システム)が移行され、2 番目のノードで正常に起動したことを確認します。
いずれのノードでも、次のコマンドを使用して、実行されているアクションを確認できます。
watch pcs status
4 つのリソースすべてが 2 番目のノードで正常に起動したら、saphostctrl
コマンドを実行します。
root として、次のコマンドを実行して、現在アクティブなノードで SetDatabaseProperty を実行します。
/usr/sap/hostctrl/exe/saphostctrl -host secondary-host-name -user sapadm password \ -dbname SID -dbtype ada -function SetDatabaseProperty DBCredentials=SET \ -dboption User=SUPERDBA -dboption Password=password
ノード b で、MaxDB と
x_server
を手動で起動し、それらが適切に起動できるかどうかを確認します。#
dbmcli -d SID -u control, and password db_online # x_server start
SAP データベースのリソースを作成する次の手順に進みます。この時点でエラーが発生した場合は、データベース リソースを作成しないでください。
SAP MaxDB のリソースを作成する
RHEL Pacemaker は、SAP データベース リソース エージェントを使用して SAP データベースをモニタリングおよび制御します。
次のコマンドを使用して、SAPMaxDB_group が有効になっているノードにデータベース リソースを作成します。
#
pcs resource create SAPDatabase_resource_name SAPDatabase \ DBTYPE="ADA" SID="SID" STRICT_MONITORING="TRUE" \ MONITOR_SERVICES="Database|x_server" AUTOMATIC_RECOVER="TRUE" --group SAPMaxDB_Group最終的なクラスタ リソースは
pcs status
を使用して確認できます。期待される結果は次のとおりです。# pcs status Cluster name: maxdb-cluster Stack: corosync Current DC: maxdb-ha-vm-1 (version 1.1.23-1.el7_9.1-9acf116022) - partition with quorum Last updated: Wed Oct 23 02:04:32 2024 Last change: Wed Oct 23 02:01:41 2024 by hacluster via crmd on maxdb-ha-vm-1 2 nodes configured 7 resource instances configured Online: [ maxdb-ha-vm-1 maxdb-ha-vm-2 ] Full list of resources: STONITH-maxdb-ha-vm-1 (stonith:fence_gce): Started maxdb-ha-vm-2 STONITH-maxdb-ha-vm-2 (stonith:fence_gce): Started maxdb-ha-vm-1 Resource Group: SAPMaxDB_Group healthcheck_maxdb (service:haproxy): Started maxdb-ha-vm-1 sapdb_regpd (ocf::heartbeat:gcp-pd-move): Started maxdb-ha-vm-1 lvm_sapdb (ocf::heartbeat:LVM-activate): Started maxdb-ha-vm-1 sapdb_fs (ocf::heartbeat:Filesystem): Started maxdb-ha-vm-1 MDB_SAPMaxDB (ocf::heartbeat:SAPDatabase): Started maxdb-ha-vm-1 Daemon Status: corosync: active/enabled pacemaker: active/enabled pcsd: active/enabled
フェイルオーバーをテストする
アクティブ ホストで障害をシミュレートして、クラスタをテストします。テストシステムを使用するか、システムをリリースする前に本番環境システムでテストを実施します。
テストの前にシステムをバックアップします。
次のようなさまざまな方法で障害をシミュレートできます。
- MaxDB または
x_server
を手動で停止する - MaxDB または
x_server
プロセスを強制終了する reboot
(アクティブ ノード)- 単一のネットワーク インターフェースを持つインスタンスの場合は
ip link set eth0 down
- 複数のネットワーク インターフェースを持つインスタンスの場合は
iptables ... DROP
echo c > /proc/sysrq-trigger
次の手順では、ip link set eth0 down
または iptables
を使用して、クラスタ内の 2 つのホスト間のネットワークの中断をシミュレートします。単一のネットワーク インターフェースを持つインスタンスの場合は ip link
コマンドを使用し、複数のネットワーク インターフェースを持つインスタンスの場合は iptables
コマンドを使用します。このテストでは、フェイルオーバーとフェンシングの両方を検証します。インスタンスに複数のネットワーク インターフェースが定義されている場合は、セカンダリ ホストで iptables
コマンドを使用します。プライマリ ホストがクラスタ通信に使用している IP に基づいて受信トラフィックと送信トラフィックをドロップし、プライマリへのネットワーク接続の損失をシミュレートします。
アクティブ ホストで、root としてネットワーク インターフェースをオフラインにします。
#
ip link set eth0 downSSH を使用していずれかのホストに再接続し、root ユーザーに変更します。
pcs status
と入力して、以前はパッシブだったホストにリージョン Persistent Disk がアタッチされ、MaxDB サービスが実行されていることを確認します。次の例に示すように、クラスタで自動再起動が有効になっているため、停止したホストが再起動し、パッシブ ホストの役割を引き継ぎます。Cluster name: maxdb-ha-cluster Stack: corosync Current DC: maxdb-ha-vm-2 (version 1.1.23-1.el7_9.1-9acf116022) - partition with quorum Last updated: Wed Oct 23 02:01:45 2024 Last change: Wed Oct 23 02:01:41 2024 by hacluster via crmdon maxdb-ha-vm-2 2 nodes configured 7 resources configured Online: [ maxdb-ha-vm-1 maxdb-ha-vm-2 ] Full list of resources: STONITH-maxdb-ha-vm-1 (stonith:fence_gce): Started maxdb-ha-vm-2 STONITH-maxdb-ha-vm-2 (stonith:fence_gce): Started maxdb-ha-vm-1 Resource Group: SAPMaxDB_Group healthcheck_maxdb (service:haproxy): Started maxdb-ha-vm-2 sapdb_regpd (ocf::heartbeat:gcp-pd-move): Started maxdb-ha-vm-2 lvm_sapdb (ocf::heartbeat:LVM-activate): Started maxdb-ha-vm-2 sapdb_fs (ocf::heartbeat:Filesystem): Started maxdb-ha-vm-2 MDB_SAPMaxDB (ocf::heartbeat:SAPDatabase): Started maxdb-ha-vm-2 Daemon Status: corosync: active/enabled pacemaker: active/enabled pcsd: active/enabled
トラブルシューティング
RHEL 上の SAP システムの高可用性構成に関する問題のトラブルシューティングについては、SAP 高可用性構成のトラブルシューティングをご覧ください。
RHEL 上の SAP HANA のサポートを受ける
RHEL 上での SAP HANA 用の高可用性クラスタの問題を解決するには、必要な診断情報を収集し、Cloud カスタマーケアまでお問い合わせください。詳細については、RHEL の診断情報での高可用性クラスタをご覧ください。