Contrail 設定データベースのバックアップと復元
このドキュメントでは、Juju Charms を介して Canonical Openstack で導入された Contrail Networking の Contrail 設定データベース(Cassandra と Zookeeper)をバックアップおよび復元する方法について説明します。
バックアップと復元の手順は、同じ Contrail Networking リリースを実行しているノードに対して完了する必要があります。この手順は、Contrail Networking データベースのみをバックアップするために使用します。オーケストレーション システム データベースをバックアップする手順は含まれていません。
Contrail データベースの状態は OpenStack データベースなどの他のシステム データベースと関連付けられるため、データベースのバックアップはすべてのシステムで一貫している必要があります。バックアップ操作を実行する前に、ノースバウンド API に関連付けられているデータベースの変更をすべてのシステムで停止する必要があります。たとえば、ロード バランサー レベル (HAproxy など) でノースバウンド API の外部 VIP をブロックできます。
次の手順は、Ubuntu 16.04 LTS(Xenial Xerus)で実行されているJujuバージョン2.7およびバージョン2.3.7でテストされました。
さらに、この手順には、Juju マシン番号 (1、2、3) の例が含まれています。Jujuマシン番号に置き換える必要がありますJujuマシン番号は、ホストで次のコマンドを実行することで識別できます。
juju status contrail-controller | grep "^contrail-controller/" | awk '{print $4}'
構成データベースのバックアップ
手順に従って、構成データベースをバックアップします。
すべてのコマンドは、特に明記されていない限り、Jujuクライアントがインストールされているホストで実行されます。
db_manage.py
スクリプトはディザスタリカバリスクリプトです。このスクリプトの実行後にエラーが発生した場合は、ジュニパーネットワークスのサポートにお問い合わせください。
- スクリプト
db_manage.py
更新します。for i in juju status contrail-controller | grep "^contrail-controller/" | awk '{print $4}'; do juju ssh $i sudo docker exec contrail-controller curl -k https://raw.githubusercontent.com/tungstenfabric/tf-controller/master/src/config/api-server/vnc_cfg_api_server/db_manage.py --output /tmp/db_manage.py; done
- スクリプト
db_json_exim.py
更新します。for i in juju status contrail-controller | grep "^contrail-controller/" | awk '{print $4}'; do juju ssh $i sudo docker exec contrail-controller curl -k https://raw.githubusercontent.com/tungstenfabric/tf-controller/master/src/config/common/cfgm_common/db_json_exim.py --output /tmp/db_json_exim.py; done
スクリプト
db_json_exim.py
最新バージョンには、python futureライブラリが必要です。for i in `juju status contrail-controller | grep "^contrail-controller/" | awk '{print $4}'`; do juju ssh $i sudo docker exec contrail-controller pip install future; done
- contrail-controller アプリケーションの Juju エージェントを停止します。
for i in `juju status contrail-controller | grep '^contrail-controller/' | awk '{print $1}' | sed -e 's/^contrail-controller///'|sed -e s/\*//`; do juju ssh contrail-controller/$i sudo systemctl stop jujud-unit-contrail-controller-$i; done
各コントローラーノードで、
juju-status
コマンドを実行して、エージェントが 失われた 状態であることを確認します。$ juju status contrail-controller
- すべてのノードで Contrail 設定サービスを停止します。
for i in contrail-svc-monitor contrail-dns contrail-device-manager contrail-schema contrail-api contrail-control; do for j in 1 2 3; do juju ssh $j sudo docker exec contrail-controller systemctl stop $i; done; done
- contrailコントローラ ノードのステータスを確認します。 非アクティブ 状態でなければなりません。
for i in `juju status contrail-controller | grep "^contrail-controller/" | awk '{print $4}'`; do juju ssh $i sudo docker exec contrail-controller contrail-status; done == Contrail Config == contrail-api: inactive contrail-schema: inactive contrail-svc-monitor: inactive contrail-device-manager: inactive
- コントローラノードの 1 つで Contrail 設定 DB の整合性を確認します。
juju ssh 1 sudo docker exec contrail-controller python /tmp/db_manage.py check
- Contrail 設定 DB で
repair
コマンドを実行して、データを同期します。juju ssh 1 sudo docker exec contrail-controller nodetool repair
- データベースの状態を保存します。これは、後でプロシージャ後のデータベースの状態と比較するために必要になる場合があります。
for i in `juju status contrail-controller | grep "^contrail-controller/" | awk '{print $4}'`; do juju ssh $i sudo docker exec contrail-controller nodetool status; done
- コントローラノードの 1 つにログインし、Contrail Config DB のバックアップを取ります。
次のいずれかの方法に従うことができます。
スクリプトdb_json_exim.pyデフォルトでバックアップを取ります。
juju ssh 1 sudo docker exec contrail-controller python /usr/lib/python2.7/dist-packages/cfgm_common/db_json_exim.py --export-to /tmp/db-dump.json
手順 2でダウンロードしたdb_json_exim.pyスクリプトでバックアップを取ります。
juju ssh 1 sudo docker exec contrail-controller python /tmp/db_json_exim.py --export-to /tmp/db-dump.json
- データベース バックアップ ファイルをコンテナーからホストにコピーします。
juju ssh 1 sudo docker cp contrail-controller:/tmp/db-dump.json
- すべてのコントローラノードで Contrail 設定サービスを再起動します。
for i in contrail-control contrail-svc-monitor contrail-dns contrail-device-manager contrail-schema contrail-api; do for j in 1 2 3; do juju ssh $j sudo docker exec contrail-controller systemctl start $i; done; done
各コントローラーノードで
contrail-status
コマンドを実行して、サービスが アクティブ または バックアップ 状態であることを確認します。for i in `juju status | grep -e "^contrail-.[a-z]*/" | awk '{print $1}' | sed -e 's/\*//'`; do echo "----- $i -----"; TMP=`echo $i | sed -e 's//.*//'`; juju ssh $i sudo docker exec ${TMP} contrail-status; done
- Contrail-Controller アプリケーションの Juju エージェントを再起動します。
for i in `juju status contrail-controller | grep '^contrail-controller/' | awk '{print $1}' | sed -e 's/^contrail-controller///'`; do juju ssh contrail-controller/$i sudo systemctl start jujud-unit-contrail-controller-$i; done
Jujuクライアントが設定されているマシンから
juju status
コマンドを実行します。Jujuエージェントが アクティブ 状態であることを確認します。 - db dump json ファイルの論理構造を確認します。空でないことを確認してください。
ノード 1 には db ダンプが含まれています。
juju ssh 1 sudo docker exec contrail-controller cat /tmp/db-dump.json | jq .
db ダンプ ファイルに、環境の UUID と VM の IP アドレスの正しい構成が含まれていることを確認します。
juju ssh 1 sudo cat /tmp/db-dump.json | jq . |grep \”ref:virtual_machine: juju ssh 1 sudo cat /tmp/db-dump.json | jq . |grep __FEW__OF_IPs__
手記:環境に読み込まれた VM がない場合、上記のコマンドでは出力は表示されません。
構成データベースの復元
手順に従って、構成データベースを復元します。
- contrail-controller、contrail-analytics、contrail-analyticsdb アプリケーションの Juju エージェントを停止します。
for i in `juju status contrail-controller | grep '^contrail-controller/' | awk '{print $1}' | sed -e 's/^contrail-controller///;s/\*//'`; do juju ssh contrail-controller/$i sudo systemctl stop jujud-unit-contrail-controller-$i jujud-unit-contrail-analytics-$i jujud-unit-contrail-analyticsdb-$i; done
- すべてのコントローラノードで Contrail サービスを停止します。
for i in contrail-control contrail-svc-monitor contrail-dns contrail-device-manager contrail-schema contrail-api contrail-config-nodemgr contrail-control-nodemgr contrail-database; do for j in 1 2 3; do juju ssh $j sudo docker exec contrail-controller systemctl stop $i; done; done for i in contrail-topology contrail-analytics-nodemgr contrail-snmp-collector contrail-alarm-gen; do for j in 1 2 3; do juju ssh $j sudo docker exec contrail-analytics systemctl stop $i; done; done for i in datastax-agent confluent-kafka; do for j in 1 2 3; do juju ssh $j sudo docker exec contrail-analyticsdb systemctl stop $i; done; done for i in contrail-query-engine contrail-collector contrail-analytics-api redis-server; do for j in 1 2 3; do juju ssh $j sudo docker exec contrail-analytics systemctl stop $i; done; done
- 各コントローラーノードで
contrail-status
コマンドを実行し、サービスが 非アクティブな 状態であることを確認します。for i in `juju status | grep -e "^contrail-.[a-z]*/" | awk '{print $1}' | sed -e 's/\*//'`; do echo "----- $i -----"; TMP=`echo $i | sed -e 's//.*//'`; juju ssh $i sudo docker exec ${TMP} contrail-status; done
- すべてのコントローラーで Zookeeper データディレクトリのバックアップを取ります。
for j in 1 2 3; do juju ssh $j sudo docker exec contrail-controller systemctl stop zookeeper; done for j in 1 2 3; do juju ssh $j sudo docker exec contrail-controller tar -cvzf /tmp/backup_configdatabase_config_zookeeper.tgz /var/lib/zookeeper/version-2; done for j in 1 2 3; do juju ssh $j sudo docker exec contrail-controller systemctl start zookeeper; done
- コマンドを使用して、Zookeeper インスタンスの 1 つから現在のデータを消去
rmr
。for i in `juju ssh 1 sudo docker exec contrail-controller /usr/share/zookeeper/bin/zkCli.sh ls / | grep "^\[" | sed -e 's/\[//;s/\]//;s/,//g;s/\r//'`; do juju ssh 1 sudo docker exec contrail-controller /usr/share/zookeeper/bin/zkCli.sh rmr /$i; done
- すべてのコントローラーで Zookeeper サービスを停止します。
for j in 1 2 3; do juju ssh $j sudo docker exec contrail-controller systemctl stop zookeeper; done
- すべてのコントローラーから Zookeeper データディレクトリーの内容をクリーンアップします。
for j in 1 2 3; do juju ssh $j sudo docker exec contrail-controller "sh -c 'rm -rvf /var/lib/zookeeper/version-2/*'"; done
- すべてのコントローラから Cassandra データ ディレクトリをバックアップします。
for j in 1 2 3; do juju ssh $j sudo docker exec contrail-controller tar -cvzf /tmp/backup_configdatabase_config_cassandra.tgz /var/lib/cassandra; done
- すべてのコントローラから Cassandra データ ディレクトリの内容をクリーンアップします。
for j in 1 2 3; do juju ssh $j sudo docker exec contrail-controller "sh -c 'rm -rvf /var/lib/cassandra/data/*'"; done for j in 1 2 3; do juju ssh $j sudo docker exec contrail-controller "sh -c 'rm -rvf /var/lib/cassandra/commitlog/*'"; done
上記のコマンドを実行すると、古いパスワードが消去されます。
- 各コントローラのCassandra構成を一度に1つずつ変更して、パスワードをリセットします。
/etc/cassandra/cassandra.yamlファイルのauthenticator変数を編集します。
juju ssh <node> sudo docker exec -it contrail-controller vim /etc/cassandra/cassandra.yaml
authenticator: PasswordAuthenticatorをauthenticator: AllowAllAuthenticatorに置き換えてください。
db *
スクリプトなどの古い Contrail サービスが実行されていないことを確認します。古いサービスを見つけたら、それらを強制終了します。Docker コンテナの外部にある Contrail ノードで次のコマンドを実行します。
root:~# ps -fe |grep -i contrail | grep -v docker root 2305 2287 0 12:41 ? 00:00:11 python /tmp/db_json_exim.py --import-from /tmp/db-dump.json --api-conf /etc/contrail/contrail-api-dbrestore.conf root 5168 5150 0 12:43 ? 00:00:11 python /tmp/db_json_exim.py --import-from /tmp/db-dump.json --api-conf /etc/contrail/contrail-api-dbrestore.conf root 5871 5854 0 12:43 ? 00:00:11 python /tmp/db_json_exim.py --import-from /tmp/db-dump.json --api-conf /etc/contrail/contrail-api-dbrestore.conf root 13528 13511 0 12:47 ? 00:00:11 python /tmp/db_json_exim.py --import-from /tmp/db-dump.json --api-conf /etc/contrail/contrail-api-dbrestore.conf root 16826 16807 0 11:58 ? 00:00:13 python /tmp/db_json_exim.py --import-from /tmp/db-dump.json --api-conf /etc/contrail/contrail-api-dbrestore.conf root 29493 29473 0 12:56 ? 00:00:10 python /tmp/db_json_exim.py --import-from /tmp/db-dump.json --api-conf /etc/contrail/contrail-api-dbrestore.conf root 30810 30784 0 12:06 ? 00:00:12 python /tmp/db_json_exim.py --import-from /tmp/db-dump.json --api-conf /etc/contrail/contrail-api-dbrestore.conf --debug --verbose root 32675 32658 0 12:07 ? 00:00:12 python /tmp/db_json_exim.py --import-from /tmp/db-dump.json --api-conf /etc/contrail/contrail-api-dbrestore.conf root 49265 88219 0 17:48 pts/3 00:00:00 grep --color=auto -i contrail root 60141 60124 0 12:23 ? 00:00:12 python /tmp/db_json_exim.py --import-from /tmp/db-dump.json --api-conf /etc/contrail/contrail-api-dbrestore.conf root 60452 60435 0 12:23 ? 00:00:11 python /tmp/db_json_exim.py --import-from /tmp/db-dump.json --api-conf /etc/contrail/contrail-api-dbrestore.conf root 61231 54435 0 15:48 pts/1 00:00:00 less /etc/contrail/contrail-api.conf root 63507 63489 0 12:25 ? 00:00:11 python /usr/lib/python2.7/dist-packages/cfgm_common/db_json_exim.py --import-from /tmp/db-dump.json --api-conf /etc/contrail/contrail-api-dbrestore.conf root 67126 67109 0 12:27 ? 00:00:11 python /tmp/db_json_exim.py --import-from /tmp/db-dump.json --api-conf /etc/contrail/contrail-api-dbrestore.conf root 80449 80431 0 12:35 ? 00:00:12 python /tmp/db_json_exim.py --import-from /tmp/db-dump.json --api-conf /etc/contrail/contrail-api-dbrestore.conf root 85457 7860 0 16:54 ? 00:00:00 /bin/sh -c contrail-api root 85458 85457 0 16:54 ? 00:00:04 /usr/bin/python /usr/bin/contrail-api root 86585 86567 0 12:38 ? 00:00:11 python /tmp/db_json_exim.py --import-from /tmp/db-dump.json --api-conf /etc/contrail/contrail-api-dbrestore.conf
- すべてのコントローラで Contrail-Database と Zookeeper サービスを再起動します。
for i in contrail-database zookeeper; do for j in 1 2 3; do juju ssh $j sudo docker exec contrail-controller systemctl start $i; done; done
- Zookeeper サービスのステータスを確認します。
juju ssh 1 sudo docker exec contrail-controller usr/share/zookeeper/bin/zkCli.sh ls /
- Cassandra サービスの状態を確認します。
for i in `juju status contrail-controller | grep "^contrail-controller/" | awk '{print $4}'`; do juju ssh $i sudo docker exec contrail-controller nodetool status; done
root@(controller):/# nodetool status Datacenter: datacenter1 ======================= Status=Up/Down |/ State=Normal/Leaving/Joining/Moving -- Address Load Tokens Owns (effective) Host ID Rack UN 100.x.x.x 1.15 MiB 256 100.0% eeb0f764-xxxx-4ca6-xxxx-84829624d588 rack1 UN 100.x.x.x 1.15 MiB 256 100.0% d6cf381c-xxxx-4208-xxxx-5916f09da6a2 rack1 UN 100.x.x.x 1.15 MiB 256 100.0% ffee7451-xxxx-4058-xxxx-5efe9f1286f1 rack1
nodetool status
コマンドの詳細については、https://docs.datastax.com/en/archived/cassandra/3.0/cassandra/tools/toolsStatus.html を参照してください。 - 構成 DB のバックアップをコピーします。
for j in 1 2 3; do juju ssh $j sudo docker cp contrail-controller:/tmp/backup_configdatabase_config_zookeeper.tgz .; done for j in 1 2 3; do juju ssh $j sudo docker cp contrail-controller:/tmp/backup_configdatabase_config_cassandra.tgz .; done
- 構成 DB を復元します。
- db を復元するための一時的な contrail-api.conf ファイルを準備します。
juju ssh 1 sudo docker exec contrail-controller cp /etc/contrail/contrail-api.conf /tmp/contrail-api-dbrestore.conf
- contrail-api.conf ファイルのcassandra_password とcassandra_userを変更します。
juju ssh 1 sudo docker exec -it contrail-controller vim /tmp/contrail-api-dbrestore.conf
[CASSANDRA] cassandra_password = cassandra cassandra_user = cassandra
- /tmp/db-dump/ db-dump.jsonファイルからデータベースをインポートします。
次のいずれかの方法に従うことができます。
デフォルトでdb_json_exim.pyスクリプトでデータベースをインポートします。
juju ssh 1 sudo docker exec contrail-controller python /usr/lib/python2.7/dist-packages/cfgm_common/db_json_exim.py --import-from /tmp/db-dump.json --api-conf /tmp/contrail-api-dbrestore.conf
ダウンロードしたdb_json_exim.pyスクリプトでデータベースをインポートします。
juju ssh 1 sudo docker exec contrail-controller python /tmp/db_json_exim.py --import-from /tmp/db-dump.json --api-conf /tmp/contrail-api-dbrestore.conf
エラーが発生した場合は、手順 5 から構成データベースを復元する手順を繰り返します。
- db を復元するための一時的な contrail-api.conf ファイルを準備します。
- ノード間で Cassandra データを同期します。
juju ssh 1 sudo docker exec contrail-controller nodetool status juju ssh 1 sudo docker exec contrail-controller nodetool repair
- 各コントローラのCassandra構成を一度に1つずつ変更して、パスワードをリセットします。
/etc/cassandra/cassandra.yamlファイルのauthenticator変数を編集します。
juju ssh <node> sudo docker exec -it contrail-controller vim /etc/cassandra/cassandra.yaml
authenticator: AllowAllAuthenticatorをauthenticator: PasswordAuthenticatorに置き換えてください。
- 任意のコントローラノードで Contrail ユーザーを作成します。
root@(controller):/tmp/taj# cqlsh 100.x.108.1 9041 -u cassandra -p cassandra Connected to ContrailConfigDB at 100.x.108.1:9041. [cqlsh 5.0.1 | Cassandra 3.11.2 | CQL spec 3.4.4 | Native protocol v4] Use HELP for help. cassandra@cqlsh> list roles; role | super | login | options -----------+-------+-------+--------- cassandra | True | True | {} (1 rows) cassandra@cqlsh> CREATE USER IF NOT EXISTS controller WITH PASSWORD '00108521aaa2410aaa44da5dd5a863a3' AND SUPERUSER = true; cassandra@cqlsh> list roles; role | super | login | options ------------+-------+-------+--------- cassandra | True | True | {} controller | True | True | {} CASSANDRA_ADDR=`juju ssh contrail-controller/0 sudo docker exec contrail-controller ss -l | grep 9041 | awk '{print $5}' | sed -e 's/:/ /'` CASSANDRA_PASS=`juju ssh contrail-controller/0 sudo docker exec contrail-controller cat /etc/contrail/contrail-api.conf | grep cassandra_password | sed -e 's/^.*=[ ]*//'| sed -e 's/\r//g'` CQL_QUERY="CREATE ROLE controller with SUPERUSER = true AND LOGIN = true and PASSWORD = '${CASSANDRA_PASS}';" DB_QUERY="cqlsh ${CASSANDRA_ADDR} -u cassandra -p cassandra -e \"${CQL_QUERY}\"" juju ssh contrail-controller/0 "sudo docker exec contrail-controller ${DB_QUERY}"
- Contrail ユーザーが他のコントローラノードで使用可能かどうかを確認します。
CASSANDRA_ADDR=`juju ssh contrail-controller/0 sudo docker exec contrail-controller ss -l | grep 9041 | awk '{print $5}' | sed -e 's/:/ /'` CASSANDRA_PASS=`juju ssh contrail-controller/0 sudo docker exec contrail-controller cat /etc/contrail/contrail-api.conf | grep cassandra_password | sed -e 's/^.*=[ ]*//'| sed -e 's/\r//g'` CQL_QUERY="list roles;" DB_QUERY="cqlsh ${CASSANDRA_ADDR} -u cassandra -p cassandra -e '${CQL_QUERY}'" juju ssh contrail-controller/0 "sudo docker exec contrail-controller ${DB_QUERY}"
これらのノードで作成されたContrailユーザーが表示されない場合は、すべてのコントローラーノードで system_auth キースペースのレプリケーション係数を確認してください。
- レプリケーション係数は、次のいずれかの方法で確認します。
nodetool
コマンドを使用する。juju ssh 1 sudo docker exec contrail-controller nodetool status
出力では、各ノードがトークンとパーティションを 100% 所有していることを示す必要があります。
Cassandra db.
CASSANDRA_ADDR=`juju ssh contrail-controller/0 sudo docker exec contrail-controller ss -l | grep 9041 | awk '{print $5}' | sed -e 's/:/ /'` CASSANDRA_PASS=`juju ssh contrail-controller/0 sudo docker exec contrail-controller cat /etc/contrail/contrail-api.conf | grep cassandra_password | sed -e 's/^.*=[ ]*//'| sed -e 's/\r//g'` CQL_QUERY="select * from system_schema.keyspaces;" DB_QUERY="cqlsh ${CASSANDRA_ADDR} -u controller -p ${CASSANDRA_PASS} -e '${CQL_QUERY}'" juju ssh contrail-controller/0 "sudo docker exec contrail-controller ${DB_QUERY}" deployer@infra1:~$ juju ssh contrail-controller/0 "sudo docker exec contrail-controller ${DB_QUERY}" keyspace_name | durable_writes | replication ----------------------+----------------+------------------------------------------------------------------------------------- system_auth | True | {'class': 'org.apache.cassandra.locator.SimpleStrategy', 'replication_factor': '3'} system_schema | True | {'class': 'org.apache.cassandra.locator.LocalStrategy'} svc_monitor_keyspace | True | {'class': 'org.apache.cassandra.locator.SimpleStrategy', 'replication_factor': '3'} to_bgp_keyspace | True | {'class': 'org.apache.cassandra.locator.SimpleStrategy', 'replication_factor': '3'} system_distributed | True | {'class': 'org.apache.cassandra.locator.SimpleStrategy', 'replication_factor': '3'} system | True | {'class': 'org.apache.cassandra.locator.LocalStrategy'} config_db_uuid | True | {'class': 'org.apache.cassandra.locator.SimpleStrategy', 'replication_factor': '3'} dm_keyspace | True | {'class': 'org.apache.cassandra.locator.SimpleStrategy', 'replication_factor': '3'} system_traces | True | {'class': 'org.apache.cassandra.locator.SimpleStrategy', 'replication_factor': '2'} useragent | True | {'class': 'org.apache.cassandra.locator.SimpleStrategy', 'replication_factor': '3'} (10 rows)
system_auth パラメーターは 3 replication_factorでなければなりません。
replication_factorが 3 に設定されていない場合は、次のコマンドを実行します。
CQL_QUERY="ALTER KEYSPACE system_auth WITH replication = {'class': 'org.apache.cassandra.locator.SimpleStrategy', 'replication_factor': '3'};" DB_QUERY="cqlsh ${CASSANDRA_ADDR} -u controller -p ${CASSANDRA_PASS} -e \"${CQL_QUERY}\"" juju ssh contrail-controller/0 "sudo docker exec contrail-controller ${DB_QUERY}"
- すべてのコントローラノードで Contrail サービスを再起動します。
for i in contrail-svc-monitor contrail-dns contrail-device-manager contrail-schema contrail-api contrail-config-nodemgr contrail-control-nodemgr contrail-control; do for j in 1 2 3; do juju ssh $j sudo docker exec contrail-controller systemctl start $i; done; done for i in contrail-topology contrail-analytics-nodemgr contrail-snmp-collector contrail-alarm-gen; do for j in 1 2 3; do juju ssh $j sudo docker exec contrail-analytics systemctl start $i; done; done for i in datastax-agent confluent-kafka; do for j in 1 2 3; do juju ssh $j sudo docker exec contrail-analyticsdb systemctl start $i; done; done for i in contrail-collector contrail-analytics-api redis-server contrail-query-engine; do for j in 1 2 3; do juju ssh $j sudo docker exec contrail-analytics systemctl start $i; done; done
- 各コントローラーノードで
contrail-status
コマンドを入力して、サービスが アクティブ 状態または バックアップ 状態であることを確認します。for i in `juju status | grep -e "^contrail-.[a-z]*/" | awk '{print $1}' | sed -e 's/\*//'`; do echo "----- $i -----"; TMP=`echo $i | sed -e 's//.*//'`; juju ssh $i sudo docker exec ${TMP} contrail-status; done
- contrail-controller、contrail-analytics、contrail-analyticsdbアプリケーション用のJujuエージェントを再起動します。
for i in `juju status contrail-controller | grep '^contrail-controller/' | awk '{print $1}' | sed -e 's/^contrail-controller///'`; do juju ssh contrail-controller/$i sudo systemctl start jujud-unit-contrail-controller-$i jujud-unit-contrail-analytics-$i jujud-unit-contrail-analyticsdb-$i; done
- Zookeeper の状態を確認します。
juju ssh 1 sudo docker exec contrail-controller /usr/share/zookeeper/bin/zkCli.sh ls /
- すべてのコントローラーノードのログファイルにエラーがないか確認します。
db_manage.py
スクリプトを使用してデータベースを確認します。juju ssh 1 sudo docker exec contrail-controller python /tmp/db_manage.py check root(controller):~# python db_manage.py check 2020-06-15 20:25:29,714 INFO: (v1.31) Checker check_zk_mode_and_node_count: Success 2020-06-15 20:25:30,095 INFO: (v1.31) Checker check_cassandra_keyspace_replication: Success 2020-06-15 20:25:31,025 INFO: (v1.31) Checker check_obj_mandatory_fields: Success 2020-06-15 20:25:32,537 INFO: (v1.31) Checker check_orphan_resources: Success 2020-06-15 20:25:33,963 INFO: (v1.31) Checker check_fq_name_uuid_match: Success 2020-06-15 20:25:33,963 WARNING: Be careful, that check can return false positive errors if stale FQ names and stale resources were not cleaned before. Run at least commands 'clean_obj_missing_mandatory_fields', 'clean_orphan_resources' and 'clean_stale_fq_names' before. 2020-06-15 20:25:34,707 INFO: (v1.31) Checker check_duplicate_fq_name: Success 2020-06-15 20:25:34,776 INFO: (v1.31) Checker check_route_targets_routing_instance_backrefs: Success 2020-06-15 20:25:35,384 INFO: (v1.31) Checker check_subnet_uuid: Success 2020-06-15 20:25:35,830 INFO: (v1.31) Checker check_subnet_addr_alloc: Success 2020-06-15 20:25:36,216 INFO: (v1.31) Checker check_route_targets_id: Success 2020-06-15 20:25:36,261 INFO: (v1.31) Checker check_virtual_networks_id: Success 2020-06-15 20:25:36,315 INFO: (v1.31) Checker check_security_groups_id: Success