Inhoud

Inleiding

SVN UID MISMATCH

Controleer VN-synchronisatie over PCRFC-client-VM’s

Verhelpen van de SVN-repositoresyndering

SVN-synchronisatie opnieuw initialiseren

Schriften

check_svn_sync.sh

svn_uid_mismatch.sh

Inleiding

In dit document wordt beschreven hoe de subversiecontroleserver (SVN) tussen PCRFClient01 en PCRFClient02 moet worden gesynchroniseerd.

SVN UID MISMATCH

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.

Controleer VN-synchronisatie over PCRFC-client-VM’s

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

Opmerking: Met deze opdrachten moet u de exacte hostnaam van de PClient01 en PCRFClient02 VMs geven. U kunt ook het script check_svn_sync.sh gebruiken om te controleren of de SVN-opslagplaats gesynchroniseerd is over PCRFCs-actieve VM's. Dit script wordt aan het einde van dit artikel verstrekt.

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)

Verhelpen van de SVN-repositoresyndering

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:

1. Op PCRFClient01, schakelt u de SVN sync-taak in:
crontab -e

Comment this cron job entry:

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

Opmerking: In dit geval is PCRFClient02 de naam van de klant host van de PCRFClient02 VM.

2. Meld u aan bij PCRFClient02 en bewerk "/etc/httpd/conf.d/subversion.conf" en update het met deze bolde tekst:
<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. Voer op de PCRFClient02 VM deze opdracht in om de HTTPD-service opnieuw te starten.
service httpd restart

4. Voer op PCRFClient01 deze opdracht in om de SVN-gegevens te synchroniseren. De synchronisatie van de SVN-gegevensbank kan tijd in beslag nemen afhankelijk van het aantal en de omvang van de herzieningen.
/usr/bin/svnsync sync http://pcrfclient02/repos-proxy-sync

Opmerking: In dit geval is PCRFClient02 de naam van de klant host van PCRFClient02 VM.

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.

5. Om te verifiëren dat het herzieningsnummer voor de SVN-gegevensbank hetzelfde is in PCRFClient01 en PCRFClient02, gebruik het check_svn_sync.sh-script of de CLI-opdracht die is vermeld in Controleer SVN-synchronisatie bij PCRFCclient-VM.

6. Schakel op PCRFClient01 de SVN sync-taak in:
crontab -e

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

SVN-synchronisatie opnieuw initialiseren

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.

Opmerking: Neem contact op met het Cisco Technical Support team voordat u deze stappen uitvoert.

1. Voordat u de SVN-sync opnieuw formatteert, moet u eerst PCRFClient02 uit svn_proxy in de haproxy-configuratie uitschakelen:

1. Ga naar stand-by lb (lb02 in dit voorbeeld) en wijzig "/etc/haproxy/haproxy.cfg" en becommentariëer de bolded line die hier wordt getoond:
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. Ga naar active lb (lb01 in dit voorbeeld) en voer deze opdracht in om een HA-failover te doen:
/etc/init.d/heartbeat restart

3. Controleer dat "haproxy/memcached/VIP" is verschoven naar de andere lb (lb02 in dit voorbeeld).

4. Ga naar standby lb (nu is lb01 stand-by) en wijzig "/etc/haproxy/haproxy.cfg" en becommentariëer de aangedekte lijn:
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. Ga naar actief lb (nu is lb02 actief) en voer deze opdracht in om een HA-failover te doen:
/etc/init.d/heartbeat restart

6. Controleer "haproxy/memcached/VIP" verschoven naar de andere lb (lb01 in dit voorbeeld).

2. Voer op PCRFClient02 deze opdrachten in om de SVN-gegevensbank opnieuw te initialiseren:
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. Maak op PCRFClient02 een bestand met de naam "pre-revprop-change" in het pad "/var/www/svn/repos/hooks/" met deze gegevens:
#!/bin/sh

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

exit 0

4. Voer op PCRFClient02 deze opdrachten in om de rechten van het eerder gemaakte bestand te wijzigen en voer ook de HTTP-service opnieuw uit:
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. Voer op PCRFClient01 deze opdrachten in om de synchronisatie van SVN-gegevens uit te voeren:
/usr/bin/svnsync init http://pcrfclient02/repos-proxy-sync

http:// pcrfclient01/repos-proxy-sync

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

Opmerking: Verstrek in plaats van PCRFClient01 en PCRFClient02 de juiste host-naam van PCRFClient01 en PCRFClient02 zoals bij uw instelling.

6. Om te controleren of uw VPN-bestanden gesynchroniseerd zijn, dient u de stappen in te vullen om te controleren of de VPN-synchronisatie over de PC-client-VM.

7. Schakel PCRFClient02 in van de SVN-proxy in de hyperproxyconfiguratie. Kortom, commentaar niet op de lijnen die je in stap 1 hebt uiteengezet.

1. Ga naar stand-by lb (lb02 in dit voorbeeld) en wijzig "/etc/haproxy/haproxy.cfg" en opmerking niet op de bolline:
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. Controleer "haproxy/memcached/VIP" verschoven naar de andere lb (lb02 in dit voorbeeld).
/etc/init.d/heartbeat restart

3. Controleer "haproxy/memcached/VIP" verschoven naar de andere lb (lb02 in dit voorbeeld).

4. Ga naar het standby lb (nu is lb01 standby) en wijzig "/etc/haproxy/haproxy.cfg" en opmerking niet over de boldlijn die hier wordt getoond:
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. Ga naar active lb (nu is lb02 actief) en voer deze opdracht in om de HA-failover te voltooien:
/etc/init.d/heartbeat restart

6. Controleer dat "haproxy/memcached/VIP" is verschoven naar de andere lb (lb01 in dit voorbeeld).

8. Schakel op PCRFClient01 de SVN sync-taak in:
crontab -e/usr/bin/svnsync sync http://pcrfclient02/repos-proxy-sync

Schriften

check_svn_sync.sh

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

svn_uid_mismatch.sh

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