소개
이 문서에서는 CPS(Cisco Policy Suite)에서 SVN(Subversion) 동기화를 복구하는 절차에 대해 설명합니다.
사전 요구 사항
요구 사항
다음 주제에 대한 지식을 보유하고 있으면 유용합니다.
참고: 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 ~]#