ワイヤレス : Wi-Fi 向け Cisco Quantum ポリシー スイート

SVN UUID ミスマッチおよび SVN データ同期

2016 年 10 月 28 日 - 機械翻訳について
その他のバージョン: PDFpdf | 英語版 (2016 年 4 月 21 日) | フィードバック

概要

この資料に PCRFClient01 と PCRFClient02 間の破壊制御(SVN)リポジトリを同期する方法を記述されています。

著者:Cisco TAC エンジニア、Aravindhan Balasubramanian

SVN UUID ミスマッチ

Policy Builder (PB)のすべてのポリシー 設定は SVN リポジトリとして保存されます。 このように、ハイ アベイラビリティを持つため(HA) PCRFClient 仮想マシン(VM)の両方を渡る同じ SVN ユニバーサル固有の識別番号(UUID)がある必要がある。 ただし、Cisco ポリシー スイート(CPS)バージョン 7.X に PCRFClient VM を渡る同じ UUID がありません。 すなわち、より高く CPS バージョンに同じ UUID があります。 機能拡張 不具合は、Cisco バグ ID CSCuu85319 入りました。 両方の PCRFClient0X VM で同じリビジョン番号がある場合 HA を実現させる可能性があります。

PCRFClient VM を渡る SVN 同期を確認して下さい

UUID が両方を渡って同じ PCRFClient VM ではないので、これらのコマンドを入力して下さい:

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

: これらのコマンドで、PCRFClient01 および PCRFClient02 VM の正確なホスト名をつけなければなりません。 また SVN リポジトリが PCRFClient VM を渡って同期されるかどうか確認するためにスクリプト check_svn_sync.sh を使用できます。 このスクリプトはこの技術情報の端に提供されます。

これらのクォンタム ネットワーク スイート(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 が VM を渡って異なっている、しかしバージョンが変わらなければならないことを観察できます。 両方の PCRFClient VM の 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 リポジトリ 同期出会うときだけこれらのステップを実行して下さい 前のセクションのエラーを出会わない場合、これらのステップを無視できます。

: これらのステップを実行する前に Cisco テクニカル サポート チームに手を差し伸べて下さい。

  1. SVN 同期化の初期設定をやり直す前に、最初に haproxy 設定の svn_proxy からの PCRFClient02 をディセーブルにして下さい:
    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. 他の lb (この例の lb01)に移る「haproxy/memcached/VIP」を確認して下さい。
  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 で、パス「/var/www/svn/repos/hooks/」の「前 revprop 変更」と名付けられるこのデータでファイルを作成して下さい:
    #!/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. haproxy 設定の SVN プロキシからの PCRFClient02 を有効に して下さい。 基本的には、ステップ 1.でコメントにした行のコメントアウトを解除して下さい。
    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. 他の lb (この例の lb02)に移る「haproxy/memcached/VIP」を確認して下さい。
      /etc/init.d/heartbeat restart 
    3. 他の lb (この例の lb02)に移る「haproxy/memcached/VIP」を確認して下さい。
    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

PCRFClient VM を渡る SVN 同期をチェックするために CPS システムにこのスクリプトを置いて下さい。

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

ユーザー QNS VM からの SVN UUID 関連するエラー メッセージを監視するために CPS システムにこのスクリプトを置いて下さい。

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