In dit document wordt beschreven hoe de subversiecontroleserver (SVN) tussen PCRFClient01 en PCRFClient02 moet worden gesynchroniseerd.
Alle beleidsconfiguraties in beleidsbouwer (PB) worden opgeslagen als een SVN-opslagplaats. Om een hoge beschikbaarheid (HA) te hebben, moet u dus dezelfde SVN Universal Uniforme Identifier (UID) hebben voor beide PCRFC virtuele machines (VMs). Cisco Policy Suite (CPS) versie 7.X heeft echter niet dezelfde UUID voor PCRFC-client-VM’s. Dat wil zeggen dat hogere CPS-versies dezelfde UID hebben. Er is een verbeteringsbug ingevoerd, Cisco bug-ID CSCu85319. U kunt HA bereiken als u hetzelfde revisienummer hebt in beide PCRFClient0X VMs.
Aangezien de UUID niet hetzelfde is voor beide PCRFC-client-VM's, voert u deze opdrachten in:
svn info http://pcrfclient01/repos/configuration
svn info http://pcrfclient02/repos/configuration
Mogelijk ziet u deze QNS-foutmeldingen (Quantum Network suite). Deze foutmeldingen kunnen worden afgevinkt met het script svn_uid_mismatch.sh. Dit script wordt aan het einde van dit artikel verstrekt.
==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'
Zoals hieronder wordt getoond, is de UUID verschillend voor VM's, maar de versies moeten hetzelfde blijven. Als de SVN-versie in beide PCRFC-clientVM's hetzelfde is, is de SVN-opslagbundelsynchronisatie er en heeft u een hoge beschikbaarheid.
===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)
De vorige paragraaf legde uit hoe de synchronisatie van de SVN-opslagplaats moest worden gecontroleerd. In dit gedeelte wordt besproken hoe de VN-synchronisatie moet worden aangepast. Ga ervan uit dat PCRFClient01 primair is en PCRFClient02 secundair is en dat de PCRFClient02 SVN-opslagplaats niet aansluit.
Voltooi deze stappen om PCRFClient02 SVN-opslagplaats te koppelen aan 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
Als er vergrendelingsfouten zijn gemeld, voer dan deze opdracht in en probeer de svnsync-opdracht opnieuw:
/usr/bin/svn propdel svn:sync-lock --revprop -r 0 http:// pcrfclient02/repos-proxy-sync
Als de fouten nog steeds worden gezien, ga dan naar Reinitialiseren SVN-synchronisatie.
crontab -e
/usr/bin/svnsync sync http://pcrfclient02/repos-proxy-sync
Voer deze stappen alleen uit als u een fout in stap 4 in sectie Fix tegenkomt de SVN Repository Synchronization. Als u geen fouten in de vorige sectie tegenkomt, kunt u deze stappen negeren.
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
Plaats dit script in uw CPS-systeem om de SVN-synchronisatie tussen PCRFC-clientVM's te controleren.
#!/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
Plaats dit script in uw CPS-systeem om de SVN UID-gerelateerde foutmeldingen van de individuele QNS-VM's te controleren.
#!/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