Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

Announcement: Try the Ask AI chatbot for answers to your technical questions about Juniper products and solutions.

close
header-navigation
keyboard_arrow_up
list Table of Contents
file_download PDF
{ "lLangCode": "en", "lName": "English", "lCountryCode": "us", "transcode": "en_US" }
English
keyboard_arrow_right

Configure Disaster Recovery for Paragon Pathfinder

Release: Paragon Automation 24.1
{}
Change Release
date_range 23-Jul-24
You can deploy Paragon Automation at two different geographical locations so that when the Paragon Pathfinder component is down at one location, the Paragon Pathfinder component at the other location can continue managing Path Computation Client (PCC)-delegated LSPs in your network. You can configure a federated exchange of information to synchronize the two deployments so that you can manage the topologies and modify and optimize LSPs from either one of the instances of Paragon Pathfinder.
To configure a disaster recovery setup of Paragon Pathfinder instances in dual Paragon Automation deployments, perform the following steps.
  1. Prepare the deployments to configure disaster recovery for Paragon Pathfinder.
    • For new deployments of Paragon Automation:

      Edit the config.yml file for both deployments as follows:

      prepare_multi_cluster: true

      Proceed with installing both Paragon Automation clusters as usual.

    • For existing deployments of Paragon Automation:

      1. Edit the config.yml file for both deployments as follows:

        prepare_multi_cluster: true
      2. Rerun the following deploy command for both deployments.

        ./run -c config-dir deploy -t rabbitmq,ambassador
      3. Verify that both the deployments are functioning normally.

        Now you have prepared two active Paragon Automation deployment clusters to configure disaster recovery for Paragon Pathfinder.

  2. Configure federated exchange of information between the two active deployments.
    • Through the cmgd CLI.

      content_copy zoom_out_map
      northstar {
          topology-server {
              messaging-bus {
                  use-federated-exchange;
              }
    • Through the Paragon Automation UI.

      Navigate to Configuration > Network Settings > Pathfinder Setting > Topology Server > Messaging Bus and enable the use-federated-exchange flag on both clusters.

  3. Restart the toposerver pod.
    content_copy zoom_out_map
    kubectl -n northstar rollout restart deployment ns-toposerver
  4. Create an inventory_ha inventory file to activate the information federation. Create the file in the same config-dir directory as the inventory and config.yml files of one Paragon Automation deployment. If the two deployment have different Ansible control hosts, create the file in the config-dir directory of any one of the control hosts.

    Sample inventory_ha file:

    content_copy zoom_out_map
    all:
        hosts:
           <IP address of one primary node of deployment Cluster 1>:
                ansible_user: root
                ansible_ssh_private_key_file: <SSH key to access the primary node of Cluster 1>
                vip: <Cluster 1 ingress_vip>
           <IP address of one primary node of deployment Cluster 2>:
                ansible_user: root
                ansible_ssh_private_key_file: <SSH key to access the primary node of Cluster 2>
                vip: <Cluster 2 ingress_vip>

    For example:

    content_copy zoom_out_map
    all:
        hosts:
            10.49.43.01:
                ansible_user: root
                ansible_ssh_private_key_file: config/id_rsa
                vip: 10.54.239.01
            10.49.43.02:
                ansible_user: root
                ansible_ssh_private_key_file: config/id_rsa
                vip: 10.54.239.02 
    
  5. Activate the information federation using the deploy-federated-exchange command.

    ./run -c config-dir deploy-federated-exchange

    Note:

    You will see a message indicating that installation has failed. Proceed to the next step.

  6. Run the following command on all the primary nodes of both clusters.
    content_copy zoom_out_map
    kubectl patch deployment ns-web -n northstar --type "json" -p '[{"op":"add","path":"/spec/template/spec/containers/0/env/-","value":{"name":"USE_FEDERATED_EXCHANGE", "value": "true"}}]'
Verification
  1. Verify that information federation between the two deployment clusters is operational, using the kubectl exec -it -n northstar rabbitmq-0 – rabbitmqctl list_parameters command. The output of the command must be similar to:
    content_copy zoom_out_map
    Listing runtime parameters for vhost "/" …
    
    component name
    
    federation-upstream my-upstream
    
    {"expires":30000,"uri":"amqps://northstar:BJitYWROJ5@10.54.239.02?cacertfile=/opt/bitnami/rabbitmq/certs/ca_certificate.pem&verify=verify_none"}
  2. Federation link is automatically created once there is an exchange with matching name created.

    1. Log in into one of the rabbitmq pods.

      kubectl exec -it -n northstar rabbitmq-0 -- bash

    2. Run the following command in the rabbitmq pod.

      for i in 0 1 2; do rabbitmqctl federation_status -n rabbit@rabbitmq-$i.rabbitmq-headless.northstar.svc.cluster.local; done

      The output of the command must be similar to:

      content_copy zoom_out_map
      I have no name!@rabbitmq-0:/$ for i in 0 1 2; do rabbitmqctl federation_status -n rabbit@rabbitmq-$i.rabbitmq-headless.northstar.svc.cluster.local; done
      Listing federation links on node rabbit@rabbitmq-0.rabbitmq-headless.northstar.svc.cluster.local...
      [#{error => <<>>,exchange => <<"controller.federated.topo">>,
         id => <<"f0e7320f">>,last_changed => <<"2023-04-18 09:19:14">>,
         local_connection =>
      <<"<rabbit@rabbitmq-0.rabbitmq-headless.northstar.svc.cluster.local.3.24866.9>">>,
         queue => <<>>,status => running,type => exchange,
         upstream => <<"my-upstream">>,
         upstream_exchange => <<"controller.federated.topo">>,
         upstream_queue => <<>>,uri => <<"amqps://10.54.239.100">>,vhost => <<"/">>}]
      Listing federation links on node rabbit@rabbitmq-1.rabbitmq-headless.northstar.svc.cluster.local...
      []
      Listing federation links on node rabbit@rabbitmq-2.rabbitmq-headless.northstar.svc.cluster.local...
      []
footer-navigation