목차

소개

사전 요구 사항

요구 사항

사용되는 구성 요소

배경 정보

문제

pcrfclient 노드 간 SVN 동기화를 복구하는 절차

접근 방식 1

접근 방식 2

소개

이 문서에서는 CPS(Cisco Policy Suite)에서 SVN(Subversion) 동기화를 복구하는 절차에 대해 설명합니다.

사전 요구 사항

요구 사항

다음 주제에 대한 지식을 보유하고 있으면 유용합니다.

- Linux

- CPS

참고: CPS CLI에 대한 루트 액세스 권한이 있어야 합니다.

사용되는 구성 요소

이 문서의 정보는 다음 소프트웨어 및 하드웨어 버전을 기반으로 합니다.

- CPS 20.2

- UCS(통합 컴퓨팅 시스템)-B

이 문서의 정보는 특정 랩 환경의 디바이스를 토대로 작성되었습니다. 이 문서에 사용된 모든 디바이스는 초기화된(기본) 컨피그레이션으로 시작되었습니다. 현재 네트워크가 작동 중인 경우 모든 명령의 잠재적인 영향을 미리 숙지하시기 바랍니다.

배경 정보

Apache SVN은 CPS 내에서 사용되는 버전 생성 및 수정 제어 시스템입니다. 또한 모든 CPS 정책 컨피그레이션을 유지 관리하며 파일을 생성, 업데이트 및 삭제할 수 있는 저장소가 있습니다. SVN은 서버의 파일이 변경될 때마다 파일 차이를 유지하며, 변경 때마다 수정 번호를 생성합니다.

일반적으로 SVN과의 대부분의 상호 작용은 PB(Policy Builder)를 통해 수행됩니다.

즉, CPS는 SVN, 즉 서브버전을 사용하여 정책 컨피그레이션 데이터를 SVN 데이터베이스에 저장합니다. 이는 외부 인터페이스, VIP(Virtual IP) 및 PD(Policy Director)를 통해 PCRFCLIENT/OAM(Operation and Maintenance) 가상 머신에 연결되는 PB(Policy Builder)라는 SVN 데이터베이스(DB)를 보고 편집할 수 있는 GUI(Graphical User Interface)를 제공합니다.

두 pcrfclient의 SVN DB에 있는 컨피그레이션 데이터는 어느 시점에서든 동기화되어야 합니다.

CPS는 pcrfclient 노드의 액티브 및 스탠바이 HA(고가용성) 모델 구축으로 구성되며, 한 노드는 액티브 노드로 실행되고 다른 노드는 스탠바이 상태로 실행됩니다.

문제

경우에 따라 CPS의 pcrfclient 노드 간 SVN이 동기화되지 않은 다음 동기화해야 할 수 있습니다.

경우에 따라 대부분 사후 정책 게시, Arbitervip 전환 시 또는 SVN 서버에 연결할 수 없는 경우에도 대상 저장소에 SVN 잠금이 생성됩니다.

그러면 SVN 동기화가 최신 상태가 아니며 /var/log/httpd/svnsync.log 있습니다. 이러한 잠금이 생성되면 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 잠금과 관련된 이 오류를 발생시킨 경우 SVN 도용 잠금이 포함된 외곽진입 2로 이동합니다.

2단계. SVN 동기화 상태를 확인하려면 클러스터 관리자 또는 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 ~]#