المحتويات

المقدمة

SVN UUID غير متطابق

التحقق من مزامنة SVN عبر أجهزة VMs الافتراضية الخاصة ب PCRFClient

إصلاح مزامنة مستودع SVN

إعادة تهيئة مزامنة SVN

البرامج النصية

check_svn_sync.sh

svn_uid_mismatch.sh

المقدمة

يوضح هذا المستند كيفية مزامنة مستودع التحكم في النسخ الاحتياطية (SVN) بين PCRFClient01 و PCRFClient02.

SVN UUID غير متطابق

يتم تخزين جميع تكوينات النهج في منشئ النهج (PB) كمستودع SVN. لذلك، للحصول على توفر فائق (HA)، يلزمك الحصول على نفس معرف SVN الفريد العالمي (UUID) عبر كل من الأجهزة الظاهرية (VMs) ل PCRFClient. ومع ذلك، لا يتضمن الإصدار 7.x من Cisco Policy Suite (CPS) نفس UUID عبر أجهزة VMs PCRFClient. بمعنى أن إصدارات CPS الأعلى لها نفس UUID. تم إدخال خطأ تحسين، معرف تصحيح الأخطاء من Cisco CSCuu85319. يمكنك تحقيق HA إذا كان لديك نفس رقم المراجعة في كلا PCRFClient0X VMs.

التحقق من مزامنة SVN عبر أجهزة VMs الافتراضية الخاصة ب PCRFClient

بما أن UUID ليس هو نفسه عبر كلا من VMs PCRFClient، دخلت هذا أمر:

svn info http://pcrfclient01/repos/configuration

svn info http://pcrfclient02/repos/configuration

ملاحظة: باستخدام هذه الأوامر، يجب عليك إعطاء اسم المضيف المحدد ل PCRFClient01 و PCRFClient02 VMs. يمكنك أيضا إستخدام البرنامج النصي check_svn_sync.sh للتحقق مما إذا كان مستودع SVN متزامنا عبر VMs PCRFClient. هذا النص مقدم في نهاية هذه المقالة.

قد تلاحظ سجلات أخطاء مجموعة شبكة الكم (QNS) هذه. يمكن التحقق من رسائل الخطأ هذه باستخدام البرنامج النصي svn_uid_mismatch.sh. هذا النص مقدم في نهاية هذه المقالة.

==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'

كما هو موضح أدناه، يمكنك ملاحظة أن UUID مختلف عبر الأجهزة الافتراضية، ولكن يجب أن تظل الإصدارات كما هي. إذا كان إصدار SVN في كل من VMs الخاص ب PCRFClient متماثلا، فسيكون مزامنة مستودع SVN موجودا ومن ثم تصبح لديك إمكانية توفر عالية.

===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)

إصلاح مزامنة مستودع SVN

شرح القسم السابق كيفية التحقق من مزامنة مستودع SVN. يناقش هذا القسم كيفية إصلاح مزامنة SVN. بافتراض أن PCRFClient01 أساسي و PCRFClient02 ثانوي وأن مستودع PCRFClient02 SVN غير متزامن.

أتمت هذا steps in order to جعلت PCRFClient02 SVN مستودع يتزامن مع PCRFClient01:

1. في PCRFClient01، قم بتعطيل مهمة مزامنة SVN:
crontab -e

Comment this cron job entry:

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

ملاحظة: هنا، PCRFClient02 هو اسم مضيف العميل الخاص ب PCRFClient02 VM.

2. قم بتسجيل الدخول إلى PCRFClient02 وقم بتحرير "/etc/httpd/conf.d/subversion.conf" وتحديثه باستخدام هذا النص المزود بزلاج:
<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. على PCRFClient02 VM، أدخل هذا الأمر لإعادة تشغيل خدمة HTTPD.
service httpd restart

4. على PCRFClient01، أدخل هذا الأمر لمزامنة بيانات SVN. قد تستغرق مزامنة مستودع SVN وقتا معتمدا على عدد المراجعات وحجمها.
/usr/bin/svnsync sync http://pcrfclient02/repos-proxy-sync

ملاحظة: هنا، PCRFClient02 هو اسم مضيف العميل ل PCRFClient02 VM.

إذا تم الإبلاغ عن أخطاء التأمين، فأدخل هذا الأمر ثم أعد محاولة الأمر svnSync:

/usr/bin/svn propdel svn:sync-lock --revprop -r 0 http:// pcrfclient02/repos-proxy-sync

إذا كانت الأخطاء لا تزال مرئية، فقم بالمتابعة لإعادة تهيئة مزامنة SVN.

5. للتحقق من أن رقم المراجعة الخاص بمستودع SVN هو نفسه في PCRFClient01 و PCRFClient02، أستخدم الأمر check_svn_sync.sh أو الأمر CLI المذكور في التحقق من مزامنة SVN عبر VM الخاص ب PCRFClient.

6. في PCRFClient01، قم بتمكين مهمة مزامنة SVN:
crontab -e

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

إعادة تهيئة مزامنة SVN

قم بإجراء هذه الخطوات فقط إذا واجهت خطأ في الخطوة 4 في القسم إصلاح مزامنة مستودع SVN. إذا لم تواجه أي أخطاء في القسم السابق، يمكنك تجاهل هذه الخطوات.

ملاحظة: يمكنك الوصول إلى فريق الدعم الفني ل Cisco قبل تنفيذ هذه الخطوات.

1. قبل إعادة تهيئة مزامنة SVN، قم أولا بتعطيل PCRFClient02 من svn_proxy في تكوين الوكيل:

1. انتقل إلى LB في وضع الاستعداد (lb02 في هذا المثال) وعدل "/etc/haproxy/haproxy.cfg" وعلق على الخط المزود كما هو موضح هنا:
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. انتقل إلى lb نشط (lb01 في هذا المثال) وأدخل هذا الأمر in order to أنجزت HA خطأ تجاوز:
/etc/init.d/heartbeat restart

3. دققت أن "Haproxy/memaching/vip" حول إلى الآخر lb (lb02 في هذا مثال).

4. انتقل إلى LB في وضع الاستعداد (الآن LB01 في وضع الاستعداد) وعدل "/etc/haproxy/haproxy.cfg" وعلق خارج الخط المزود:
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. انتقل إلى lb نشط (الآن LB02 نشط) وأدخل هذا أمر in order to أنجزت HA خطأ:
/etc/init.d/heartbeat restart

6. دققت "Haproxy/memcache/vip" حولت إلى الآخر lb (lb01 في هذا مثال).

2. في PCRFClient02، أدخل هذه الأوامر لإعادة تهيئة دليل مستودع SVN:
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. على PCRFClient02، قم بإنشاء ملف باسم "pre-revprop-change" في المسار "/var/www/svn/repos/huks/" مع هذه البيانات:
#!/bin/sh

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

exit 0

4. في PCRFClient02، أدخل هذه الأوامر لتغيير أذونات الملف الذي تم إنشاؤه مسبقا وإجراء عمليات إعادة تشغيل خدمة HTTPD أيضا:
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. على PCRFClient01، أدخل هذه الأوامر لتنفيذ مزامنة بيانات SVN:
/usr/bin/svnsync init http://pcrfclient02/repos-proxy-sync

http:// pcrfclient01/repos-proxy-sync

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

ملاحظة: بدلا من PCRFClient01 و PCRFClient02، قم بتوفير اسم المضيف المناسب ل PCRFClient01 و PCRFClient02 وفقا للإعداد الخاص بك.

6. للتحقق مما إذا تم مزامنة مستودعات SVN أم لا، قم بإكمال الخطوات في التحقق من مزامنة SVN عبر VM PCRFClient.

7. قم بتمكين PCRFClient02 من وكيل SVN في تكوين الوكيل. قم بإلغاء التعليق على السطور التي قمت بالتعليق عليها في الخطوة 1.

1. انتقل إلى LB في وضع الاستعداد (lb02 في هذا المثال) وعدل "/etc/haproxy/haproxy.cfg" وألغي التعليق على الخط المزود:
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. دققت "Haproxy/memcache/vip" حولت إلى الآخر lb (lb02 في هذا مثال).
/etc/init.d/heartbeat restart

3. دققت "Haproxy/memcache/vip" حولت إلى الآخر lb (lb02 في هذا مثال).

4. انتقل إلى LB في وضع الاستعداد (الآن LB01 في وضع الاستعداد) وقم بتعديل "/etc/haproxy/haproxy.cfg" وإلغاء التعليق على الخط المزود كما هو موضح هنا:
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. انتقل إلى lb نشط (NowLB02 نشط) وأدخل هذا الأمر in order to أتمت ال HA تجاوز الفشل:
/etc/init.d/heartbeat restart

6. دققت أن "Haproxy/memaching/vip" حول إلى الآخر lb (lb01 في هذا مثال).

8. في PCRFClient01، قم بتمكين مهمة مزامنة SVN:
crontab -e/usr/bin/svnsync sync http://pcrfclient02/repos-proxy-sync

البرامج النصية

check_svn_sync.sh

الرجاء وضع هذا البرنامج النصي في نظام CPS للتحقق من مزامنة SVN عبر أجهزة VMs PCRFClient.

#!/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

الرجاء وضع هذا البرنامج النصي في نظام CPS الخاص بك لمراقبة رسائل الخطأ ذات الصلة بمعرف SVN من QNS VMs الفردية.

#!/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