In diesem Dokument wird beschrieben, wie das SVN-Repository (Subversion Control) zwischen PCRFClient01 und PCRFClient02 synchronisiert wird.
Alle Richtlinienkonfigurationen in Policy Builder (PB) werden als SVN-Repository gespeichert. Um eine hohe Verfügbarkeit (HA) zu erreichen, müssen Sie also über denselben SVN Universal Unique Identifier (UUID) für beide PCRFClient Virtual Machines (VMs) verfügen. Die Cisco Policy Suite (CPS) Version 7.X verfügt jedoch nicht über dieselbe UUID für alle PCRFClient-VMs. Das heißt, höhere CPS-Versionen haben die gleiche UUID. Es wurde ein Verbesserungsfehler eingegeben, die Cisco Bug-ID CSCuu85319. Sie können eine hohe Verfügbarkeit erreichen, wenn Sie in beiden PCRFClient0X-VMs dieselbe Versionsnummer haben.
Da die UUID für beide PCRFClient-VMs nicht identisch ist, geben Sie die folgenden Befehle ein:
svn info http://pcrfclient01/repos/configuration
svn info http://pcrfclient02/repos/configuration
Diese Quantum Network Suite (QNS)-Fehlerprotokolle können auftreten. Diese Fehlermeldungen können mit dem Skript svn_uuid_mismatch.sh überprüft werden. Dieses Skript wird am Ende dieses Artikels bereitgestellt.
==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'
Wie unten gezeigt, können Sie feststellen, dass die UUID-ID von VMs zu VMs verschieden ist, aber die Versionen müssen die gleichen bleiben. Wenn die SVN-Version in beiden PCRFClient-VMs identisch ist, ist die SVN-Repository-Synchronisierung vorhanden, und anschließend ist eine hohe Verfügbarkeit gewährleistet.
===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)
Im vorherigen Abschnitt wurde erläutert, wie die SVN-Repository-Synchronisierung überprüft wird. In diesem Abschnitt wird erläutert, wie die SVN-Synchronisierung behoben wird. Angenommen, PCRFClient01 ist primär, PCRFClient02 ist sekundär, und das PCRFClient02 SVN-Repository ist nicht synchronisiert.
Führen Sie die folgenden Schritte aus, um die Synchronisierung des PCRFClient02 SVN-Repositorys mit PCRFClient01 herzustellen:
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
Wenn Sperrfehler gemeldet werden, geben Sie diesen Befehl ein, und wiederholen Sie den Befehl svnsync:
/usr/bin/svn propdel svn:sync-lock --revprop -r 0 http:// pcrfclient02/repos-proxy-sync
Wenn die Fehler weiterhin auftreten, fahren Sie mit Reinitialize SVN Synchronization fort.
crontab -e
/usr/bin/svnsync sync http://pcrfclient02/repos-proxy-sync
Führen Sie diese Schritte nur aus, wenn in Schritt 4 im Abschnitt SVN-Repository-Synchronisierung ein Fehler aufgetreten ist. Wenn im vorherigen Abschnitt keine Fehler aufgetreten sind, können Sie diese Schritte ignorieren.
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
Bitte legen Sie dieses Skript in Ihr CPS-System, um die SVN-Synchronisierung zwischen PCRFClient-VMs zu überprüfen.
#!/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
Bitte legen Sie dieses Skript in Ihr CPS-System, um die SVN UUID-bezogenen Fehlermeldungen der einzelnen QNS VMs zu überwachen.
#!/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
Überarbeitung | Veröffentlichungsdatum | Kommentare |
---|---|---|
1.0 |
31-Aug-2015 |
Erstveröffentlichung |