Contenu

Introduction

MAUVAISE CORRESPONDANCE DE L'UUID SVN

Vérification de la synchronisation SVN sur les machines virtuelles PCRFClient

Correction de la synchronisation du référentiel SVN

Réinitialiser la synchronisation SVN

Scripts

check_svn_sync.sh

svn_uuid_dismatch.sh

Introduction

Ce document décrit comment synchroniser le référentiel de contrôle de Subversion (SVN) entre PCRFClient01 et PCRFClient02.

MAUVAISE CORRESPONDANCE DE L'UUID SVN

Toutes les configurations de stratégie dans le générateur de stratégies (PB) sont stockées en tant que référentiel SVN. Ainsi, pour bénéficier d'une haute disponibilité, vous devez disposer du même UUID (Universal Unique Identifier) SVN sur les deux machines virtuelles PCRFClient. Cependant, la version 7.X de Cisco Policy Suite (CPS) n'a pas le même UUID sur les machines virtuelles PCRFClient. Autrement dit, les versions CPS supérieures ont le même UUID. Un bogue d'amélioration a été entré, ID de bogue Cisco CSCuu85319. Vous pouvez atteindre la HA si vous avez le même numéro de révision dans les deux machines virtuelles PCRFClient0X.

Vérification de la synchronisation SVN sur les machines virtuelles PCRFClient

Puisque l'UUID n'est pas identique sur les deux machines virtuelles PCRFClient, entrez ces commandes :

svn info http://pcrfclient01/repos/configuration

svn info http://pcrfclient02/repos/configuration

Note: Avec ces commandes, vous devez indiquer le nom d'hôte exact des machines virtuelles PCRFClient01 et PCRFClient02. Vous pouvez également utiliser le script check_svn_sync.sh afin de vérifier si le référentiel SVN est synchronisé sur les machines virtuelles PCRFClient. Ce script est fourni à la fin de cet article.

Vous remarquerez peut-être ces journaux d'erreurs QNS (Quantum Network Suite). Ces messages d'erreur peuvent être vérifiés avec le script svn_uuid_mismatch.sh. Ce script est fourni à la fin de cet article.

==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'

Comme indiqué ci-dessous, vous pouvez observer que l'UUID est différent d'une machine virtuelle à l'autre, mais les versions doivent rester identiques. Si la version SVN dans les deux machines virtuelles PCRFClient est identique, la synchronisation du référentiel SVN est là et vous bénéficiez ensuite d'une haute disponibilité.

===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)

Correction de la synchronisation du référentiel SVN

La section précédente explique comment vérifier la synchronisation du référentiel SVN. Cette section explique comment résoudre la synchronisation SVN. Supposez que PCRFClient01 est principal et PCRFClient02 secondaire et que le référentiel PCRFClient02 SVN est désynchronisé.

Complétez ces étapes afin de synchroniser le référentiel SVN PCRFClient02 avec PCRFClient01 :

1. Sur PCRFClient01, désactivez le travail de synchronisation SVN :
crontab -e

Comment this cron job entry:

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

Note: Ici, PCRFClient02 est le nom d'hôte du client de la machine virtuelle PCRFClient02.

2. Connectez-vous à PCRFClient02 et modifiez "/etc/httpd/conf.d/subversion.conf" et mettez-le à jour avec ce texte en gras :
<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. Sur la machine virtuelle PCRFClient02 , entrez cette commande afin de redémarrer le service HTTPD.
service httpd restart

4. Sur PCRFClient01, entrez cette commande afin de synchroniser les données SVN. La synchronisation du référentiel SVN peut prendre du temps en fonction du nombre et de la taille des révisions.
/usr/bin/svnsync sync http://pcrfclient02/repos-proxy-sync

Note: Ici, PCRFClient02 est le nom d'hôte client de la machine virtuelle PCRFClient02.

Si des erreurs de verrouillage sont signalées, entrez cette commande, puis réessayez la commande svnsync :

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

Si les erreurs sont toujours visibles, passez à Réinitialiser la synchronisation SVN.

5. Afin de vérifier que le numéro de révision du référentiel SVN est identique dans PCRFClient01 et PCRFClient02, utilisez le script check_svn_sync.sh ou la commande CLI mentionnée dans Vérifier la synchronisation SVN sur la machine virtuelle PCRFClient.

6. Sur PCRFClient01, activez le travail de synchronisation SVN :
crontab -e

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

Réinitialiser la synchronisation SVN

Effectuez ces étapes uniquement si vous rencontrez une erreur à l'étape 4 de la section Correction de la synchronisation du référentiel SVN. Si vous ne rencontrez aucune erreur dans la section précédente, vous pouvez ignorer ces étapes.

Note: Contactez l'équipe d'assistance technique Cisco avant d'effectuer ces étapes.

1. Avant de réinitialiser la synchronisation SVN, désactivez d'abord PCRFClient02 à partir de svn_proxy dans la configuration haproxy :

1. Accédez à standby lb (lb02 dans cet exemple) et modifiez "/etc/haproxy/haproxy.cfg" et commentez la ligne en gras ci-dessous :
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. Accédez à lb actif (lb01 dans cet exemple) et entrez cette commande afin d'effectuer un basculement HA :
/etc/init.d/heartbeat restart

3. Vérifiez que « haproxy/memcached/VIP » est passé à l'autre lb (lb02 dans cet exemple).

4. Accédez à standby lb (maintenant lb01 est en veille) et modifiez "/etc/haproxy/haproxy.cfg" et commentez la ligne en gras :
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. Accédez à lb actif (maintenant lb02 est actif) et entrez cette commande afin d'effectuer un basculement HA :
/etc/init.d/heartbeat restart

6. Vérifiez que « haproxy/memcached/VIP » a été déplacé vers l'autre lb (lb01 dans cet exemple).

2. Sur PCRFClient02, entrez ces commandes afin de réinitialiser le répertoire du référentiel 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. Sur PCRFClient02, créez un fichier nommé « pre-revprop-change » dans le chemin "/var/www/svn/repos/hooks/" avec ces données :
#!/bin/sh

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

exit 0

4. Sur PCRFClient02, entrez ces commandes afin de modifier les autorisations du fichier créé précédemment et d'effectuer également les redémarrages du service 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. Sur PCRFClient01, entrez ces commandes afin d'exécuter la synchronisation de données SVN :
/usr/bin/svnsync init http://pcrfclient02/repos-proxy-sync

http:// pcrfclient01/repos-proxy-sync

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

Note: À la place de PCRFClient01 et PCRFClient02, indiquez le nom d'hôte approprié de PCRFClient01 et PCRFClient02, conformément à votre configuration.

6. Afin de vérifier si vos référentiels SVN sont synchronisés, complétez les étapes de vérification de la synchronisation SVN sur la machine virtuelle PCRFClient.

7. Activez PCRFClient02 à partir du proxy SVN dans la configuration du proxy. En gros, décommentez les lignes que vous avez commentées à l'étape 1.

1. Accédez à standby lb (lb02 dans cet exemple) et modifiez "/etc/haproxy/haproxy.cfg" et décommentez la ligne en gras :
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. Vérifiez que « haproxy/memcached/VIP » a été déplacé vers l'autre lb (lb02 dans cet exemple).
/etc/init.d/heartbeat restart

3. Vérifiez que « haproxy/memcached/VIP » a été déplacé vers l'autre lb (lb02 dans cet exemple).

4. Accédez à la ligne de secours (maintenant lb01 est en veille) et modifiez "/etc/haproxy/haproxy.cfg" et décommentez la ligne en gras ci-dessous :
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. Accédez à active lb (nowlb02 est actif) et entrez cette commande afin de terminer le basculement de la haute disponibilité :
/etc/init.d/heartbeat restart

6. Vérifiez que « haproxy/memcached/VIP » est passé à l'autre lb (lb01 dans cet exemple).

8. Sur PCRFClient01, activez le travail de synchronisation SVN :
crontab -e/usr/bin/svnsync sync http://pcrfclient02/repos-proxy-sync

Scripts

check_svn_sync.sh

Mettez ce script dans votre système CPS afin de vérifier la synchronisation SVN sur les machines virtuelles 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_dismatch.sh

Mettez ce script dans votre système CPS afin de surveiller les messages d'erreur liés à l'UUID SVN provenant des machines virtuelles QNS individuelles.

#!/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