Inhalt

Einführung

SVN UUID MISMATCH

Überprüfung der SVN-Synchronisierung zwischen PCRFClient-VMs

Beheben Sie die SVN-Repository-Synchronisierung.

Reinitivieren der SVN-Synchronisierung

Skripte

check_svn_sync.sh

svn_uuid_mismatch.sh

Einführung

In diesem Dokument wird beschrieben, wie das SVN-Repository (Subversion Control) zwischen PCRFClient01 und PCRFClient02 synchronisiert wird.

SVN UUID MISMATCH

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.

Überprüfung der SVN-Synchronisierung zwischen PCRFClient-VMs

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

Hinweis: Mit diesen Befehlen müssen Sie den genauen Hostnamen der VMs PCRFClient01 und PCRFClient02 angeben. Sie können auch das Skript check_svn_sync.sh verwenden, um zu überprüfen, ob das SVN-Repository über PCRFClient-VMs hinweg synchronisiert ist. Dieses Skript wird am Ende dieses Artikels bereitgestellt.

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)

Beheben Sie die SVN-Repository-Synchronisierung.

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:

1. Deaktivieren Sie auf PCRFClient01 den SVN-Synchronisierungsauftrag:
crontab -e

Comment this cron job entry:

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

Hinweis: Hier ist PCRFClient02 der Kundenhostname des PCRFClient02 VM.

2. Melden Sie sich bei PCRFClient02 an, bearbeiten Sie "/etc/httpd/conf.d/subversion.conf", und aktualisieren Sie es mit dem folgenden Text:
<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. Geben Sie auf dem PCRFClient02 VM diesen Befehl ein, um den HTTPD-Dienst neu zu starten.
service httpd restart

4. Geben Sie auf PCRFClient01 diesen Befehl ein, um die SVN-Daten zu synchronisieren. Die SVN-Repository-Synchronisierung kann je nach Anzahl und Größe der Revisionen eine gewisse Zeit in Anspruch nehmen.
/usr/bin/svnsync sync http://pcrfclient02/repos-proxy-sync

Hinweis: Hier ist PCRFClient02 der Kundenhostname von PCRFClient02 VM.

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.

5. Um zu überprüfen, ob die Versionsnummer für das SVN-Repository in PCRFClient01 und PCRFClient02 identisch ist, verwenden Sie das Skript check_svn_sync.sh oder den CLI-Befehl, der unter Überprüfen der SVN-Synchronisierung für das PCRFClient VM erwähnt wird.

6. Aktivieren Sie auf PCRFClient01 den SVN-Synchronisierungsauftrag:
crontab -e

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

Reinitivieren der SVN-Synchronisierung

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.

Hinweis: Wenden Sie sich an das technische Support-Team von Cisco, bevor Sie diese Schritte durchführen.

1. Bevor Sie die SVN-Synchronisierung neu initialisieren, deaktivieren Sie zunächst PCRFClient02 von svn_proxy in der Hufproxy-Konfiguration:

1. Wechseln Sie zum Standby lb (in diesem Beispiel lb02), ändern Sie "/etc/haproxy/haproxy.cfg", und kommentieren Sie die hier gezeigte Fettschrift:
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. Gehen Sie zu active lb (in diesem Beispiel lb01), und geben Sie diesen Befehl ein, um ein HA-Failover auszuführen:
/etc/init.d/heartbeat restart

3. Überprüfen Sie, ob "haproxy/memcached/VIP" zum anderen lb verschoben wurde (in diesem Beispiel lb02).

4. Gehen Sie zu Standby lb (jetzt lb01 ist Standby), ändern Sie "/etc/haproxy/haproxy.cfg", und kommentieren Sie die Fettschrift:
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. Wechseln Sie zu active lb (jetzt ist lb02 aktiv), und geben Sie diesen Befehl ein, um ein HA-Failover auszuführen:
/etc/init.d/heartbeat restart

6. Überprüfen Sie, ob "haproxy/memcached/VIP" zum anderen lb verschoben wurde (in diesem Beispiel lb01).

2. Geben Sie auf PCRFClient02 diese Befehle ein, um das SVN-Repository-Verzeichnis neu zu initialisieren:
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. Erstellen Sie auf PCRFClient02 eine Datei mit dem Namen "pre-revprop-change" im Pfad "/var/www/svn/repos/hooks/" mit folgenden Daten:
#!/bin/sh

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

exit 0

4. Geben Sie auf PCRFClient02 diese Befehle ein, um die Berechtigungen der zuvor erstellten Datei zu ändern, und führen Sie außerdem einen HTTPD-Dienstneustart durch:
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. Geben Sie auf PCRFClient01 die folgenden Befehle ein, um die SVN-Datensynchronisierung durchzuführen:
/usr/bin/svnsync init http://pcrfclient02/repos-proxy-sync

http:// pcrfclient01/repos-proxy-sync

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

Hinweis: Geben Sie anstelle von PCRFClient01 und PCRFClient02 den entsprechenden Hostnamen PCRFClient01 und PCRFClient02 gemäß der Konfiguration an.

6. Um zu überprüfen, ob Ihre SVN-Repositorys synchronisiert sind, führen Sie die Schritte unter Überprüfen der SVN-Synchronisierung zwischen PCRFClient VM aus.

7. Aktivieren Sie PCRFClient02 vom SVN-Proxy in der haproxy-Konfiguration. Nehmen Sie grundsätzlich keine Kommentare zu den Zeilen vor, die Sie in Schritt 1 kommentiert haben.

1. Wechseln Sie zu Standby lb (in diesem Beispiel lb02), ändern Sie "/etc/haproxy/haproxy.cfg", und entfernen Sie die Fettschrift:
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. Überprüfen Sie, ob "haproxy/memcached/VIP" zum anderen lb verschoben wurde (in diesem Beispiel lb02).
/etc/init.d/heartbeat restart

3. Überprüfen Sie, ob "haproxy/memcached/VIP" zum anderen lb verschoben wurde (in diesem Beispiel lb02).

4. Wechseln Sie zum Standby-LB (jetzt ist lb01 Standby), ändern Sie "/etc/haproxy/haproxy.cfg", und entfernen Sie den Kommentar zur hier gezeigten Fettschrift:
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. Wechseln Sie zu active lb (nowlb02 ist aktiv), und geben Sie diesen Befehl ein, um das HA-Failover abzuschließen:
/etc/init.d/heartbeat restart

6. Stellen Sie sicher, dass "haproxy/memcached/VIP" zum anderen lb verschoben wird (in diesem Beispiel lb01).

8. Aktivieren Sie auf PCRFClient01 den SVN-Synchronisierungsauftrag:
crontab -e/usr/bin/svnsync sync http://pcrfclient02/repos-proxy-sync

Skripte

check_svn_sync.sh

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

svn_uuid_mismatch.sh

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