无线 : 思科 Wi-Fi 策略套件

SVN UUID不匹配和SVN数据同步

2016 年 10 月 27 日 - 机器翻译
其他版本: PDFpdf | 英语 (2016 年 4 月 21 日) | 反馈

简介

本文如何描述同步在PCRFClient01和PCRFClient02之间的颠覆控制(SVN)信息库。

贡献用Aravindhan Balasubramanian, Cisco TAC工程师。

SVN UUID不匹配

在策略创建人(PB)的所有策略配置存储作为SVN信息库。因此,为了有高可用性(HA)您需要有同一个SVN通用唯一标识符(UUID)在两个PCRFClient虚拟机间(VMs)。然而, Cisco策略套件(CPS)版本7.X没有在PCRFClient VMs间的同样UUID。即更高的CPS版本有同样UUID。增强bug被输入了, Cisco Bug ID CSCuu85319。如果有同一修订版号在两个PCRFClient0X VMs,您可能达到HA。

验证在PCRFClient VMs间的SVN同步

因为UUID不是相同的在两间PCRFClient VMs,请输入这些命令:

svn info http://pcrfclient01/repos/configuration
svn info http://pcrfclient02/repos/configuration

注意:用这些命令,您必须给予PCRFClient01和PCRFClient02 VMs的确切的主机名。您能也使用脚本check_svn_sync.sh为了证实SVN信息库是否在PCRFClient VMs间同步。此脚本提供在此条款结束时。

您也许注意这些Quantum网络套件(QNS)错误日志。这些错误消息可以检查与脚本svn_uuid_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在VMs间是不同的,但是版本必须依然是同样。如果在两PCRFClient VMs的SVN版本是同样,则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信息库是不同步的。

完成这些步骤为了做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命令验证在PCRFClient VM间的SVN同步
  6. 在PCRFClient01,请启用SVN同步工作:
    crontab -e
    /usr/bin/svnsync sync http://pcrfclient02/repos-proxy-sync

重初始化SVN同步

只有当遇到在步骤4的一个错误在部分修正SVN信息库同步,请执行这些步骤如果不遇到在前面部分的任何错误,您能略过这些步骤。

注意:在您执行这些步骤前,请提供援助对思科技术支持流动代课教师组。

  1. 在您重初始化SVN同步前,首先请禁用从svn_proxy的PCRFClient02在haproxy配置里:
    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)并且输入此命令为了执行HA故障切换:
      /etc/init.d/heartbeat restart
    3. 验证“haproxy/memcached/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是活跃的)并且输入此命令为了执行HA故障切换:
      /etc/init.d/heartbeat restart
    6. 验证“haproxy/memcached/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崔凡吉莱文件/var/www/svn/repos/hooks/”与此数据:
    #!/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信息库是否同步,请完成步骤验证在PCRFClient VM间的SVN同步
  7. 启用从SVN代理的PCRFClient02在haproxy配置里。基本上,请注释删除您在step1注释的线路。
    1. 去待机lb (在本例中的lb02)并且修改“/etc/haproxy/haproxy.cfg”和uncommentthe粗体的线路:
      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/memcached/VIP”被转移到另一lb (在本例中的lb02)。
      /etc/init.d/heartbeat restart 
    3. 验证“haproxy/memcached/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是活跃的)并且输入此命令为了完成HA故障切换:
      /etc/init.d/heartbeat restart
    6. 验证“haproxy/memcached/VIP”转移了到另一lb (在本例中的lb01)。
  8. 在PCRFClient01,请启用SVN同步工作:
    crontab -e/usr/bin/svnsync sync http://pcrfclient02/repos-proxy-sync

脚本

check_svn_sync.sh

请放置此脚本在您的CPS系统为了检查在PCRFClient VMs间的SVN同步。

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

请放置此脚本在您的CPS系统为了监控从个人QNS VMs的SVN UUID相关错误信息。

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


Document ID: 119326