Introduction
Este documento descreve o procedimento para recuperar a sincronização do Subversion (SVN) no Cisco Policy Suite (CPS).
Prerequisites
Requirements
A Cisco recomenda que você tenha conhecimento destes tópicos:
Note: A Cisco recomenda que você tenha acesso de raiz privilegiado à CLI do CPS.
Componentes Utilizados
As informações neste documento são baseadas nestas versões de software e hardware:
- CPS 20.2
- Unified Computing System (UCS)-B
The information in this document was created from the devices in a specific lab environment. All of the devices used in this document started with a cleared (default) configuration. Se a rede estiver ativa, certifique-se de que você entenda o impacto potencial de qualquer comando.
Informações de Apoio
O SVN do Apache é o sistema de controle de criação e revisão de versão usado no CPS. Ele mantém todas as configurações de política do CPS e tem repositórios nos quais os arquivos podem ser criados, atualizados e excluídos. O SVN mantém a diferença do arquivo cada vez que é feita qualquer alteração em um arquivo no servidor e para cada alteração ele gera um número de revisão.
Em geral, a maioria das interações com o SVN é realizada através do Policy Builder (PB).
Em outras palavras, o CPS armazena os dados de configuração de política pelo uso do SVN, ou subversão, em um banco de dados SVN. Isso fornece uma Interface Gráfica de Usuário (GUI - Graphical User Interface) para exibir e editar o banco de dados SVN (DB - SVN database) chamado Policy Builder (PB - Construtor de Políticas) que se conecta à máquina virtual pcrfclient/Operation and Maintenance (OAM - Operação e Manutenção) através de uma interface externa, o Virtual IP (VIP - IP Virtual) e o Policy Diretor (PD - Diretor de Políticas).
Os dados de configuração no SVN DB de ambos os pcrfclients devem estar sincronizados a qualquer momento.
O CPS consiste na implantação do modelo de alta disponibilidade (HA) ativo e em espera dos nós pcrfclient, onde um nó é executado como ativo e o outro nó é executado como em espera.
Problema
É possível que, em algumas situações, o SVN entre nós pcrfclient em um CPS saia de sincronia e, em seguida, seja necessário sincronizá-los.
Em alguns casos, a maioria publica políticas de post, no momento da alternância de arbitervip ou mesmo se o servidor SVN não estiver acessível, os bloqueios SVN são criados no repositório de destino.
A sincronização do SVN fica desatualizada e isso pode ser visto em /var/log/httpd/svnsync.log
no pcrfclient afetado. Quando esses bloqueios são criados, a saída de diagnóstico do CPS mostra o erro de sincronização do SVN. Execute este comando no Cluster Manager ou no pcrfclient para verificar o status de sincronização do 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
Procedimento para recuperar a sincronização do SVN entre os nós pcrfclient
Abordagem 1
Esta abordagem é usada quando não há nenhum bloqueio SVN criado.
Etapa 1. Efetue login no respectivo nó pcrfclient conforme mostrado no diagnóstico e execute este comando para sincronizar o SVN entre os nós pcrfclient ativo e standby.
/var/qps/bin/support/recover_svn_sync.sh
Resultado do comando se a sincronização do SVN for bem- sucedida:
[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 ~]#
Se esse comando não puder sincronizar o SVN e emitir esse erro relacionado ao bloqueio do SVN no repositório de destino ou espelho, vá para a Abordagem 2, que envolve o bloqueio de roubo do SVN.
Etapa 2. Execute este comando a partir do Cluster Manager ou do pcrfclient, para verificar o status de sincronização do SVN.
[root@installer ~]# diagnostics.sh --svn
CPS Diagnostics HA Multi-Node Environment
---------------------------
Checking svn sync status between pcrfclient01 & pcrfclient02...[PASS]
[root@installer ~]#
Abordagem 2
Você pode usar essa abordagem se o bloqueio do SVN for criado no repositório de destino ou espelho.
Etapa 1. Efetue login no respectivo nó pcrfclient conforme mostrado no diagnóstico e execute este comando.
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. Execute este comando para roubar o bloqueio do SVN no repositório de destino ou espelho.
/usr/bin/ssh -k qns@pcrfclient01 -t '' '/usr/bin/svnsync sync --steal-lock http://pcrfclient02/repos-proxy-sync'
Note: Esse comando faz com que o svnsync roube, conforme necessário, o bloqueio que usa no repositório de destino ou espelho para garantir acesso exclusivo ao repositório. Essa opção só deve ser usada quando houver um bloqueio no repositório de destino ou espelho e se sabe que ele está obsoleto, ou seja, quando você tiver certeza de que não há outros processos svnsync que acessam o repositório.
3. Execute este comando para sincronizar o SVN entre os nós pcrfclient ativo e standby.
[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. Execute este comando a partir do Cluster Manager ou do pcrfclient, para verificar o status de sincronização do SVN.
[root@installer ~]# diagnostics.sh --svn
CPS Diagnostics HA Multi-Node Environment
---------------------------
Checking svn sync status between pcrfclient01 & pcrfclient02...[PASS]
[root@installer ~]#