Openstack 16.1 Director の導入を使用して Openstack 環境で Contrail データベースを JSON 形式でバックアップおよび復元する方法
このドキュメントでは、RedHat Openstack 16.1 directorの導入を使用して導入されたOpenstackオーケストレーション環境でContrail Networkingが実行されている場合、Contrailデータベース(CassandraとZookeeper)をJSON形式でバックアップおよび復元する方法を説明します。
Openstack 13 ベースまたは Ansible 導入者を使用して導入された Openstack オーケストレーション環境で Contrail Networking を導入する場合は、「 Openstack 13 または Ansible Deployer を使用して、Openstack 環境で JSON 形式で Contrail データベースをバックアップおよび復元する方法」を参照してください。
Contrail Networking は当初、Contrail Networking リリース 2008 で Openstack 16.1 director を導入して Openstack 環境でサポートされています。オーケストレーション プラットフォームと導入者における Contrail Networking リリース サポートのマトリックスについては、 Contrail Networking 対応プラットフォームを参照してください。
始める前に
同じ Contrail Networking リリースを実行するノードでは、バックアップと復元の手順を完了する必要があります。この手順は、Contrail Networking データベースのバックアップのみに使用されます。オーケストレーション システム データベースのバックアップ手順は含まれていません。
Contrail データベースの状態は OpenStack データベースなどの他のシステム データベースと関連付けられているため、すべてのシステムでデータベース バックアップの一貫性を保つ必要があります。ノースバウンド API に関連付けられたデータベース変更は、バックアップ操作を実行する前にすべてのシステムで停止する必要があります。例えば、HAproxy などのロード バランサー・レベルで、ノースバウンド API の外部 VIP をブロックすることができます。
JSON 形式のシンプルなデータベース バックアップ
この手順では、JSON 形式の単純なデータベース バックアップを提供します。この手順は、コントローラーノードの db_json_exim.py
config-api コンテナ内にある /usr/lib/python2.7/site-packages/cfgm_common
スクリプトを使用して実行されます。
このデータベースバックアップを実行するには、
コントローラーノードから、スクリプトを
db_json_exim.py
有効にします。(overcloud) [user@overcloud-contrailcontroller-0 heat-admin]# podman exec -it contrail_config_api bash (config-api)[user@overcloud-contrailcontroller-0 /]$ ls /usr/lib/python2.7/site-packages/cfgm_common/db_json_exim.py /usr/lib/python2.7/site-packages/cfgm_common/db_json_exim.py
構成ノードの 1 つにログインします。任意の構成ノードホストで /tmp/db-dump ディレクトリを作成します。
mkdir /tmp/db-dump
同じ設定ノードで、コンテナからホストにファイルをコピー
contrail-api.conf
します。podman cp contrail_config_api:/etc/contrail/contrail-api-0.conf /tmp/db-dump/contrail-api.conf
任意の設定ノードの Cassandra データベース インスタンスには、クラスタ内のすべての設定ノードに対する Cassandra データベースの完全なデータベースが含まれています。そのため、ステップ 2 および 3 は、1 つの設定ノードでのみ実行する必要があります。
すべての Contrail コントローラ ノードで、以下の Contrail 設定サービスを停止します。
systemctl stop tripleo_contrail_config_svc_monitor.service systemctl stop tripleo_contrail_config_device_manager.service systemctl stop tripleo_contrail_config_schema.service systemctl stop tripleo_contrail_config_api.service systemctl stop tripleo_contrail_config_nodemgr.service systemctl stop tripleo_contrail_config_database_nodemgr.service
このステップは、クラスタ内の各コントローラ ノードで実行する必要があります。
Contrail Analytics コンテナをホストするすべてのノードで、以下の分析サービスを停止します。
systemctl stop tripleo_contrail_analytics_kafka.service systemctl stop tripleo_contrail_analytics_snmp_nodemgr.service systemctl stop tripleo_contrail_analytics_alarmgen.service systemctl stop tripleo_contrail_analytics_alarm_nodemgr.service systemctl stop tripleo_contrail_analytics_topology.service systemctl stop tripleo_contrail_analytics_collector.service systemctl stop tripleo_contrail_analytics_nodemgr.service systemctl stop tripleo_contrail_analytics_snmp_collector.service systemctl stop tripleo_contrail_analytics_api.service
このステップは、クラスタ内の各分析ノードで実行する必要があります。
ステップ 2 と 3 を実行した構成ノードに戻ります。
コマンドを podman images 使用して、 config api イメージの名前またはIDを一覧表示します。
podman images | grep config-api
例:
(overcloud) [user@overcloud-contrailcontroller-0 db-dump]# podman images | grep config-api 192.168.24.1:8787/contrail/contrail-controller-config-api 2011.L1.297 2dcd2feaeed5 2 months ago 876 MB
同じ設定ノードから、スクリプトを/bin/bashディレクトリに向けて設定apiコンテナを
entrypoint.sh
起動し、ホストからコンテナ内の/tmp/db-dumpディレクトリをマッピングします。設定ノードで API サービスが開始されないようにするには、この手順を実行します。api-server 構成パラメーターとして使用する場合
cassandra_use_ssl
は、-v/etc/contrail/ssl:/etc/contrail/ssl:ro コマンド オプションを入力して、TLS 証明書を Contrail SSL ディレクトリーにマウントします。このマウントにより、TLS 認証が必要なエンドポイントを持つ環境でバックアップ手順が成功します。registry_name変数とcontainer_tag変数は、ステップ 6 と一致する必要があります。
podman run --rm -it -v /tmp/db-dump/:/tmp:Z -v /etc/contrail/ssl:/etc/contrail/ssl:ro --network host --entrypoint=/bin/bash registry_name/contrail-controller-config-api:container_tag
例:
podman run --rm -it -v /tmp/db-dump/:/tmp:Z -v /etc/contrail/ssl:/etc/contrail/ssl:ro --network host --entrypoint=/bin/bash 192.168.24.1:8787/contrail/contrail-controller-config-api:2011.L1.297
ステップ 7の設定ノードで作成されたコンテナから、スクリプトを
db_json_exim.py
使用して JSON 形式のデータをバックアップします。dbダンプファイルは、この設定ノードの /tmp/db-dump/ ディレクトリに保存されます。例:
(config-api)[user@overcloud-contrailcontroller-0 /]$ cd /usr/lib/python2.7/site-packages/cfgm_common (config-api)[user@overcloud-contrailcontroller-0 /usr/lib/python2.7/site-packages/cfgm_common]$ python db_json_exim.py --export-to /tmp/db-dump.json --api-conf /tmp/contrail-api.conf 2021-06-30 19:47:27,120 INFO: Cassandra DB dumped 2021-06-30 19:47:28,878 INFO: Zookeeper DB dumped 2021-06-30 19:47:28,895 INFO: DB dump wrote to file /tmp/db-dump.json
任意の設定ノードの Cassandra データベース インスタンスには、クラスタ内のすべての設定ノードに対する Cassandra データベースの完全なデータベースが含まれています。そのため、必要なのは、構成ノードの 1 つからステップ 4~6 までのみです。
(オプション。推奨)同じ設定ノードから コマンドを
cat /tmp/db-dump.json | python -m json.tool | less
入力して、より読みやすいバージョンのファイル転送を表示します。cat /tmp/db-dump.json | python -m json.tool | less
同じ設定ノードから、 config api コンテナから出ます。これでコンテナが停止します。
exit
各設定ノードで、以下の設定サービスを開始します。
systemctl start tripleo_contrail_config_svc_monitor.service systemctl start tripleo_contrail_config_device_manager.service systemctl start tripleo_contrail_config_schema.service systemctl start tripleo_contrail_config_api.service systemctl start tripleo_contrail_config_nodemgr.service systemctl start tripleo_contrail_config_database_nodemgr.service
この手順は、個々の設定ノードで実行する必要があります。
各分析ノードで、以下の分析サービスを開始します。
systemctl start tripleo_contrail_analytics_kafka.service systemctl start tripleo_contrail_analytics_snmp_nodemgr.service systemctl start tripleo_contrail_analytics_alarmgen.service systemctl start tripleo_contrail_analytics_alarm_nodemgr.service systemctl start tripleo_contrail_analytics_topology.service systemctl start tripleo_contrail_analytics_collector.service systemctl start tripleo_contrail_analytics_nodemgr.service systemctl start tripleo_contrail_analytics_snmp_collector.service systemctl start tripleo_contrail_analytics_api.service
このステップは、各分析ノードで実行する必要があります。
各設定ノードで、 コマンドを
contrail-status
入力して、サービスが または running 状態であることをactive確認します。メモ:読みやすくするために、一部のコマンド出力フィールドと出力フィールドが削除されています。表示される出力は、構成と分析サービスをホストする単一ノードからです。
contrail-status Pod Service Original Name State analytics api contrail-analytics-api running analytics collector contrail-analytics-collector running analytics nodemgr contrail-nodemgr running analytics provisioner contrail-provisioner running analytics redis contrail-external-redis running analytics-alarm alarm-gen contrail-analytics-alarm-gen running analytics-alarm kafka contrail-external-kafka running <some output removed for readability> == Contrail control == control: active nodemgr: active named: active dns: active == Contrail analytics-alarm == nodemgr: active kafka: active alarm-gen: active == Contrail database == nodemgr: active query-engine: active cassandra: active == Contrail analytics == nodemgr: active api: active collector: active == Contrail config-database == nodemgr: active zookeeper: active rabbitmq: active cassandra: active == Contrail webui == web: active job: active == Contrail analytics-snmp == snmp-collector: active nodemgr: active topology: active == Contrail config == svc-monitor: active nodemgr: active device-manager: active api: active schema: active
バックアップから JSON 形式でデータベースを復元する
この手順では、 JSON 形式の簡易データベース・バックアップで作成された単純なデータベース・バックアップ JSON ファイルを使用してシステムを復元する手順を示します。
バックアップ JSON ファイルからシステムを復元するには、次の手順に示します。
contrail-api.conf
コンテナから構成ノードのいずれかのホストにファイルをコピーします。podman cp contrail_config_api:/etc/contrail/contrail-api-0.conf /tmp/db-dump/contrail-api.conf
すべての Contrail コントローラ ノードで、以下の設定サービスを停止します。
systemctl stop tripleo_contrail_config_svc_monitor.service systemctl stop tripleo_contrail_config_device_manager.service systemctl stop tripleo_contrail_config_schema.service systemctl stop tripleo_contrail_config_api.service systemctl stop tripleo_contrail_config_nodemgr.service systemctl stop tripleo_contrail_config_database_nodemgr.service
Contrail Analytics コンテナをホストしているすべてのノードで、以下のサービスを停止します。
systemctl stop tripleo_contrail_analytics_kafka.service systemctl stop tripleo_contrail_analytics_snmp_nodemgr.service systemctl stop tripleo_contrail_analytics_alarmgen.service systemctl stop tripleo_contrail_analytics_alarm_nodemgr.service systemctl stop tripleo_contrail_analytics_topology.service systemctl stop tripleo_contrail_analytics_collector.service systemctl stop tripleo_contrail_analytics_nodemgr.service systemctl stop tripleo_contrail_analytics_snmp_collector.service systemctl stop tripleo_contrail_analytics_api.service
すべてのコントローラで Cassandra サービスを
config-db
停止します。systemctl stop tripleo_contrail_config_database.service
すべてのコントローラで Zookeeper サービスを停止します。
systemctl stop tripleo_contrail_config_zookeeper.service
すべてのコントローラでZookeeperのデータディレクトリをバックアップします。
cd /var/lib/contrail/config_zookeeper cp -aR version-2/ zookper-bkp.save
すべてのコントローラのZookeeperのデータディレクトリコンテンツを削除します。
rm -rf version-2
すべてのコントローラのCassandraデータディレクトリをバックアップします。
cd /var/lib/contrail/config_cassandra cp -aR data/ Cassandra_data-save
すべてのコントローラで Cassandra データ ディレクトリの内容を削除します。
rm -rf data/
すべてのコントローラで Zookeeper サービスを開始します。
systemctl start tripleo_contrail_config_zookeeper.service
すべてのコントローラで Cassandra サービスを開始します。
systemctl start tripleo_contrail_config_database.service
コマンドを podman images 使用して、 config api イメージの名前またはIDを一覧表示します。
podman image ls | grep config-api
例:
user@overcloud-contrailcontroller-0 heat-admin]# podman image ls | grep config-a 192.168.24.1:8787/contrail/contrail-controller-config-api 2011.L1.297 2dcd2feaeed5 1 months ago 876 MB
同じ設定ノードでイメージの名前またはIDを
config_api
使用して、新しいポッドマンコンテナを実行します。api-server 構成パラメーターとして使用する場合
cassandra_use_ssl
は、-v/etc/contrail/ssl:/etc/contrail/ssl:ro コマンド オプションを入力して、TLS 証明書を Contrail SSL ディレクトリーにマウントします。このマウントにより、TLS 認証が必要なエンドポイントを持つ環境で、このバックアップ手順が成功します。ステップ12の出力からregistry_nameとcontainer_tagを使用します。
podman run --rm -it -v /tmp/db-dump/:/tmp:Z -v /etc/contrail/ssl:/etc/contrail/ssl:ro --network host --entrypoint=/bin/bash <registry_name>/contrail-controller-config-api:<container tag>
例:
podman run --rm -it -v /tmp/db-dump/:/tmp:Z -v /etc/contrail/ssl:/etc/contrail/ssl:ro --network host --entrypoint=/bin/bash 192.168.24.1:8787/contrail/contrail-controller-config-api:2011.L1.297
同じ設定ノードで実行されている新しいコンテナ内のデータを復元します。
cd /usr/lib/python2.7/site-packages/cfgm_common python db_json_exim.py --import-from /tmp/db-dump.json --api-conf /tmp/contrail-api.conf
例:
cd /usr/lib/python2.7/site-packages/cfgm_common python db_json_exim.py --import-from /tmp/db-dump.json --api-conf /tmp/contrail-api.conf 2021-07-06 17:22:17,157 INFO: DB dump file loaded 2021-07-06 17:23:12,227 INFO: Cassandra DB restored 2021-07-06 17:23:14,236 INFO: Zookeeper DB restored
設定APIコンテナから出ます。これでコンテナが停止します。
exit
すべてのコントローラで設定サービスを開始します。
systemctl start tripleo_contrail_config_svc_monitor.service systemctl start tripleo_contrail_config_device_manager.service systemctl start tripleo_contrail_config_schema.service systemctl start tripleo_contrail_config_api.service systemctl start tripleo_contrail_config_nodemgr.service systemctl start tripleo_contrail_config_database_nodemgr.service
すべての分析ノードでサービスを開始します。
systemctl start tripleo_contrail_analytics_kafka.service systemctl start tripleo_contrail_analytics_snmp_nodemgr.service systemctl start tripleo_contrail_analytics_alarmgen.service systemctl start tripleo_contrail_analytics_alarm_nodemgr.service systemctl start tripleo_contrail_analytics_topology.service systemctl start tripleo_contrail_analytics_collector.service systemctl start tripleo_contrail_analytics_nodemgr.service systemctl start tripleo_contrail_analytics_snmp_collector.service systemctl start tripleo_contrail_analytics_api.service
各設定ノードの コマンドを
contrail-status
入力し、必要に応じて各分析ノードで サービスが active または running 状態であることを確認します。メモ:コンフィグノードの出力。読みやすくするために、一部のコマンド出力フィールドと出力フィールドが削除されています。
contrail-status Pod Service Original Name State config api contrail-controller-config-api running config device-manager contrail-controller-config-devicemgr running config dnsmasq contrail-controller-config-dnsmasq running config nodemgr contrail-nodemgr running config provisioner contrail-provisioner running config schema contrail-controller-config-schema running config stats contrail-controller-config-stats running <some output removed for readability> == Contrail control == control: active nodemgr: active named: active dns: active == Contrail database == nodemgr: active query-engine: active cassandra: active == Contrail config-database == nodemgr: active zookeeper: active rabbitmq: active cassandra: active == Contrail webui == web: active job: active == Contrail config == svc-monitor: active nodemgr: active device-manager: active api: active schema: active