システム管理者として、システムのアーキテクチャと設計のすべての可能なレベルで高可用性を促進することが不可欠であり、SAP環境も例外ではありません。この記事では、Red Hat Enterprise Linux(RHEL)Pacemakerを活用してSAP NetWeaver Advanced Business Application Programming(ABAP)SAP Central Service(ASCS)/ Enqueue Replication Server(ERS)の高可用性(HA)を実現する方法について説明します。
>[次のこともお勧めします:AnsibleforLinuxシステム管理者向けクイックスタートガイド]
SAPには3層アーキテクチャがあります:
- プレゼンテーション層 -SAPアプリケーションと対話するためのGUIを提示します
- アプリケーション層 -1つ以上のアプリケーションサーバーとメッセージサーバーが含まれています
- データベースレイヤー -すべてのSAP関連データ(Oracleなど)を含むデータベースが含まれています
この記事では、主にアプリケーション層に焦点を当てています。アプリケーションサーバーインスタンスは、SAPシステムの実際のデータ処理機能を提供します。システム要件に基づいて、SAPシステムの負荷を処理するために複数のアプリケーションサーバーが作成されます。アプリケーション層のもう1つの主要コンポーネントは、ABAP SAPセントラルサービス(ASCS)です。中央サービスは、メッセージサーバー(MS)とエンキューサーバー(ES)の2つの主要コンポーネントで構成されています。メッセージサーバーは、すべてのアプリケーションサーバー間の通信チャネルとして機能し、負荷の分散を処理します。エンキューサーバーはロックメカニズムを制御します。

アプリケーション層とデータベース層の高可用性
ロードバランサーを使用し、複数のアプリケーションサーバーにユーザーからの要求を処理させることで、アプリケーションサーバーの高可用性を実装できます。アプリケーションサーバーがクラッシュした場合、そのサーバーに接続しているユーザーのみが影響を受けます。ロードバランサーからアプリケーションサーバーを削除して、クラッシュを特定します。 ASCSの高可用性を実現するには、エンキューレプリケーションサーバー(ERS)を使用してロックテーブルエントリをレプリケートします。データベースレイヤーでは、プライマリデータベースとセカンダリデータベースの間にネイティブデータベースレプリケーションを設定して、高可用性を確保できます。
PacemakerによるRHEL高可用性の概要
RHEL High Availabilityを使用すると、サービスを中断することなく、クラスター内でサービスを1つのノードから別のノードにシームレスにフェイルオーバーできます。 ASCSとERSは、RHELペースメーカークラスターに統合できます。 ASCSノードに障害が発生した場合、クラスターパッケージはERSノードに移行し、システムを停止せずにMSインスタンスとESインスタンスが実行を継続します。 ERSノードに障害が発生した場合でも、MSとESはASCSノードで引き続き実行されるため、システムは影響を受けません。この場合、ESインスタンスとERSインスタンスは同じノードで実行する必要がないため、ERSインスタンスはASCSノードで実行されません。

RHELペースメーカーの構成
RHELPacemakerクラスターでASCSノードとERSノードを構成する方法は2つあります。プライマリ/セカンダリ およびスタンドアロン 。 プライマリ/セカンダリ このアプローチは、すべてのRHEL7マイナーリリースでサポートされています。スタンドアロンアプローチは、RHEL7.5以降でサポートされています。 RHELは、すべての新規デプロイメントにスタンドアロンアプローチを使用することを推奨しています。
クラスター構成
クラスタ構成の大まかな手順は次のとおりです。
- クラスターの両方のノードにPacemakerパッケージをインストールします。
# yum -y install pcs pacemaker
- HACLUSTERを作成します のユーザーID。
# passwd hacluster
pcs
を使用するには クラスタを構成してノード間で通信するには、各ノードでユーザーID haclusterのパスワードを設定する必要があります。 、これはpcs
です 管理アカウント。ユーザーhaclusterのパスワードをお勧めします 各ノードで同じである。 -
pcs
を有効にして開始します サービス。# systemctl enable pcsd.service; systemctl start pcsd.service
-
pcs
を認証します hacluster ユーザーpcs
を認証します ユーザーhacluster クラスタ内のノードごとに。次のコマンドは、ユーザー haclusterを認証します node1 2ノードクラスター(node1.example.comおよびnode2.example.com)の両方のノード。# pcs cluster auth node1.example.com node2.example.com Username: hacluster Password: node1.example.com: Authorized node2.example.com: Authorized
- クラスターを作成します。
クラスターnwha node1とnode2を使用して作成されます:# pcs cluster setup --name nwha node1 node2
- クラスターを開始します。
# pcs cluster start --all
- 再起動後にクラスターが自動起動できるようにします。
# pcs cluster enable --all
ASCSおよびERSインスタンスのリソースの作成
クラスタが設定されたので、ASCSノードとERSノードのリソースを追加する必要があります。大まかな手順は次のとおりです。
-
resource-agents-sap
をインストールします すべてのクラスターノードで。# yum install resource-agents-sap
- クラスターによって管理されるリソースとして共有ファイルシステムを構成します。
/sapmnt
などの共有ファイルシステム 、/usr/sap/trans
、/usr/sap/
次のコマンドを使用して、クラスターに自動マウントされたリソースとして追加されます。SYS # pcs resource create <resource-name> Filesystem device=’<path-of-filesystem>’ directory=’<directory-name>’ fstype=’<type-of-fs>’
例:# pcs resource create sid_fs_sapmnt Filesystem device='nfs_server:/export/sapmnt' directory='/sapmnt' fstype='nfs'
- ASCSのリソースグループを構成します。
ASCSノードの場合、必要な3つのリソースグループは次のとおりです(ASCSのインスタンスIDが00であると想定)。- ASCSの仮想IPアドレス
- ASCSファイルシステム(たとえば、
/usr/sap/<SID>/ASCS00
) - ASCSプロファイルインスタンス(たとえば、
/sapmnt/<SID>/profile/<SID>_ASCS00_<hostname>
)
- ERSのリソースグループを構成します。
ERSノードの場合、必要な3つのリソースグループは次のとおりです(30のERSのインスタンスIDを想定)。- ERSの仮想IPアドレス
- ERSファイルシステム(たとえば、
/usr/sap/<SID>/ERS30
) - ERSプロファイルインスタンス(たとえば、
/sapmnt/<SID>/profile/<SID>_ERS30_<hostname>
)
- 制約を作成します。
ASCSおよびERSリソースグループの制約を次のように設定します。- 両方のリソースグループが同じノードで実行されないように制限します
- フェイルオーバーの際にERSが実行されていたノードでASCSを実行します
- 開始/停止順序シーケンスを維持する
- 必要なファイルシステムがマウントされた後にのみクラスターが開始されるようにします
クラスターフェイルオーバーテスト
ASCSがnode1で実行されていると仮定します ERSはnode2で実行されます 最初は。 node1 の場合 ダウンすると、ASCSとERSの両方が node2に移行します 。定義された制約により、ERSは node2では実行されません 。

node1 戻ってくると、ERSは node1に移行します ASCSがnode2に残っている間 。コマンド#pcs status
を使用します クラスタのステータスを確認します。

[無料コース:仮想化とインフラストラクチャの移行の技術概要。 ]
まとめ
RHEL Pacemakerは、SAPの高可用性クラスターを実現するための優れたユーティリティです。 STONITHを構成してフェンシングを実行し、データの整合性を確保し、クラスター内の障害のあるノードによるリソースの使用を回避することもできます。
すべての自動化愛好家は、Ansibleモジュールpacemaker_clusterを使用して、Ansibleを使用してPacemakerクラスターを制御できます。システムを保護するのと同じくらい、自分の面倒を見て安全を確保してください。