Ce document décrit comment synchroniser le référentiel de contrôle de Subversion (SVN) entre PCRFClient01 et PCRFClient02.
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.
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
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)
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 :
crontab -e
Comment this cron job entry:
/usr/bin/svnsync sync http:// pcrfclient02/repos-proxy-sync
<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>
service httpd restart
/usr/bin/svnsync sync http://pcrfclient02/repos-proxy-sync
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.
crontab -e
/usr/bin/svnsync sync http://pcrfclient02/repos-proxy-sync
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.
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
/etc/init.d/heartbeat restart
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
/etc/init.d/heartbeat restart
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
#!/bin/sh
#/var/www/svn/repos/hooks/pre-revprop-change
exit 0
chmod 700 /var/www/svn/repos/hooks/pre-revprop-change
chown apache:apache /var/www/svn/repos/hooks/pre-revprop-change
service httpd restart
/usr/bin/svnsync init http://pcrfclient02/repos-proxy-sync
http:// pcrfclient01/repos-proxy-sync
/usr/bin/svnsync sync http:// pcrfclient02/repos-proxy-sync
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
/etc/init.d/heartbeat restart
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
/etc/init.d/heartbeat restart
crontab -e/usr/bin/svnsync sync http://pcrfclient02/repos-proxy-sync
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
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
Révision | Date de publication | Commentaires |
---|---|---|
1.0 |
31-Aug-2015 |
Première publication |