Cómo hacer copias de seguridad y restaurar bases de datos de Contrail en formato JSON en entornos Openstack con los implementadores de Openstack 13 o Ansible
En este documento se muestra cómo realizar copias de seguridad y restaurar las bases de datos de Contrail (Cassandra y Zookeeper) en formato JSON cuando Contrail Networking se ejecuta en entornos orquestados por Openstack que se implementaron con un implementador basado en Openstack 13 o en Ansible. Para obtener una lista de los entornos orquestados por Openstack que se implementan con implementadores basados en Openstack 13 o Ansible, consulte la matriz de plataformas compatibles con Contrail Networking.
Si está implementando Contrail Networking en un entorno orquestado por Openstack que se implementó con un implementador basado en Openstack 16, consulte Cómo hacer copias de seguridad y restaurar bases de datos de Contrail en formato JSON en entornos Openstack mediante Openstack 16.1 Deployer.
Antes de empezar
El procedimiento de copia de seguridad y restauración debe completarse para los nodos que ejecutan la misma versión de Contrail Networking. El procedimiento se utiliza únicamente para realizar copias de seguridad de las bases de datos de Contrail Networking; No incluye instrucciones para realizar copias de seguridad de las bases de datos del sistema de orquestación.
Las copias de seguridad de bases de datos deben ser coherentes en todos los sistemas, ya que el estado de la base de datos Contrail está asociado a otras bases de datos del sistema, como las bases de datos de OpenStack. Los cambios en la base de datos asociados con las API de northbound deben detenerse en todos los sistemas antes de realizar cualquier operación de copia de seguridad. Por ejemplo, puede bloquear la VIP externa para las API en dirección norte en el nivel del equilibrador de carga, como HAproxy.
Copia de seguridad simple de la base de datos en formato JSON
Este procedimiento proporciona una copia de seguridad sencilla de la base de datos en formato JSON. Este procedimiento se realiza mediante el script ubicado en el /usr/lib/python2.7/site-packages/cfgm_common
nodo en el db_json_exim.py
controlador.
Para realizar esta copia de seguridad de la base de datos:
Inicie sesión en uno de los nodos de configuración. Cree el directorio / tmp/db-dump en cualquiera de los hosts del nodo de configuración.
mkdir /tmp/db-dump
En el mismo nodo de configuración, copie el archivo de Ansible Deployer y el
contrail-api.conf
archivo decontrail-api-0.conf
Red Hat Openstack Deployer del contenedor al host.Implementador de Ansible:
docker cp config_api_1:/etc/contrail/contrail-api-0.conf /tmp/db-dump/
Red Hat Openstack Deployer:
docker cp contrail_config_api:/etc/contrail/contrail-api.conf /tmp/db-dump/
La instancia de base de datos de Cassandra en cualquier nodo de configuración incluye la base de datos de Cassandra completa para todos los nodos de configuración del clúster. Por lo tanto, los pasos 1 y 2 solo deben realizarse en un nodo de configuración.
Detenga los siguientes servicios de configuración de Docker en todos los nodos de configuración de Contrail.
Implementador de Ansible:
docker stop config_svcmonitor_1 docker stop config_devicemgr_1 docker stop config_schema_1 docker stop config_api_1
Red Hat Openstack Deployer:
docker stop contrail_config_svc_monitor docker stop contrail_config_device_manager docker stop contrail_config_schema docker stop contrail_config_api
Este paso se debe realizar en cada nodo de configuración individual del clúster.
Vuelva al nodo de configuración donde realizó los pasos 1 y 2.
Enumere la imagen de Docker para buscar el nombre o el ID de la imagen de la API de configuración .
docker image ls | grep config-api
Ejemplo:
docker image ls | grep config-api hub.juniper.net/contrail/contrail-controller-config-api 1909.30-ocata c9d757252a0c 4 months ago 583MB
Desde el mismo nodo de configuración, inicie el contenedor de la API de configuración apuntando el
entrypoint.sh
script a / bin/bash y asignando / tmp/db-dump desde el host al directorio /tmp dentro del contenedor. Realice este paso para asegurarse de que los servicios de API no se inician en el nodo de configuración.Introduzca la opción de comando -v /etc/contrail/ssl:/ etc/contrail/ssl:ro cuando
cassandra_use_ssl
se utilice como parámetro de configuración del servidor api para asegurarse de que los certificados TLS estén montados en el directorio SSL de Contrail. Este montaje garantiza que el procedimiento de copia de seguridad se realice correctamente en entornos con puntos de conexión que requieren autenticación TLS.Las variables registry_name y container_tag deben coincidir con el paso 4.
docker run --rm -it -v /tmp/db-dump/:/tmp/ -v /etc/contrail/ssl:/etc/contrail/ssl:ro --network host --entrypoint=/bin/bash <registry_name>/contrail-controller-config-api:<container_tag>
Ejemplo:
docker run --rm -it -v /tmp/db-dump/:/tmp/ -v /etc/contrail/ssl:/etc/contrail/ssl:ro --network host --entrypoint=/bin/bash hub.juniper.net/contrail/contrail-controller-config-api:1909.30-ocata
Desde el contenedor docker creado en el nodo de configuración en el paso 5, use el script para hacer una copia de seguridad de los
db_json_exim.py
datos en formato JSON. El archivo de volcado de db se guardará en / tmp/db-dump/ en este nodo de configuración.cd /usr/lib/python2.7/site-packages/cfgm_common python db_json_exim.py --export-to /tmp/db-dump.json --api-conf /tmp/contrail-api-0.conf
La instancia de base de datos de Cassandra en cualquier nodo de configuración incluye la base de datos de Cassandra completa para todos los nodos de configuración del clúster. Por lo tanto, sólo tiene que realizar los pasos 4 a 6 desde uno de los nodos de configuración.
(Opcional. Recomendado) Desde el mismo nodo de configuración, escriba el
cat /tmp/db-dump.json | python -m json.tool | less
comando para ver una versión más legible de la transferencia de archivos.cat /tmp/db-dump.json | python -m json.tool | less
Desde el mismo nodo de configuración, salga del contenedor de la API de configuración . Esto detendrá el contenedor.
exit
Inicie los siguientes servicios de configuración en todos los nodos de configuración de Contrail.
Implementador de Ansible:
docker start config_api_1 docker start config_schema_1 docker start config_svcmonitor_1 docker start config_devicemgr_1
Red Hat Openstack Deployer:
docker start contrail_config_api docker start contrail_config_schema docker start contrail_config_svc_monitor docker start contrail_config_device_manager
Este paso se debe realizar en cada nodo de configuración individual.
En cada nodo de configuración, escriba el
contrail-status
comando para confirmar que los servicios se encuentran en los active estados o running .Nota:Algunos campos de salida y salida de comandos se eliminan para facilitar la lectura. La salida que se muestra proviene de un nodo que aloja servicios de configuración y análisis.
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
Ejemplos: copias de seguridad simples de bases de datos en formato JSON
Estos ejemplos ilustran el proceso para crear una copia de seguridad de base de datos simple en formato JSON tanto en un entorno de despliegue de Ansible como en un entorno de despliegue de Red Hat Openstack.
En cada ejemplo, se realiza una copia de seguridad de un clúster con tres nodos de configuración—control_config1, control_config2y control_config3—. Todas las tareas que deben realizarse en un único nodo de configuración se realizan en control-config1. Las tareas deben realizarse en el orden mostrado.
Entorno de implementación de Ansible:
## control_config1 ## mkdir /tmp/db-dump docker cp config_api_1:/etc/contrail/contrail-api.conf /tmp/db-dump/ docker stop config_svcmonitor_1 docker stop config_devicemgr_1 docker stop config_schema_1 docker stop config_api_1 ## control_config2 ## docker stop config_svcmonitor_1 docker stop config_devicemgr_1 docker stop config_schema_1 docker stop config_api_1 ## control_config3 ## docker stop config_svcmonitor_1 docker stop config_devicemgr_1 docker stop config_schema_1 docker stop config_api_1 ## control_config1 ## docker run --rm -it -v /tmp/db-dump/:/tmp/ -v /etc/contrail/ssl:/etc/contrail/ssl:ro --network host --entrypoint=/bin/bash hub.juniper.net/contrail/contrail-controller-config-api:1909.30-ocata cd /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 cat /tmp/db-dump.json | python -m json.tool | less exit docker start config_api_1 docker start config_schema_1 docker start config_svcmonitor_1 docker start config_devicemgr_1 contrail-status ## control_config2 ## docker start config_api_1 docker start config_schema_1 docker start config_svcmonitor_1 docker start config_devicemgr_1 contrail-status ## control_config3 ## docker start config_api_1 docker start config_schema_1 docker start config_svcmonitor_1 docker start config_devicemgr_1 contrail-status
Entorno de Red Hat Openstack Deployer:
## control_config1 ## mkdir /tmp/db-dump docker cp contrail_config_api:/etc/contrail/contrail-api.conf /tmp/db-dump/ docker stop contrail_config_svc_monitor docker stop contrail_config_device_manager docker stop contrail_config_schema docker stop contrail_config_api ## control_config2 ## docker stop contrail_config_svc_monitor docker stop contrail_config_device_manager docker stop contrail_config_schema docker stop contrail_config_api ## control_config3 ## docker stop contrail_config_svc_monitor docker stop contrail_config_device_manager docker stop contrail_config_schema docker stop contrail_config_api ## control_config1 ## docker run --rm -it -v /tmp/db-dump/:/tmp/ -v /etc/contrail/ssl:/etc/contrail/ssl:ro --network host --entrypoint=/bin/bash hub.juniper.net/contrail/contrail-controller-config-api:1909.30-ocata cd /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 cat /tmp/db-dump.json | python -m json.tool | less exit docker start contrail_config_api docker start contrail_config_schema docker start contrail_config_svc_monitor docker start contrail_config_device_manager contrail-status ## control_config2 ## docker start contrail_config_api docker start contrail_config_schema docker start contrail_config_svc_monitor docker start contrail_config_device_manager contrail-status ## control_config3 ## docker start contrail_config_api docker start contrail_config_schema docker start contrail_config_svc_monitor docker start contrail_config_device_manager contrail-status
Restaurar base de datos desde la copia de seguridad en formato JSON
Este procedimiento proporciona los pasos para restaurar un sistema mediante el archivo JSON de copia de seguridad de base de datos simple que se creó en Copia de seguridad simple de base de datos en formato JSON.
Para restaurar un sistema a partir de un archivo JSON de copia de seguridad:
Copie el
contrail-api.conf
archivo del contenedor al host en cualquiera de los nodos de configuración.Implementador de Ansible:
docker cp config_api_1:/etc/contrail/contrail-api-0.conf /tmp/db-dump/
Red Hat Openstack Deployer:
docker cp contrail_config_api:/etc/contrail/contrail-api.conf /tmp/db-dump/
Detenga los servicios de configuración en todos los controladores.
Implementador de Ansible:
docker stop config_svcmonitor_1 docker stop config_devicemgr_1 docker stop config_schema_1 docker stop config_api_1 docker stop config_nodemgr_1 docker stop config_database_nodemgr_1 docker stop analytics_snmp_snmp-collector_1 docker stop analytics_snmp_topology_1 docker stop analytics_alarm_alarm-gen_1 docker stop analytics_api_1 docker stop analytics_collector_1 docker stop analytics_alarm_kafka_1
Red Hat Openstack Deployer: nodo que aloja contenedores de Contrail Config:
docker stop contrail_config_svc_monitor docker stop contrail_config_device_manager docker stop contrail_config_schema docker stop contrail_config_api docker stop contrail_config_nodemgr docker stop contrail_config_database_nodemgr
Red Hat Openstack Deployer: nodo que aloja contenedores de Contrail Analytics:
docker stop contrail_analytics_snmp_collector docker stop contrail_analytics_topology docker stop contrail_analytics_alarmgen docker stop contrail_analytics_api docker stop contrail_analytics_collector docker stop contrail_analytics_kafka
Detenga el servicio Cassandra en todos los
config-db
controladores.Implementador de Ansible:
docker stop config_database_cassandra_1
Red Hat Openstack Deployer:
docker stop contrail_config_database
Detenga el servicio Zookeeper en todos los controladores.
Implementador de Ansible:
docker stop config_database_zookeeper_1
Red Hat Openstack Deployer:
docker stop contrail_config_zookeeper
Haga una copia de seguridad del directorio de datos de Zookeeper en todos los controladores.
Implementador de Ansible:
cd /var/lib/docker/volumes/config_database_config_zookeeper/ cp -R _data/version-2/ version-2-save
Red Hat Openstack Deployer:
cd /var/lib/docker/volumes/config_zookeeper/ cp -R _data/version-2/ version-2-save
Elimine el contenido del directorio de datos de Zookeeper en todos los controladores.
rm -rf _data/version-2/*
Haga una copia de seguridad del directorio de datos de Cassandra en todos los controladores.
Implementador de Ansible:
cd /var/lib/docker/volumes/config_database_config_cassandra/ cp -R _data/ Cassandra_data-save
Red Hat Openstack Deployer:
cd /var/lib/docker/volumes/config_cassandra/ cp -R _data/ Cassandra_data-save
Elimine el contenido del directorio de datos de Cassandra en todos los controladores.
rm -rf _data/*
Inicie el servicio Zookeeper en todos los controladores.
Implementador de Ansible:
docker start config_database_zookeeper_1
Red Hat Openstack Deployer:
docker start contrail_config_zookeeper
Inicie el servicio Cassandra en todos los controladores.
Implementador de Ansible:
docker start config_database_cassandra_1
Red Hat Openstack Deployer:
docker start contrail_config_database
Enumere la imagen de la ventana acoplable para buscar el nombre o el ID de la
config-api
imagen en el nodo de configuración.docker image ls | grep config-api
Ejemplo:
docker image ls | grep config-api hub.juniper.net/contrail/contrail-controller-config-api 1909.30-ocata c9d757252a0c 4 months ago 583MB
Ejecute un nuevo contenedor docker con el nombre o el ID de la
config_api
imagen en el mismo nodo de configuración.Introduzca la opción de comando -v /etc/contrail/ssl:/ etc/contrail/ssl:ro cuando
cassandra_use_ssl
se utilice como parámetro de configuración del servidor api para asegurarse de que los certificados TLS estén montados en el directorio SSL de Contrail. Este montaje garantiza que este procedimiento de copia de seguridad se realice correctamente en entornos con puntos de conexión que requieren autenticación TLS.Utilice el registry_name y el container_tag del resultado del paso 11.
docker run --rm -it -v /tmp/db-dump/:/tmp/ -v /etc/contrail/ssl:/etc/contrail/ssl:ro --network host --entrypoint=/bin/bash <registry_name>/contrail-controller-config_api:<container tag>
Ejemplo
docker run --rm -it -v /tmp/db-dump/:/tmp/ -v /etc/contrail/ssl:/etc/contrail/ssl:ro --network host --entrypoint=/bin/bash hub.juniper.net/contrail/contrail-controller-config-api:1909.30-ocata
Restaure los datos en una nueva ventana acoplable en ejecución en el mismo nodo de configuración.
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
Salga del contenedor de la API de configuración . Esto detendrá el contenedor.
exit
Inicie los servicios de configuración en todos los controladores.
Implementador de Ansible:
docker start config_svcmonitor_1 docker start config_devicemgr_1 docker start config_schema_1 docker start config_api_1 docker start config_nodemgr_1 docker start config_database_nodemgr_1 docker start analytics_snmp_snmp-collector_1 docker start analytics_snmp_topology_1 docker start analytics_alarm_alarm-gen_1 docker start analytics_api_1 docker start analytics_collector_1 docker start analytics_alarm_kafka_1
Red Hat Openstack Deployer: nodo que aloja contenedores de Contrail Config:
docker start contrail_config_svc_monitor docker start contrail_config_device_manager docker start contrail_config_schema docker start contrail_config_api docker start contrail_config_nodemgr docker start contrail_config_database_nodemgr
Red Hat Openstack Deployer: nodo que aloja contenedores de Contrail Analytics:
docker start contrail_analytics_snmp_collector docker start contrail_analytics_topology docker start contrail_analytics_alarmgen docker start contrail_analytics_api docker start contrail_analytics_collector docker start contrail_analytics_kafka
Escriba el
contrail-status
comando en cada nodo de configuración y, cuando corresponda, en cada nodo de análisis para confirmar que los servicios están en los active estados o running .Nota:Resultado mostrado para un nodo de configuración. Algunos campos de salida y salida de comandos se eliminan para facilitar la lectura.
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
Ejemplo: Cómo restaurar una base de datos mediante la copia de seguridad JSON (entorno de Ansible Deployer)
En este ejemplo se muestra cómo restaurar las bases de datos de tres controladores conectados a la base de datos de configuración de Contrail (config-db). En este ejemplo se supone que un archivo de copia de seguridad JSON de las bases de datos se creó previamente siguiendo las instrucciones proporcionadas en Copia de seguridad simple de bases de datos en formato JSON. La red se implementó con Ansible y los tres controladores (nodec53, nodec54 y nodec55) tienen direcciones IP independientes.
## Make db-dump directory. Copy contrail-api.conf to db-dump directory. ## root@nodec54 ~]# mkdir /tmp/db-dump root@nodec54 ~]# docker cp config_api_1:/etc/contrail/contrail-api.conf /tmp/db-dump/ ## Stop Configuration Services on All Controllers ## [root@nodec53 ~]# docker stop config_schema_1 [root@nodec53 ~]# docker stop config_api_1 [root@nodec53 ~]# docker stop config_svcmonitor_1 [root@nodec53 ~]# docker stop config_devicemgr_1 [root@nodec53 ~]# docker stop config_nodemgr_1 [root@nodec53 ~]# docker stop config_database_nodemgr_1 [root@nodec53 ~]# docker stop analytics_snmp_snmp-collector_1 [root@nodec53 ~]# docker stop analytics_snmp_topology_1 [root@nodec53 ~]# docker stop analytics_alarm_alarm-gen_1 [root@nodec53 ~]# docker stop analytics_api_1 [root@nodec53 ~]# docker stop analytics_collector_1 [root@nodec53 ~]# docker stop analytics_alarm_kafka_1 [root@nodec54 ~]# # docker stop config_schema_1 [root@nodec54 ~]# docker stop config_api_1 [root@nodec54 ~]# docker stop config_svcmonitor_1 [root@nodec54 ~]# docker stop config_devicemgr_1 [root@nodec54 ~]# docker stop config_nodemgr_1 [root@nodec54 ~]# docker stop config_database_nodemgr_1 [root@nodec54 ~]# docker stop analytics_snmp_snmp-collector_1 [root@nodec54 ~]# docker stop analytics_snmp_topology_1 [root@nodec54 ~]# docker stop analytics_alarm_alarm-gen_1 [root@nodec54 ~]# docker stop analytics_api_1 [root@nodec54 ~]# docker stop analytics_collector_1 [root@nodec54 ~]# docker stop analytics_alarm_kafka_1 [root@nodec55 ~]# docker stop config_schema_1 [root@nodec55 ~]# docker stop config_api_1 [root@nodec55 ~]# docker stop config_svcmonitor_1 [root@nodec55 ~]# docker stop config_devicemgr_1 [root@nodec55 ~]# docker stop config_nodemgr_1 [root@nodec55 ~]# docker stop config_database_nodemgr_1 [root@nodec55 ~]# docker stop analytics_snmp_snmp-collector_1 [root@nodec55 ~]# docker stop analytics_snmp_topology_1 [root@nodec55 ~]# docker stop analytics_alarm_alarm-gen_1 [root@nodec55 ~]# docker stop analytics_api_1 [root@nodec55 ~]# docker stop analytics_collector_1 [root@nodec55 ~]# docker stop analytics_alarm_kafka_1 ## Stop Cassandra ## [root@nodec53 ~]# docker stop config_database_cassandra_1 [root@nodec54 ~]# docker stop config_database_cassandra_1 [root@nodec55 ~]# docker stop config_database_cassandra_1 ## Stop Zookeeper ## [root@nodec53 ~]# docker stop config_database_zookeeper_1 [root@nodec54 ~]# docker stop config_database_zookeeper_1 [root@nodec55 ~]# docker stop config_database_zookeeper_1 ## Backup Zookeeper Directories Before Deleting Zookeeper Data Directory Contents ## [root@nodec53 _data]# cd /var/lib/docker/volumes/config_database_config_zookeeper/ [root@nodec53 config_database_config_zookeeper]# cp -R _data/version-2/ version-2-save [root@nodec53 config_database_config_zookeeper]# rm -rf _data/version-2/* [root@nodec54 _data]# cd /var/lib/docker/volumes/config_database_config_zookeeper/ [root@nodec54 config_database_config_zookeeper]# cp -R _data/version-2/ version-2-save [root@nodec54 config_database_config_zookeeper]# rm -rf _data/version-2/* [root@nodec55 _data]# cd /var/lib/docker/volumes/config_database_config_zookeeper/ [root@nodec55 config_database_config_zookeeper]# cp -R _data/version-2/ version-2-save [root@nodec55 config_database_config_zookeeper]# rm -rf _data/version-2/* ## Backup Cassandra Directory Before Deleting Cassandra Data Directory Contents ## [root@nodec53 ~]# cd /var/lib/docker/volumes/config_database_config_cassandra/ [root@nodec53 config_database_config_cassandra]# cp -R _data/ Cassandra_data-save [root@nodec53 config_database_config_cassandra]# rm -rf _data/* [root@nodec54 ~]# cd /var/lib/docker/volumes/config_database_config_cassandra/ [root@nodec54 config_database_config_cassandra]# cp -R _data/ Cassandra_data-save [root@nodec54 config_database_config_cassandra]# rm -rf _data/* [root@nodec55 ~]# cd /var/lib/docker/volumes/config_database_config_cassandra/ [root@nodec55 config_database_config_cassandra]# cp -R _data/ Cassandra_data-save [root@nodec55 config_database_config_cassandra]# rm -rf _data/* ## Start Zookeeper ## [root@nodec53 ~]# docker start config_database_zookeeper_1 [root@nodec54 ~]# docker start config_database_zookeeper_1 [root@nodec55 ~]# docker start config_database_zookeeper_1 ## Start Cassandra ## [root@nodec53 ~]# docker start config_database_cassandra_1 [root@nodec54 ~]# docker start config_database_cassandra_1 [root@nodec55 ~]# docker start config_database_cassandra_1 ## Run Docker Image & Mount Contrail TLS Certificates to Contrail SSL Directory ## [root@nodec54 ~]# docker image ls | grep config-api hub.juniper.net/contrail/contrail-controller-config-api 1909.30-ocata c9d757252a0c 4 months ago 583MB [root@nodec54 ~]# docker run --rm -it -v /tmp/db-dump/:/tmp/ -v /etc/contrail/ssl:/etc/contrail/ssl:ro --network host --entrypoint=/bin/bash hub.juniper.net/contrail/contrail-controller-config-api:1909.30-ocata ## Restore Data in New Docker Containers ## (config_api_1)[root@nodec54 /root]$ cd /usr/lib/python2.7/site-packages/cfgm_common/ (config_api_1)[root@nodec54 /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 ## Start Configuration Services ## [root@nodec53 ~]# docker start config_schema_1 [root@nodec53 ~]# docker start config_svcmonitor_1 [root@nodec53 ~]# docker start config_devicemgr_1 [root@nodec53 ~]# docker start config_nodemgr_1 [root@nodec53 ~]# docker start config_database_nodemgr_1 [root@nodec53 ~]# docker start config_api_1 [root@nodec53 ~]# docker start analytics_snmp_snmp-collector_1 [root@nodec53 ~]# docker start analytics_snmp_topology_1 [root@nodec53 ~]# docker start analytics_alarm_alarm-gen_1 [root@nodec53 ~]# docker start analytics_api_1 [root@nodec53 ~]# docker start analytics_collector_1 [root@nodec53 ~]# docker start analytics_alarm_kafka_1 [root@nodec54 ~]# docker start config_schema_1 [root@nodec54 ~]# docker start config_svcmonitor_1 [root@nodec54 ~]# docker start config_devicemgr_1 [root@nodec54 ~]# docker start config_nodemgr_1 [root@nodec54 ~]# docker start config_database_nodemgr_1 [root@nodec54 ~]# docker start config_api_1 [root@nodec54 ~]# docker start analytics_snmp_snmp-collector_1 [root@nodec54 ~]# docker start analytics_snmp_topology_1 [root@nodec54 ~]# docker start analytics_alarm_alarm-gen_1 [root@nodec54 ~]# docker start analytics_api_1 [root@nodec54 ~]# docker start analytics_collector_1 [root@nodec54 ~]# docker start analytics_alarm_kafka_1 [root@nodec55 ~]# docker start config_schema_1 [root@nodec55 ~]# docker start config_svcmonitor_1 [root@nodec55 ~]# docker start config_devicemgr_1 [root@nodec55 ~]# docker start config_nodemgr_1 [root@nodec55 ~]# docker start config_database_nodemgr_1 [root@nodec55 ~]# docker start config_api_1 [root@nodec55 ~]# docker start analytics_snmp_snmp-collector_1 [root@nodec55 ~]# docker start analytics_snmp_topology_1 [root@nodec55 ~]# docker start analytics_alarm_alarm-gen_1 [root@nodec55 ~]# docker start analytics_api_1 [root@nodec55 ~]# docker start analytics_collector_1 [root@nodec55 ~]# docker start analytics_alarm_kafka_1 ## Confirm Services are Active ## [root@nodec53 ~]# contrail-status [root@nodec54 ~]# contrail-status [root@nodec55 ~]# contrail-status
Ejemplo: Cómo restaurar una base de datos utilizando la copia de seguridad JSON (Red Hat Openstack Deployer Environment)
En este ejemplo se muestra cómo restaurar las bases de datos desde un entorno que se implementó con Red Hat Openstack e incluye tres nodos de configuración—config1, config2y config3—conectados a la base de datos de configuración de Contrail (config-db). Todos los pasos que deben realizarse desde un único nodo de configuración se realizan desde config1.
El entorno también contiene tres nodos de análisis—analytics1, analytics2y analytics3—para proporcionar servicios de análisis.
En este ejemplo se supone que un archivo de copia de seguridad JSON de las bases de datos se creó previamente siguiendo las instrucciones proporcionadas en Copia de seguridad simple de bases de datos en formato JSON.
## Make db-dump directory. Copy contrail-api.conf to db-dump directory. ## [root@config1 ~]# mkdir /tmp/db-dump [root@config1 ~]# docker cp config_api_1:/etc/contrail/contrail-api.conf /tmp/db-dump/ ## Stop Configuration Services on All Config Nodes ## [root@config1 ~]# docker stop contrail_config_svc_monitor [root@config1 ~]# docker stop contrail_config_device_manager [root@config1 ~]# docker stop contrail_config_schema [root@config1 ~]# docker stop contrail_config_api [root@config1 ~]# docker stop contrail_config_nodemgr [root@config1 ~]# docker stop contrail_config_database_nodemgr [root@config2 ~]# docker stop contrail_config_svc_monitor [root@config2 ~]# docker stop contrail_config_device_manager [root@config2 ~]# docker stop contrail_config_schema [root@config2 ~]# docker stop contrail_config_api [root@config2 ~]# docker stop contrail_config_nodemgr [root@config2 ~]# docker stop contrail_config_database_nodemgr [root@config3 ~]# docker stop contrail_config_svc_monitor [root@config3 ~]# docker stop contrail_config_device_manager [root@config3 ~]# docker stop contrail_config_schema [root@config3 ~]# docker stop contrail_config_api [root@config3 ~]# docker stop contrail_config_nodemgr [root@config3 ~]# docker stop contrail_config_database_nodemgr ## Stop Analytics Services on All Analytics Nodes ## [root@analytics1 ~]# docker stop contrail_analytics_snmp_collector [root@analytics1 ~]# docker stop contrail_analytics_topology [root@analytics1 ~]# docker stop contrail_analytics_alarmgen [root@analytics1 ~]# docker stop contrail_analytics_api [root@analytics1 ~]# docker stop contrail_analytics_collector [root@analytics1 ~]# docker stop contrail_analytics_kafka [root@analytics2 ~]# docker stop contrail_analytics_snmp_collector [root@analytics2 ~]# docker stop contrail_analytics_topology [root@analytics2 ~]# docker stop contrail_analytics_alarmgen [root@analytics2 ~]# docker stop contrail_analytics_api [root@analytics2 ~]# docker stop contrail_analytics_collector [root@analytics2 ~]# docker stop contrail_analytics_kafka [root@analytics3 ~]# docker stop contrail_analytics_snmp_collector [root@analytics3 ~]# docker stop contrail_analytics_topology [root@analytics3 ~]# docker stop contrail_analytics_alarmgen [root@analytics3 ~]# docker stop contrail_analytics_api [root@analytics3 ~]# docker stop contrail_analytics_collector [root@analytics3 ~]# docker stop contrail_analytics_kafka ## Stop Cassandra ## [root@config1 ~]# docker stop contrail_config_database [root@config2 ~]# docker stop contrail_config_database [root@config3 ~]# docker stop contrail_config_database ## Stop Zookeeper ## [root@config1 ~]# docker stop contrail_config_zookeeper [root@config2 ~]# docker stop contrail_config_zookeeper [root@config3 ~]# docker stop contrail_config_zookeeper ## Backup Zookeeper Directories Before Deleting Zookeeper Data Directory Contents ## [root@config1 _data]# cd /var/lib/docker/volumes/config_zookeeper/ [root@config1 config_zookeeper]# cp -R _data/version-2/ version-2-save [root@config1 config_zookeeper]# rm -rf _data/version-2/* [root@config2 _data]# cd /var/lib/docker/volumes/config_zookeeper/ [root@config2 config_zookeeper]# cp -R _data/version-2/ version-2-save [root@config2 config_zookeeper]# rm -rf _data/version-2/* [root@config3 _data]# cd /var/lib/docker/volumes/config_zookeeper/ [root@config3 config_zookeeper]# cp -R _data/version-2/ version-2-save [root@config3 config_zookeeper]# rm -rf _data/version-2/* ## Backup Cassandra Directory Before Deleting Cassandra Data Directory Contents ## [root@config1 ~]# cd /var/lib/docker/volumes/config_cassandra/ [root@config1 config_cassandra]# cp -R _data/ Cassandra_data-save [root@config1 config_cassandra]# rm -rf _data/* [root@config2 ~]# cd /var/lib/docker/volumes/config_cassandra/ [root@config2 config_cassandra]# cp -R _data/ Cassandra_data-save [root@config2 config_cassandra]# rm -rf _data/* [root@config3 ~]# cd /var/lib/docker/volumes/config_cassandra/ [root@config3 config_cassandra]# cp -R _data/ Cassandra_data-save [root@config3 config_cassandra]# rm -rf _data/* ## Start Zookeeper ## [root@config1 ~]# docker start contrail_config_zookeeper [root@config2 ~]# docker start contrail_config_zookeeper [root@config3 ~]# docker start contrail_config_zookeeper ## Start Cassandra ## [root@config1 ~]# docker start contrail_config_database [root@config2 ~]# docker start contrail_config_database [root@config3 ~]# docker start contrail_config_database ## Run Docker Image & Mount Contrail TLS Certificates to Contrail SSL Directory ## [root@config1 ~]# docker image ls | grep config-api hub.juniper.net/contrail/contrail-controller-config-api 1909.30-ocata c9d757252a0c 4 months ago 583MB [root@config1 ~]# docker run --rm -it -v /tmp/db-dump/:/tmp/ -v /etc/contrail/ssl:/etc/contrail/ssl:ro --network host --entrypoint=/bin/bash hub.juniper.net/contrail/contrail-controller-config-api:1909.30-ocata ## Restore Data in New Docker Containers ## (config_api_1)[root@config1 /root]$ cd /usr/lib/python2.7/site-packages/cfgm_common/ (config_api_1)[root@config1 /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 ## Start Configuration Services on All Config Nodes ## [root@config1 ~]# docker start contrail_config_svc_monitor [root@config1 ~]# docker start contrail_config_device_manager [root@config1 ~]# docker start contrail_config_schema [root@config1 ~]# docker start contrail_config_api [root@config1 ~]# docker start contrail_config_nodemgr [root@config1 ~]# docker start contrail_config_database_nodemgr [root@config2 ~]# docker start contrail_config_svc_monitor [root@config2 ~]# docker start contrail_config_device_manager [root@config2 ~]# docker start contrail_config_schema [root@config2 ~]# docker start contrail_config_api [root@config2 ~]# docker start contrail_config_nodemgr [root@config2 ~]# docker start contrail_config_database_nodemgr [root@config3 ~]# docker start contrail_config_svc_monitor [root@config3 ~]# docker start contrail_config_device_manager [root@config3 ~]# docker start contrail_config_schema [root@config3 ~]# docker start contrail_config_api [root@config3 ~]# docker start contrail_config_nodemgr [root@config3 ~]# docker start contrail_config_database_nodemgr ## Start Configuration Services on All Analytics Nodes ## [root@analytics1 ~]# docker start contrail_analytics_snmp_collector [root@analytics1 ~]# docker start contrail_analytics_topology [root@analytics1 ~]# docker start contrail_analytics_alarmgen [root@analytics1 ~]# docker start contrail_analytics_api [root@analytics1 ~]# docker start contrail_analytics_collector [root@analytics1 ~]# docker start contrail_analytics_kafka [root@analytics2 ~]# docker start contrail_analytics_snmp_collector [root@analytics2 ~]# docker start contrail_analytics_topology [root@analytics2 ~]# docker start contrail_analytics_alarmgen [root@analytics2 ~]# docker start contrail_analytics_api [root@analytics2 ~]# docker start contrail_analytics_collector [root@analytics2 ~]# docker start contrail_analytics_kafka [root@analytics3 ~]# docker start contrail_analytics_snmp_collector [root@analytics3 ~]# docker start contrail_analytics_topology [root@analytics3 ~]# docker start contrail_analytics_alarmgen [root@analytics3 ~]# docker start contrail_analytics_api [root@analytics3 ~]# docker start contrail_analytics_collector [root@analytics3 ~]# docker start contrail_analytics_kafka ## Confirm Services are Active ## [root@config1 ~]# contrail-status [root@config2 ~]# contrail-status [root@config3 ~]# contrail-status [root@analytics1 ~]# contrail-status [root@analytics2 ~]# contrail-status [root@analytics3 ~]# contrail-status