目录

简介

先决条件

要求

使用的组件

背景信息

问题

在pcrfclient节点之间恢复SVN同步的过程

方针1

方针2

简介

本文档介绍在思科策略套件(CPS)中恢复subversion(SVN)同步的过程。

先决条件

要求

Cisco 建议您了解以下主题：

- Linux

- CPS

注意：Cisco建议您必须拥有对CPS CLI的超级用户权限。

使用的组件

本文档中的信息基于以下软件和硬件版本：

- CPS 20.2

- 统一计算系统(UCS)-B

本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始（默认）配置。如果您的网络处于活动状态，请确保您了解所有命令的潜在影响。

背景信息

Apache SVN是CPS中使用的版本创建和修订控制系统。它维护所有CPS策略配置，并且拥有可用于创建、更新和删除文件的存储库。每次对服务器上的文件进行更改时，SVN都会维护文件差异，并且每次更改都会生成一个修订号。

通常，大多数与SVN的交互是通过策略生成器(PB)执行的。

换句话说，CPS通过使用SVN或颠覆在SVN数据库中存储策略配置数据。提供图形用户界面(GUI)，用于查看和编辑名为Policy Builder(PB)的SVN数据库(DB)，该数据库通过外部接口、虚拟IP(VIP)和策略导向器(PD)连接到pcrfclient/操作与维护(OAM)虚拟机。

两个pcrfclients的SVN DB中的配置数据必须在任一时间点同步。

CPS包括pcrfclient节点的主用和备用高可用性(HA)模式部署，其中一个节点作为主用节点运行，另一个节点作为备用节点运行。

问题

在某些情况下，CPS中pcrfclient节点之间的SVN可能不同步，然后需要使其同步。

在某些情况下，大多数情况下，在策略发布后，在仲裁切换vip时或即使无法访问SVN服务器，SVN锁定也会在目标存储库上创建。

然后SVN同步过期，可在中看到 /var/log/httpd/svnsync.log 在受影响的pcrfclient中。创建这些锁时，CPS诊断输出会显示SVN同步错误。从集群管理器或pcrfclient运行此命令以检查SVN同步状态。

[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.从Cluster Manager或pcrfclient运行此命令以验证SVN同步状态。

[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 ~]#