Contenido

Introducción

ERROR DE COINCIDENCIA DE UUID DE SVN

Verificación de la Sincronización SVN a través de VM PCRFClient

Corrija la sincronización del repositorio SVN

Reinicializar la sincronización SVN

Guiones

check_svn_sync.sh

svn_uuid_mismatch.sh

Introducción

Este documento describe cómo sincronizar el repositorio de control de subversión (SVN) entre PCRFClient01 y PCRFClient02.

ERROR DE COINCIDENCIA DE UUID DE SVN

Todas las configuraciones de políticas en el generador de políticas (PB) se almacenan como un repositorio SVN. Por lo tanto, para tener alta disponibilidad (HA), necesita tener el mismo identificador único universal SVN (UUID) en las dos máquinas virtuales PCRFClient (VM). Sin embargo, Cisco Policy Suite (CPS) versión 7.X no tiene el mismo UUID en las VM PCRFClient. Es decir, las versiones de CPS más altas tienen el mismo UUID. Se ha ingresado un bug de mejora, Cisco bug ID CSCuu85319. Podría lograr HA si tiene el mismo número de revisión en ambas VM PCRFClient0X.

Verificación de la Sincronización SVN a través de VM PCRFClient

Dado que el UUID no es el mismo en ambas VM PCRFClient, ingrese estos comandos:

svn info http://pcrfclient01/repos/configuration

svn info http://pcrfclient02/repos/configuration

Nota: Con estos comandos, debe dar el nombre de host exacto de las VM PCRFClient01 y PCRFClient02. También puede utilizar el script check_svn_sync.sh para verificar si el repositorio SVN está sincronizado entre las VM PCRFClient. Esta secuencia de comandos se proporciona al final de este artículo.

Es posible que observe estos registros de errores de la suite de red Quantum (QNS). Estos mensajes de error se pueden verificar con el script svn_uuid_mismatch.sh. Esta secuencia de comandos se proporciona al final de este artículo.

==qns-1.log==

2015-06-10 00:51:15,058 [pool-4-thread-1] WARN

c.b.r.impl.ReferenceDataManager - SVN directory failed in updating

2015-06-10 01:51:44,050 [pool-4-thread-1] WARN

c.b.r.impl.ReferenceDataManager - SVN directory failed in updating

2015-06-10 03:52:41,061 [pool-4-thread-1] WARN

c.b.r.impl.ReferenceDataManager - SVN directory failed in updating

==Service-qns-1.log==

svn: Repository UUID '70e98d90-b9c7-4c5b-a3db-681dd68c62a6'

doesn't match expected UUID 'ed2f2f76-f588-443e-9bb8-3fb05abd903b'

svn: Repository UUID '70e98d90-b9c7-4c5b-a3db-681dd68c62a6'

doesn't match expected UUID 'ed2f2f76-f588-443e-9bb8-3fb05abd903b'

svn: Repository UUID '70e98d90-b9c7-4c5b-a3db-681dd68c62a6'

doesn't match expected UUID 'ed2f2f76-f588-443e-9bb8-3fb05abd903b'

Como se muestra a continuación, puede observar que el UUID es diferente en todas las VM, pero las versiones deben permanecer iguales. Si la versión SVN en ambas VM PCRFClient es la misma, entonces la sincronización del repositorio SVN está ahí y posteriormente usted tiene alta disponibilidad.

===PCRFClient01===

[root@pcrfclient01 ~]# svn info http://pcrfclient01/repos/configuration

Path: configuration

URL: http://pcrfclient01/repos/configuration

Repository Root: http://pcrfclient01/repos

Repository UUID: ed2f2f76-f588-443e-9bb8-3fb05abd903b

Revision: 392    <<<<  revision number

Node Kind: directory

Last Changed Author: broadhop

Last Changed Rev: 392

Last Changed Date: 2015-06-01 15:52:12 -0600 (Mon, 01 Jun 2015)

===PCRFClient02===

[root@pcrfclient01 ~]# svn info http://pcrfclient02/repos/configuration

Path: configuration

URL: http://pcrfclient02/repos/configuration

Repository Root: http://pcrfclient02/repos

Repository UUID: 70e98d90-b9c7-4c5b-a3db-681dd68c62a6

Revision: 392   <<<< revision number

Node Kind: directory

Last Changed Author: broadhop

Last Changed Rev: 392

Last Changed Date: 2015-06-01 15:52:12 -0600 (Mon, 01 Jun 2015)

Corrija la sincronización del repositorio SVN

La sección anterior explica cómo verificar la sincronización del repositorio SVN. Esta sección trata sobre cómo reparar la sincronización SVN. Suponga que PCRFClient01 es primario y que PCRFClient02 es secundario y que el repositorio PCRFClient02 SVN no está sincronizado.

Complete estos pasos para hacer que el repositorio SVN PCRFClient02 se sincronice con PCRFClient01:

1. En PCRFClient01, inhabilite el trabajo de sincronización SVN:
crontab -e

Comment this cron job entry:

/usr/bin/svnsync sync http:// pcrfclient02/repos-proxy-sync

Nota: Aquí, PCRFClient02 es el nombre de host del cliente de la VM PCRFClient02.

2. Inicie sesión en PCRFClient02 y edite "/etc/httpd/conf.d/subversion.conf" y actualícelo con este texto en negrita:
<Location /repos-proxy-sync>

DAV svn

SVNPath /var/www/svn/repos

Order deny,allow

Deny from all

Allow from pcrfclient01     <<< # customer host name of PCRFClient01 VM

</Location>

3. En la VM PCRFClient02 , ingrese este comando para reiniciar el servicio HTTPD.
service httpd restart

4. En PCRFClient01, ingrese este comando para sincronizar los datos SVN. La sincronización del repositorio SVN puede tardar en depender del número y el tamaño de las revisiones.
/usr/bin/svnsync sync http://pcrfclient02/repos-proxy-sync

Nota: Aquí, PCRFClient02 es el nombre de host del cliente de PCRFClient02 VM.

Si se informa de errores de bloqueo, ingrese este comando y vuelva a intentar el comando svnsync:

/usr/bin/svn propdel svn:sync-lock --revprop -r 0 http:// pcrfclient02/repos-proxy-sync

Si todavía se ven los errores, continúe con Reinicializar la sincronización SVN.

5. Para verificar que el número de revisión para el repositorio SVN es el mismo en PCRFClient01 y PCRFClient02, utilice el script check_svn_sync.sh o el comando CLI mencionado en Verificar la Sincronización SVN en la VM PCRFClient.

6. En PCRFClient01, habilite el trabajo de sincronización SVN:
crontab -e

/usr/bin/svnsync sync http://pcrfclient02/repos-proxy-sync

Reinicializar la sincronización SVN

Realice estos pasos solamente si encuentra un error en el paso 4 en la sección Arreglar la Sincronización del Repositorio SVN. Si no encuentra ningún error en la sección anterior, puede ignorar estos pasos.

Nota: Póngase en contacto con el equipo de soporte técnico de Cisco antes de realizar estos pasos.

1. Antes de reiniciar la sincronización SVN, primero inhabilite PCRFClient02 de svn_proxy en la configuración haproxy:

1. Vaya a standby lb (lb02 en este ejemplo) y modifique "/etc/haproxy/haproxy.cfg" y comente la línea en negrita que se muestra aquí:
listen svn_proxy lbvip02:80

mode http

balance roundrobin

option httpchk

option httpclose

option abortonclose

server pcrfclient01 pcrfclient01:80 check

#server pcrfclient02 pcrfclient02:80 check backup

2. Vaya a active lb (lb01 en este ejemplo) e ingrese este comando para hacer una conmutación por fallas de HA:
/etc/init.d/heartbeat restart

3. Verifique que "haproxy/memcached/VIP" haya cambiado a la otra lb (lb02 en este ejemplo).

4. Vaya a standby lb (ahora lb01 está en espera) y modifique "/etc/haproxy/haproxy.cfg" y comente la línea en negrita:
listen svn_proxy lbvip02:80

mode http

balance roundrobin

option httpchk

option httpclose

option abortonclose

server pcrfclient01 pcrfclient01:80 check

#server pcrfclient02 pcrfclient02:80 check backup

5. Vaya a lb activo (ahora lb02 está activo) e ingrese este comando para hacer un failover HA:
/etc/init.d/heartbeat restart

6. Verifique que "haproxy/memcached/VIP" haya cambiado a la otra lb (lb01 en este ejemplo).

2. En PCRFClient02, ingrese estos comandos para reinicializar el directorio del repositorio SVN:
tar -czf /var/tmp/repos.tar.gz /var/www/svn/repos

mkdir -p /var/www/svn/repos

rmdir /var/www/svn/repos

/usr/bin/svnadmin create /var/www/svn/repos

chown -R apache:apache /var/www/svn/repos

3. En PCRFClient02, cree un archivo denominado "pre-revprop-change" en la trayectoria "/var/www/svn/repos/hooks/" con estos datos:
#!/bin/sh

#/var/www/svn/repos/hooks/pre-revprop-change

exit 0

4. En PCRFClient02, ingrese estos comandos para cambiar los permisos del archivo creado anteriormente y también realizar reinicios del servicio HTTPD:
chmod 700 /var/www/svn/repos/hooks/pre-revprop-change

chown apache:apache /var/www/svn/repos/hooks/pre-revprop-change

service httpd restart

5. En PCRFClient01, ingrese estos comandos para realizar la sincronización de datos SVN:
/usr/bin/svnsync init http://pcrfclient02/repos-proxy-sync

http:// pcrfclient01/repos-proxy-sync

/usr/bin/svnsync sync http:// pcrfclient02/repos-proxy-sync

Nota: En lugar de PCRFClient01 y PCRFClient02, proporcione el nombre de host apropiado de PCRFClient01 y PCRFClient02 según su configuración.

6. Para verificar si sus repositorios SVN están sincronizados, complete los pasos en Verificar la Sincronización SVN a través de la VM PCRFClient.

7. Habilite PCRFClient02 desde el proxy SVN en la configuración haproxy. Básicamente, deje de comentar las líneas que comentó en el paso 1.

1. Vaya a standby lb (lb02 en este ejemplo) y modifique "/etc/haproxy/haproxy.cfg" y anule el comentario de la línea en negrita:
listen svn_proxy lbvip02:80

mode http

balance roundrobin

option httpchk

option httpclose

option abortonclose

server pcrfclient01 pcrfclient01:80 check

server pcrfclient02 pcrfclient02:80 check backup

2. Verifique que "haproxy/memcached/VIP" haya cambiado a la otra lb (lb02 en este ejemplo).
/etc/init.d/heartbeat restart

3. Verifique que "haproxy/memcached/VIP" haya cambiado a la otra lb (lb02 en este ejemplo).

4. Vaya a la libra en espera (ahora lb01 está en espera) y modifique "/etc/haproxy/haproxy.cfg" y deje de comentar la línea en negrita que se muestra aquí:
listen svn_proxy lbvip02:80

mode http

balance roundrobin

option httpchk

option httpclose

option abortonclose

server pcrfclient01 pcrfclient01:80 check

server pcrfclient02 pcrfclient02:80 check backup

5. Vaya a lb activo (nowlb02 está activo) e ingrese este comando para completar el failover de HA:
/etc/init.d/heartbeat restart

6. Verifique que "haproxy/memcached/VIP" haya cambiado a la otra lb (lb01 en este ejemplo).

8. En PCRFClient01, habilite el trabajo de sincronización SVN:
crontab -e/usr/bin/svnsync sync http://pcrfclient02/repos-proxy-sync

Guiones

check_svn_sync.sh

Por favor, ponga este script en su sistema CPS para verificar la sincronización SVN en las VM PCRFClient.

#!/bin/bash

a=$(svn info http://pcrfclient01/repos/configuration | grep -i Revision | grep -o '[0-9]*')

b=$(svn info http://pcrfclient02/repos/configuration | grep -i Revision | grep -o '[0-9]*')

if [ "$a" == "$b" ]; then

echo -e  "SVN repository  Synchronization:\e[0;32m PASS \e[0m"

echo -e  "PCRFClient01 SVN repository revision number is : \e[1;33m $a \e[0m"

echo  -e  "PCRFClient02 SVN repository revision number is : \e[1;33m $b \e[0m"

else

echo -e "SVN repository Synchronization :\e[0:31m FAIL \e[0m"

echo -e  "PCRFClient01 SVN repository revision number is : \e[1;33m $a \e[0m"

echo -e  "PCRFClient02 SVN repository revision number is : \e[1;33m $b \e[0m"

fi

svn_uuid_mismatch.sh

Coloque este script en su sistema CPS para monitorear los mensajes de error de UUID SVN de las VM QNS individuales.

#!/bin/bash

for HN in `hosts.sh |grep qns`;

do echo -e "\e[1;32m $HN\e[0m";

echo -e "\e[1;33m===qns-1.log===\e[0m"

ssh $HN grep -wh "SVN directory failed" 2>/dev/null  /var/log/broadhop/qns-1.log | tail -10;

echo -e  "\e[1;33m===service-qns-1.log===\e[0m"

ssh $HN grep -wh "match expected UUID" 2>/dev/null  /var/log/broadhop/service-qns-1.log | tail -10;

done