概要
このドキュメントでは、Cisco Policy Suite(CPS)でsubversion(SVN)同期を回復する手順について説明します。
前提条件
要件
次の項目に関する知識があることが推奨されます。
注:CPS CLIへのrootアクセス権限が必要であることを推奨します。
使用するコンポーネント
このドキュメントの情報は、次のソフトウェアとハードウェアのバージョンに基づいています。
- CPS 20.2
- Unified Computing System(UCS)-B
このドキュメントの情報は、特定のラボ環境にあるデバイスに基づいて作成されました。このドキュメントで使用するすべてのデバイスは、初期(デフォルト)設定の状態から起動しています。本稼働中のネットワークでは、各コマンドによって起こる可能性がある影響を十分確認してください。
背景説明
Apache SVNは、CPS内で使用されるバージョン作成およびリビジョン制御システムです。すべてのCPSポリシー設定を維持し、ファイルの作成、更新、および削除が可能なリポジトリを備えています。SVNは、サーバ上のファイルに変更が加えられるたびにファイルの差分を保持し、変更のたびにリビジョン番号を生成します。
一般に、SVNとのやり取りのほとんどはPolicy Builder(PB)を介して実行されます。
つまり、CPSは、SVNまたはsubversionを使用してポリシー設定データをSVNデータベースに保存します。これにより、Policy Builder(PB)と呼ばれるSVNデータベース(DB)を表示および編集するためのグラフィカルユーザインターフェイス(GUI)が提供されます。このデータベースは、外部インターフェイス、仮想IP(VIP)、およびポリシーディレクタ(PD)を介してpcrfclient/Operation and Maintenance(OAM)仮想マシンに接続します。
両方のpcrfclientのSVN DBの設定データは、いつでも同期している必要があります。
CPSは、pcrfclientノードのアクティブおよびスタンバイのハイアベイラビリティ(HA)モデルの導入で構成されます。1つのノードはアクティブとして動作し、もう1つのノードはスタンバイとして動作します。
問題
状況によっては、CPS内のpcrfclientノード間のSVNが同期から外れ、その後同期させる必要が生じる場合があります。
場合によっては、主にポリシー発行後、arbitervip切り替え時、またはSVNサーバに到達できない場合でも、宛先リポジトリにSVNロックが作成されます。
その後、SVN同期が古くなり、次のページで確認できます。 /var/log/httpd/svnsync.log
影響を受けるpcrfclient内にあります。これらのロックが作成されると、CPS診断出力にSVN同期エラーが表示されます。SVN同期ステータスを確認するには、クラスタマネージャまたはpcrfclientからこのコマンドを実行します。
[root@installer ~]# diagnostics.sh --svn
CPS Diagnostics HA Multi-Node Environment
----------------------------
Checking svn sync status between pcrfclient01 & 02...
svn is not sync between pcrfclient01 & pcrfclient02...[FAIL]
Corrective Action(s): Run ssh pcrfclient01 /var/qps/bin/support/recover_svn_sync.sh
pcrfclientノード間のSVN同期を回復する手順
アプローチ1
この方法は、SVNロックが作成されていない場合に使用されます。
ステップ1:診断に示されているように各pcrfclientノードにログインし、このコマンドを実行して、アクティブとスタンバイのpcrfclientノード間でSVNを同期します。
/var/qps/bin/support/recover_svn_sync.sh
SVN同期が成功した場合のコマンド出力:
[root@dc1-pcrfclient01 ~]# /var/qps/bin/support/recover_svn_sync.sh
=================================================================
[Thu Aug 25 09:10:44 UTC 2022] [INFO] /var/qps/bin/support/recover_svn_sync.sh script is running from console
-----sync betweeen pcrfclient01 & pcrfclient02 --------------------
[Thu Aug 25 09:10:47 UTC 2022] [INFO] Doing SVN sync between pcrfclient01 and pcrfclient02...
[Thu Aug 25 09:11:06 UTC 2022] [INFO] SVN are already in sync between pcrfclient01 and pcrfclient02
[Thu Aug 25 09:11:07 UTC 2022] [INFO] SVN UUID are matched between pcrfclient01 and pcrfclient02
[Thu Aug 25 09:11:07 UTC 2022] [INFO] SVN sync completed successfully for pcrfclient01 & pcrfclient02
[root@dc1-pcrfclient01 ~]#
このコマンドがSVNを同期できず、宛先またはミラーリポジトリ内のSVNロックに関連するこのエラーをスローする場合は、アプローチ2に進みます。これにはSVNスチールのロックが含まれます。
ステップ2:SVN同期ステータスを確認するには、Cluster Managerまたはpcrfclientからこのコマンドを実行します。
[root@installer ~]# diagnostics.sh --svn
CPS Diagnostics HA Multi-Node Environment
---------------------------
Checking svn sync status between pcrfclient01 & pcrfclient02...[PASS]
[root@installer ~]#
アプローチ2
この方法は、宛先リポジトリまたはミラーリポジトリにSVNロックが作成されている場合に使用できます。
ステップ1:診断に示されているように、それぞれのpcrfclientノードにログインし、このコマンドを実行します。
Command syntax:
svnsync synchronize file:///var/svn/repos-mirror http://svn.example.com/repos
Sample command:
/usr/bin/ssh -k qns@pcrfclient01 -t '' '/usr/bin/svnsync info http://pcrfclient02/repos-proxy-sync'
[root@dc1-pcrfclient01 ~]# /usr/bin/ssh -k qns@pcrfclient01 -t '' '/usr/bin/svnsync info http://pcrfclient02/repos-proxy-sync'
Source URL: http://pcrfclient01/repos-proxy-sync
Source Repository UUID: f1937c9d-1688-463a-9d4e-db944d9aafb1
Last Merged Revision: 170
[root@dc1-pcrfclient01 ~]#
2.このコマンドを実行して、デスティネーションまたはミラーリポジトリのSVNロックを盗みます。
/usr/bin/ssh -k qns@pcrfclient01 -t '' '/usr/bin/svnsync sync --steal-lock http://pcrfclient02/repos-proxy-sync'
注:このコマンドを実行すると、svnsyncは、必要に応じて、排他的なリポジトリアクセスを保証するために宛先またはミラーリポジトリで使用するロックを盗みます。このオプションは、デスティネーションまたはミラーリポジトリにロックが存在し、古いことがわかっている場合、つまり、リポジトリにアクセスする他のsvnsyncプロセスがないことが確実な場合にのみ使用する必要があります。
3.このコマンドを実行して、アクティブおよびスタンバイpcrfclientノード間でSVNを同期します。
[root@dc1-pcrfclient01 ~]# /var/qps/bin/support/recover_svn_sync.sh
=================================================================
[Thu Aug 25 09:10:44 UTC 2022] [INFO] /var/qps/bin/support/recover_svn_sync.sh script is running from console
-----sync betweeen pcrfclient01 & pcrfclient02 --------------------
[Thu Aug 25 09:10:47 UTC 2022] [INFO] Doing SVN sync between pcrfclient01 and pcrfclient02...
[Thu Aug 25 09:11:06 UTC 2022] [INFO] SVN are already in sync between pcrfclient01 and pcrfclient02
[Thu Aug 25 09:11:07 UTC 2022] [INFO] SVN UUID are matched between pcrfclient01 and pcrfclient02
[Thu Aug 25 09:11:07 UTC 2022] [INFO] SVN sync completed successfully for pcrfclient01 & pcrfclient02
[root@dc1-pcrfclient01 ~]#
2.クラスタマネージャまたはpcrfclientからこのコマンドを実行し、SVN同期ステータスを確認します。
[root@installer ~]# diagnostics.sh --svn
CPS Diagnostics HA Multi-Node Environment
---------------------------
Checking svn sync status between pcrfclient01 & pcrfclient02...[PASS]
[root@installer ~]#