In questo documento viene descritto come sincronizzare il repository SVN (Subversion Control) tra PCRFClient01 e PCRFClient02.
Tutte le configurazioni delle policy in Policy Builder (PB) vengono archiviate come repository SVN. Pertanto, per ottenere un'elevata disponibilità (HA), è necessario disporre dello stesso UUID (Universal Unique Identifier) SVN in entrambe le macchine virtuali (VM) client PCRFC. Tuttavia, Cisco Policy Suite (CPS) versione 7.X non ha lo stesso UUID nelle VM client PCRFC. In altre parole, le versioni CPS superiori hanno lo stesso UUID. È stato immesso un bug di miglioramento, l'ID bug Cisco CSCuu85319. È possibile ottenere HA se si ha lo stesso numero di revisione in entrambe le VM PCRFClient0X.
Poiché l'UUID non è lo stesso in entrambe le VM client PCRFC, immettere i seguenti comandi:
svn info http://pcrfclient01/repos/configuration
svn info http://pcrfclient02/repos/configuration
È possibile notare i seguenti log degli errori di Quantum Network Suite (QNS). Per controllare i messaggi di errore, usare lo script svn_uuid_mismatch.sh. Questo script viene fornito alla fine di questo articolo.
==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'
Come mostrato di seguito, è possibile osservare che l'UUID è diverso nelle VM, ma le versioni devono rimanere le stesse. Se la versione SVN in entrambe le VM client PCRFC è la stessa, la sincronizzazione del repository SVN è presente e di conseguenza si dispone di elevata 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 sezione precedente spiegava come controllare la sincronizzazione del repository SVN. In questa sezione viene descritto come correggere la sincronizzazione SVN. Si supponga che PCRFClient01 sia primario e che PCRFClient02 sia secondario e che il repository SVN PCRFClient02 non sia sincronizzato.
Completare questi passaggi per sincronizzare il repository SVN PCRFClient02 con 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
Se vengono segnalati errori di blocco, immettere questo comando e riprovare con il comando svnsync:
/usr/bin/svn propdel svn:sync-lock --revprop -r 0 http:// pcrfclient02/repos-proxy-sync
Se gli errori persistono, procedere con la reinizializzazione della sincronizzazione SVN.
crontab -e
/usr/bin/svnsync sync http://pcrfclient02/repos-proxy-sync
Eseguire questi passaggi solo se si verifica un errore nel passaggio 4 della sezione Correggere la sincronizzazione del repository SVN. Se nella sezione precedente non si verificano errori, è possibile ignorare questi passaggi.
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
Inserire questo script nel sistema CPS per controllare la sincronizzazione SVN tra le VM client PCRFC.
#!/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
Inserire questo script nel sistema CPS per monitorare i messaggi di errore relativi all'UUID SVN dalle singole VM QNS.
#!/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
Revisione | Data di pubblicazione | Commenti |
---|---|---|
1.0 |
31-Aug-2015 |
Versione iniziale |