※この記事は翻訳されたものです。本記事の原文はこちら
はじめに:データベースでHAとDRを確保する方法
AWSで可用性の高いSAP HANA環境を構築することは、多くの企業にとって重要です。この記事では、AWSでSIOS LifeKeeperを使用して3ノードのHANAシステムレプリケーション(HSR)クラスターをセットアップし、データベースの回復性と高可用性を確保するための詳細な手順について説明します。
前提条件
- EC2インスタンスをデプロイできるAWSアカウント
- SIOS LifeKeeperソフトウェア
- SIOS LifeKeeper評価版または永久ライセンス
- SAP HANAソフトウェア
- AWSサービスおよびSAP HANAに精通していること
ステップ1:AWS環境の準備
EC2インスタンスのデプロイ
AWSに3つのEC2インスタンスをデプロイします。これらのインスタンスは、HANAクラスターのプライマリー、セカンダリー、ターシャリ(3番目の)ノードとして機能します。これらのインスタンスが、SAP HANAとSIOS LifeKeeperのハードウェア要件とソフトウェア要件を満たしていることを確認してください。インスタンスを構成する際は、SAP HANAのサイジングガイドラインに従ってください。
ネットワーク設定
ノード間の通信を許可し、必要なサービスにアクセスできるように、VPC、サブネット、およびセキュリティグループを設定します。
異なるリージョンでHANAノードを構成する場合、SIOS LifeKeeper for Linux Route53 Application Recovery KitまたはARKを使用してDNS名を保護することができます。以下は、AWSの3ノードHANAデータベースのアーキテクチャです。
ストレージをセットアップする際は、/usr/sap、/hana/data、/hana/log、/hana/sharedに別々のEBSボリュームを使用します。
この例では、各リージョンに1つずつ、2つのVPCがあります。VPC間のピアリングをセットアップし、ルーティングテーブルにルートを追加して、サーバーが互いに通信できるようにする必要があります。また、サーバー間のトラフィックを許可するためにセキュリティグループを変更する必要があります。
最後に、両方のVPCを含むホストされたゾーンを作成し、アクティブなHANAノードとの通信に使用するドメインとホスト名のレコードを追加する必要があります。
ステップ2:SAP HANAのインストールと設定
各ノードへのインストール
各EC2インスタンスにSAP HANAをインストールします。互換性の問題を避けるため、すべてのノードでバージョンが一貫するようにしてください。これは現時点で最も大変なプロセスです。
まず、インストール設定を決定します。この例では、以下を使用しています。
SID: D11
- HANAインスタンス番号:11
- Route53のHANA db fqdn:saphana.sapdemo
- ノード1ホスト名:sapdemohana1
- ノード2ホスト名:sapdemohana2
- ノード3ホスト名:apdemohana3
- インスタンスタイプ:r5.4xlarge
ローカルインスタンスストレージ:
- 30GB /(rootボリューム)
- 15GB /usr/sap
- 60GB /hana/shared*
- 200GB /hana/data
- 200GB /hana/log
*このインストールでは、これはHANAデータベースサーバー間で共有されないストレージです。共有ストレージを使用しようとすると、hdblcmがSIDとインスタンスが既に存在するというエラーでインストールを阻止するため、同一のサーバーを作成することはできません。
スタンドアロンシステムのように、各ノードにHANAサーバーソフトウェアを個別にインストールします。必要なライブラリがすべてインストールされていることを確認します。RHEL 8の場合は、SAP note 2772999にあります。
ln -s /opt/rh/SAP/lib64/compat-sap-++-10.so /usr/sap/lib/libstdc++.so.6を実行し、compact-sap-c++-9-9.1.1-2.3.el7_6.x86_64.rpmをインストールした後にシンボリックリンクが作成されていることを確認してください。
- yum install xorg-x11-server-Xorg xorg-x11-xauth -y #LifeKeeper GUI の場合
- yum install nfs-utils
パーティションを作成し、ストレージをフォーマットしてアタッチします。スワップファイルを作成します。
すべてのホストでRSAキーを作成し、.ssh/authorized_keysファイルに公開キーを追加することで、HANAノード間でroot sshログインを許可しています。これにより、インストールがとても簡単になります。
HANAインストールメディアボリュームをマウントします。
- yum localinstall compat-sap-c++-10-10.2.1-11.el7_9.x86_64.rpm
- yum localinstall compat-sap-c++-9-9.1.1-2.3.el7_6.x86_64.rpm
- mkdir /usr/sap/lib
- ln -s /opt/rh/SAP/lib64/compat-sap-++-10.so /usr/sap/lib/libstdc++.so.6
- yum install compat-sap-c++-10 libatomic -y
正しいHANAインストールメディアのディレクトリからhdblcmを実行します。すべてのノードにHANAが正常にインストールされたら、次のステップの準備は完了です。
システムレプリケーションのセットアップ
HSRを有効にする前にバックアップを取っておく必要があります。
- su – <SID>adm [ie. su -d11adm]
- hdbsql -i <instance number>adm -u system -p <password> [ie. hdbsql -i 11 -u system -p “password123”]
- BACKUP DATA USING FILE(‘/usr/sap/<SID>/HDB<instance number>’) [ie. BACKUP DATA USING FILE(‘/usr/sap/D11/HDB11’)
上記のバックアッププロセスをすべてのノードで繰り返します。
各ノードでHANAシステムレプリケーションを設定します。
プライマリーHANAシステム上でHDBインスタンスがまだ実行されていない場合は、起動します:sapcontrol -nr <instance number> -function StartSystem HDB [ie: sapcontrol -nr 11 -function StartSystem HDB]
プライマリーサイトでHSRを起動します:hdbnsutil -sr_enable –name=<primary site name> [ie. hdbnsutil -sr_enable –name=sapdemohana1
セカンダリーHANAシステムでHDBインスタンスを停止します:sapcontrol -nr <instance number> -function StopSystem HDB [ie. sapcontrol -nr 11 -function StopSystem HDB]
追加のHANAシステムで、KEYファイルとDATファイルをバックアップし、プライマリーKEYファイルとDATファイルを必要な場所にコピーします。
- mv /usr/sap/<SID>/SYS/global/security/rsecssfs/data/SSFS_<SID>.DAT /usr/sap/<SID>/SYS/global/security/rsecssfs/data/SSFS_<SID>.DAT.BAK [ie. mv /usr/sap/D11/SYS/global/security/rsecssfs/data/SSFS_D11.DAT /usr/sap/D11/SYS/global/security/rsecssfs/data/SSFS_D11.DAT.BAK]
- mv /usr/sap/<SID>/SYS/global/security/rsecssfs/key/SSFS_<SID>.KEY /usr/sap/<SID>/SYS/global/security/rsecssfs/key/SSFS_<SID>.KEY.BAK [ie. mv /usr/sap/D11/SYS/global/security/rsecssfs/key/SSFS_D11.KEY /usr/sap/D11/SYS/global/security/rsecssfs/key/SSFS_D11.KEY.BAK]
- scp root@<primary node>:/usr/sap/<SID>/SYS/global/security/rsecssfs/data/SSFS_<SID>.DAT /usr/sap/<SID>/SYS/global/security/rsecssfs/data/SSFS_<SID>.DAT [ie. scp root@sapdemohana1:/usr/sap/D11/SYS/global/security/rsecssfs/data/SSFS_D11.DAT /usr/sap/D11/SYS/global/security/rsecssfs/data/SSFS_D11.DAT]
- scp root@<primary node>:/usr/sap/<SID>/SYS/global/security/rsecssfs/key/SSFS_<SID>.KEY /usr/sap/<SID>/SYS/global/security/rsecssfs/key/SSFS_<SID>.KEY [ie. scp root@sapdemohana1:/usr/sap/D11/SYS/global/security/rsecssfs/key/SSFS_D11.KEY /usr/sap/D11/SYS/global/security/rsecssfs/key/SSFS_D11.KEY]
KEYファイルとdatファイルの所有者が<SID>adm sapsysであることを確認します。
- [root@sapdemohana2 ~]# ls -l /usr/sap/D11/SYS/global/security/rsecssfs/data/
- total 12
- -rw-r–r– 1 d11adm sapsys 2960 Jan 3 22:19 SSFS_D11.DAT
- -rw-r–r– 1 d11adm sapsys 2960 Jan 3 22:15 SSFS_D11.DAT.BAK
追加のHANAシステムをプライマリーHANAシステムに登録します。これは管理者ユーザーとして実行する必要があります。
- hdbnsutil -sr_register –name=<name of secondary HSR> –remoteHost=<primary host name of SAP HANA system> –remoteInstance=<remote instance number> –operationMode=<delta_datashipping | logreplay | logreplay_readaccess> –replicationMode=<sync | syncmem | async>
[ie. hdbnsutil -sr_register –name=sapdemohana2 –remoteHost=sapdemohana1 –remoteInstance=11 –operationMode=logreplay –replicationMode=sync]
すべてのシステムのHSRステータスを確認し、管理者ユーザーとして次のコマンドを実行します。
d11adm@sapdemohana4:/usr/sap/D11/HDB11>hdbnsutil -sr_state
すべてのシステムがオンラインになったら、次のステップに進みます。
ステップ3:SIOS LifeKeeperのインストール
AWS CLIのインストール
AWS CLIをインストールし、次の権限を持つキーを使用して設定します。
ルートテーブル(バックエンド)の設定:
- ec2:DescribeRouteTables
- ec2:ReplaceRoute
- ec2:DescribeNetworkInterfaceAttribute
- ec2:ModifyNetworkInterfaceAttribute
- Elastic IP (frontend) configuration:
- ec2:DescribeAddresses
- ec2:AssociateAddress
- ec2:DisassociateAddress
LifeKeeperのインストール
各ノードにSIOS LifeKeeperをインストールします。インストールするには、インストールスクリプトを実行し、セットアップウィザードに従って必要なステップを実行します。この例では、ネットワーキング、Route53 ARK、データベース、SAP HANA ARK、およびWitness機能を使用しています。
etc/selinux/configファイルを編集し、selinuxを無効にします。
また、ホスト名を変更し、/etc/hostsファイルを編集しました。最後に/etc/default/LifeKeeperファイルを編集し、/usr/local/binをPATHに追加します。
NOBCASTPING=1に変更します。
また、QUORUM_LOSS_ACTIONを「osu」に変更します。
Xwindowsが動作していることを確認してください。.bashrcからcpエイリアスを削除し、/opt/LifeKeeper/binと/usr/local/binを.bash_profileに追加し、ec2-usersの.Xauthorityファイルをrootと<SID>admのホームディレクトリにコピーして、Xwindowsが動作するようにします。
rootパスワードを変更して再起動します。LifeKeeper GUIを起動する前に、すべてのノードでHSRがオンラインであり、すべてのノードが登録されていることを確認してください。
設定
LifeKeeper GUI: lkGUIappを起動し、rootユーザーとパスワードでログインします。
[Connect]ボタンをクリックして、クラスター内の追加のノードにログインします。
すべてのノードにログインしたら、[Create Comm Path]ボタンをクリックします。
ローカルサーバーを聞かれたら[Next]をクリックし、Shift キーを押したまますべてのノードを選択します。
[Accept Defaults]をクリックし、完了したら[done]を押します。 [Create Comm path]ボタンをもう一度クリックし、今度は2番目のノードに変更します。
[Next]をクリックして3番目のノードを選択します。
[Accept Defaults]ボタンが押せるようになるまで、[Next]ボタンをクリックします。完了したら[Done]をクリックします。次に[Create Resource Hierarchy]ボタンをクリックします。
IPキットを選択して[Next]をクリックします。
[IPリソース]ページが表示されるまで、[Next]をクリックします。ここで「0.0.0.0」と入力し、[Next]をクリックします。
[Create]ボタンが表示されるまで、[Next]をクリックします。[Create]ボタンをクリックします。
完了したら[Next]をクリックします。ターゲットサーバーに2番目のノードが表示されている状態で、[Accept Defaults]をクリックします。
完了したら[Next Server]をクリックします。
3番目のノードが表示されている状態で[Accept Defaults]をクリックし、完了したら[Finish]をクリックします。
[Done]をクリックします。
IPリソースを作成したので、Route53リソースを追加し、DNSエントリーを変更してfqdnをアクティブノードのIPアドレスに解決します。この場合、saphana.sapdemoはsapdemohana1のIPアドレス(172.31.0.25)に解決されます。[Create Resource Hierarchy]ボタンを押してプロセスを開始します。
Route53を選択し、[Next]をクリックします。
Domain Nameが表示されるまで[Next]をクリックします。アクティブなホストゾーン名があらかじめ入力されているはずです。[Next]をクリックします。
HANAデータベースへの接続に使用するホスト名を入力し、[Next]をクリックします。
[Create]ボタンが表示されるまで、[Next]をクリックし、[Create]ボタンをクリックします。次に[Next]をクリックします。
Pre-Extendウィザードで、[Accept Defaults]をクリックします。
完了したら[Next Server]をクリックします。
ターゲットサーバーには3番目のノードが表示されます。[Accept Defaults]をクリックします。
完了したら[Finish]をクリックし、次に[Done]をクリックします。その後、ツリーを展開できます。2番目のノードへのターミナルセッションを開き、HANAデータベースのFQDNにpingを送信します(例:ping -c3 saphana.sapdemo)。
sapdemohana3の下にある一番上のスタンバイを右クリックし、[In Service]を選択します。
次の画面で[In Service]をクリックし、完了したら[Done]をクリックします。
ターミナルウィンドウに移動し、pingテストを繰り返します。
ホスト名がsapdemohana3で解決されていることがわかります。次のステップに進む前に、sapdemohana1をIn Serviceに戻してください。
ステップ4:SAP HANAとSIOS LifeKeeperの統合
リソース階層の作成
LifeKeeper GUIを使用して、各ノードにSAP HANAのリソース階層を作成します。この設定はフェイルオーバーとリカバリープロセスを管理するために重要です。HSRがノード1でアクティブになっていること、および追加のノードが登録されていることを確認してください。
[Create Resource]ボタンをクリックします。
Recovery KitにSAP HANAを選択し、IPアドレス画面が表示されるまで[Next]をクリックします。
[none]を選択し、[Next]をクリックします。
[Create]画面になるまで[Next]をクリックし、[Create]をクリックします。
作成後、[Next]をクリックし、その後ノード2について[Accept Defaults]をクリックします。
再度、ノード2が完了したら[Next Server]をクリックし、[Accept Defaults]を選択します。
完了したら[Finish]をクリックし、その後[Done]をクリックします。
Hana Hierarchyを右クリックし、[Create Dependency]を選択します。
Child Resource Tagでプルダウンからroute53リソースを選択し、[Next]をクリックします。
[Create Dependency]をクリックします。
[Done]をクリックします。その後、[Expand Tree]を選択します。
すべて緑色になったら、テストの準備は完了です。
ステップ5:テストと検証
フェイルオーバー/スイッチオーバーのテスト
プライマリーノードの障害時にシステムが正しくセカンダリーノードまたはターシャリ(3番目の)ノードに切り替わることを確認するために、徹底的なフェイルオーバーテストを実施します。このテストには、ネットワーク障害、ハードウェアの問題、ソフトウェアのクラッシュなどのシナリオを含める必要があります。
最初に行うテストは、メンテナンス作業や計画停電が発生した場合に使用するスイッチオーバーです。2番目のノードを右クリックし、[In Service – Takeover with Handshake…]を選択します。
[Perform Takeover]をクリックします。
このテストでは、ユーザーへのダウンタイムを最小限に抑えながら、2番目のノードに切り替えます。2番目のノードが稼働したら、[Finish]をクリックします。
しばらくすると、ノード1は[Standby – In Sync]に戻ります。
これで、フェイルオーバー テストを実行できるようになりました。ノード2のターミナルを開き、「echo c > /proc/sysrq-trigger」と入力して、システムクラッシュをシミュレートします。ノード1の優先順位が最も高い1であるため、ノード1が引き継ぐことがわかります。
最終的には、すべてが通常の状態に戻ります。
テストできるその他の障害シナリオも多数あります。テストを開始する前に、スタンバイノードが同期していることを確認してください。
データ同期の検証
データがすべてのノード間で正しく複製されていることを確認します。ノード間で一貫性のあるデータは、HSRセットアップで整合性を取るために極めて重要です。
パフォーマンス監視
SAP HANAインスタンスとLifeKeeperのパフォーマンスを定期的に監視し、潜在的な問題を示す異常や問題がないかを確認します。/var/log/lifekeeper.logファイルをチェックし、すべてが期待通りに動作していることを確認します。ネットワークのパフォーマンスに応じて、ハートビートタイマーとハートビート見逃し回数を調整する必要がある場合があります。これらは/etc/default/LifeKeeperファイルで設定できます。調整可能なパラメーターはLCMHBEATTIMEとLCMNUMHBEATSです。コマンドラインからlcdstatus -qコマンドで、LifeKeeperの状態を確認することもできます。
おわりに
SIOS LifeKeeperを使用してAWSに3ノードのHANA HSRクラスターをセットアップするには、綿密な計画と実行が必要です。この記事で説明した手順に注意深く従うことで、堅牢で回復力があり、可用性の高いSAP HANA環境をクラウド上に構築することができ、重要なデータへのアクセスと安全性を確保することができます。SIOS LifeKeeper for Linuxを使用することで、SAP HANAの管理、監視、メンテナンスが迅速かつ容易になります。
サイオステクノロジーでは、すべての製品に関するリソースとトレーニングを提供していますので、お気軽にお問い合わせください。