From 6bdc91f403e4b7db70e9c82bdde2a4afc3a2999e Mon Sep 17 00:00:00 2001 From: Aslan Hajiyev <126803786+aslanvyos@users.noreply.github.com> Date: Wed, 20 Aug 2025 19:59:02 +0400 Subject: [PATCH] Added AWS/Azure HA deployment documentation for and modified titles of AWS, Azure, GCP deployment pages (#1668) * Added documentation pages for AWS/Azure HA deployment and modified pages AWS,Azure,GCP * Update docs/installation/cloud/azure-ha.rst Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .../images/cloud-aws-ha-architecture.png | Bin 0 -> 55522 bytes .../images/cloud-azure-ha-architecture.png | Bin 0 -> 57323 bytes docs/installation/cloud/aws-ha.rst | 154 ++++++++++++++++++ docs/installation/cloud/aws.rst | 21 ++- docs/installation/cloud/azure-ha.rst | 152 +++++++++++++++++ docs/installation/cloud/azure.rst | 2 +- docs/installation/cloud/gcp.rst | 8 +- docs/installation/cloud/index.rst | 4 +- 8 files changed, 334 insertions(+), 7 deletions(-) create mode 100755 docs/_static/images/cloud-aws-ha-architecture.png create mode 100755 docs/_static/images/cloud-azure-ha-architecture.png create mode 100755 docs/installation/cloud/aws-ha.rst create mode 100755 docs/installation/cloud/azure-ha.rst diff --git a/docs/_static/images/cloud-aws-ha-architecture.png b/docs/_static/images/cloud-aws-ha-architecture.png new file mode 100755 index 0000000000000000000000000000000000000000..043f28f3c6df3363d1813f4f8465e4e890051aeb GIT binary patch literal 55522 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 literal 0 HcmV?d00001 diff --git a/docs/_static/images/cloud-azure-ha-architecture.png b/docs/_static/images/cloud-azure-ha-architecture.png new file mode 100755 index 0000000000000000000000000000000000000000..be42e60322e1c8b7252e5540407703e7c9d7eeaa GIT binary patch literal 57323 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 literal 0 HcmV?d00001 diff --git a/docs/installation/cloud/aws-ha.rst b/docs/installation/cloud/aws-ha.rst new file mode 100755 index 00000000..af125969 --- /dev/null +++ b/docs/installation/cloud/aws-ha.rst @@ -0,0 +1,154 @@ +########## +VyOS High Availability (HA) Deployment on AWS +########## + +This document describes how to deploy VyOS in a High Availability (HA) configuration on AWS using Terraform and a VPC Route Server to provide sub-second failover. + +Why Use HA on AWS? +------------------ + +This solution helps organizations achieve **high availability** routing with dynamic connectivity to multiple AWS VPCs or hybrid environments. + +Key Advantages: + +- Utilizes **AWS VPC Route Server** to manage BGP routes dynamically. + +- Deploys two VyOS EC2 instances as BGP peers connected to the Route Server. Although both participate, one is typically preferred as the next-hop. + +- Employs **Bidirectional Forwarding Detection (BFD)** for rapid failure detection. + +- On failure: + + - Withdraws the failed peer’s routes from the RIB. + + - Recomputes the optimal path in the FIB. + + - Updates VPC route tables to point to the active instance. + +- Enables **sub-second failover** (< 1 s), outperforming AWS API-based route table failover. + +This architecture supports: + +- Cloud edge routing with failover. + +- Hybrid cloud resiliency. + +- Rapid recovery during instance crashes, upgrades, or network disruptions. + +- Continuity for mission-critical operations. + +HA Architecture Diagram +------------------------ + +.. figure:: /_static/images/cloud-aws-ha-architecture.png + :alt: VyOS HA topology diagram + +Terraform Automation +-------------------- + +To streamline and standardize the process, we developed a Terraform project that automates the deployment of VyOS in High Availability (HA) mode on AWS. + +This Terraform project automates the deployment of: + +- Two VyOS instances in HA mode. + +- VPC Route Server. + +- Transit Gateway. + +- A Transit VPC and a Data VPC containing a test Amazon Linux EC2 instance for connectivity validation. + +To integrate with existing AWS infrastructure: + +- Remove the Data VPC, its subnets, and EC2 test instance. + +- Update `main.tf`, `network.tf`, `transit_gateway.tf`, `variables.tf`, and `outputs.tf` accordingly. + +Prerequisites +------------- + +AWS Environment: + +- Active AWS account with permissions for EC2, VPC, Transit Gateway, Route Server, and IAM (for keypair and role management). + +Local Environment: + +- AWS CLI installed: https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html + +- Terraform installed: https://developer.hashicorp.com/terraform/tutorials/aws-get-started/install-cli + +Set AWS credentials in your shell: + +.. code-block:: none + + export AWS_ACCESS_KEY_ID="" + export AWS_SECRET_ACCESS_KEY="" + export AWS_SESSION_TOKEN="" + export AWS_DEFAULT_REGION="" # e.g., us-east-1 + +Obtain VyOS AMI ID and Owner ID: + +Subscribe to VyOS via AWS Marketplace. Then run: + +.. code-block:: none + + aws ec2 describe-images \ + --owners aws-marketplace \ + --filters "Name=product-code,Values=8wqdkv3u2b9sa0y73xob2yl90" \ + --query 'Images[*].[ImageId,OwnerId,Name]' \ + --output table + +Alternatively, set the `vyos_ami_id` variable directly in `variables.tf`. + +Generate an SSH keypair (or use the included demo key): + +.. code-block:: none + + ssh-keygen -b 2048 -t rsa -m PEM -f keys/vyos_custom_key.pem + chmod 400 keys/vyos_custom_key.pem + +Usage +----- + +Configure variables in `variables.tf`, including instance type, region, and `vyos_ami_id`. + +Terraform Workflow: + +.. code-block:: none + + terraform init + terraform fmt + terraform validate + terraform plan + terraform apply + +On completion, run: + +.. code-block:: none + + terraform output + +This displays the management IP and connectivity test results. + +To clean up: + +.. code-block:: none + + terraform destroy + +Management +---------- + +SSH into VyOS: + +.. code-block:: none + + ssh vyos@ -i keys/vyos_custom_key.pem + + +GitHub Repository +----------------- + +You can clone or download the Terraform project and use them in your environment: + +https://github.com/vyos/vyos-automation/tree/main/Terraform/AWS/ha-instances-with-configs diff --git a/docs/installation/cloud/aws.rst b/docs/installation/cloud/aws.rst index 3370169f..17ecfe16 100644 --- a/docs/installation/cloud/aws.rst +++ b/docs/installation/cloud/aws.rst @@ -1,5 +1,5 @@ ########## -Amazon AWS +VyOS Deployment on AWS ########## @@ -601,6 +601,8 @@ Connect to the VyOS instance .. code-block:: none ssh -i vyos-keypair.pem vyos@35.152.131.62 + + Deployment of VyOS Instance and Required Resources via CloudFormation Template @@ -621,6 +623,23 @@ https://github.com/vyos/vyos-automation/tree/main/CloudFormation +Deployment of VyOS Instance and Required Resources via Terraform +======== + +These Terraform projects automate the deployment of a VyOS instance on AWS, configuring essential components such as: + +- VPC +- Public and private subnets +- Internet Gateway +- Route Tables +- Elastic IPs +- Security Groups + +You can download or clone these templates from the GitHub repository and use them in your environment: + +https://github.com/vyos/vyos-automation/tree/main/Terraform/AWS/ + + Amazon CloudWatch Agent Usage ----------------------------- diff --git a/docs/installation/cloud/azure-ha.rst b/docs/installation/cloud/azure-ha.rst new file mode 100755 index 00000000..e943b550 --- /dev/null +++ b/docs/installation/cloud/azure-ha.rst @@ -0,0 +1,152 @@ +########## +VyOS High Availability (HA) Deployment on Azure +########## + + +This document describes how to deploy VyOS in a High Availability (HA) configuration on Azure using Terraform and Azure Route Server to provide sub-second failover. + +Why Use HA on Azure? +-------------------- + +This module provides a robust, repeatable foundation for building **resilient network architectures** in Azure. By combining VyOS routing features with Terraform and Azure-native services, it enables: + +- Rapid deployment of cloud edge routers. + +- Full control over BGP route advertisement and filtering. + +- Realistic HA and disaster recovery simulations. + +- Seamless integration with hybrid or multi-cloud infrastructure. + +The architecture includes: + +- Two VyOS routers in a Transit VNet, configured with BGP. + +- Azure Route Server for dynamic route distribution. + +- Site-to-Site VPN connections to a simulated on-premises VyOS router. + +- An Ubuntu VM for connectivity and routing validation. + +- A Data VNet for testing and diagnostics. + +Key Features +------------ + +- **High Availability**: Dual VyOS routers for redundancy and failover. + +- **Dynamic Routing**: BGP-based routing via Azure Route Server. + +- **Hybrid Connectivity**: Site-to-Site VPN integration with a simulated on-prem VyOS. + +- **Testing Environment**: Includes Ubuntu VM for verification and diagnostics. + +- **Modular & Flexible**: Easily configurable via variables. + +HA Architecture Diagram +----------------------- + +.. figure:: /_static/images/cloud-azure-ha-architecture.png + :alt: VyOS HA topology diagram + +This deployment architecture simulates a real-world enterprise network scenario for testing and validation purposes. + +Terraform Automation +-------------------- + +To streamline and standardize the process, we developed a Terraform project that automates the deployment of VyOS in High Availability (HA) mode on Azure. + +This Terraform project automates the deployment of: + +- Two VyOS instances in HA mode. + +- Azure Route Server. + +- A Transit VNet and a Data VNet containing a test Ubuntu VM for connectivity validation. + +Prerequisites +------------- + +Ensure you have: + +- Active Azure subscription: + +.. code-block:: none + + az account set --subscription "" + +- Azure CLI installed: + + https://learn.microsoft.com/en-us/cli/azure/install-azure-cli + +- Logged in with Azure credentials: + +.. code-block:: none + + az version + az login + +- Azure Resource Group (RG) created: + +.. code-block:: none + + az group create --name demoResourceGroup --location westus + az group list + az group show --name demoResourceGroup + +- Terraform installed: + + https://developer.hashicorp.com/terraform/tutorials/aws-get-started/install-cli + +- SSH key generated: + +.. code-block:: none + + ssh-keygen -t rsa -b 4096 -f keys/vyos_custom_key.pem + chmod 400 keys/vyos_custom_key.pem + +Usage +----- + +All variables are defined in ``variables.tf``. Adjust them to match your environment. + +Terraform Workflow: + +.. code-block:: none + + terraform init + terraform fmt + terraform validate + terraform plan + terraform apply + +On completion, run: + +.. code-block:: none + + terraform output + +This displays the management IP and connectivity test results. + +To clean up: + +.. code-block:: none + + terraform destroy + +Management +---------- + +SSH into VyOS: + +.. code-block:: none + + ssh adminuser@ -i keys/vyos_custom_key.pem + + +GitHub Repository +----------------- + +You can clone or download the Terraform project and use them in your environment: + +https://github.com/vyos/vyos-automation/tree/main/Terraform/Azure/azure-ha-deployment-with-configs diff --git a/docs/installation/cloud/azure.rst b/docs/installation/cloud/azure.rst index 81c05077..563fcb19 100644 --- a/docs/installation/cloud/azure.rst +++ b/docs/installation/cloud/azure.rst @@ -1,5 +1,5 @@ ########## -Microsoft Azure +VyOS Deployment on Azure ########## diff --git a/docs/installation/cloud/gcp.rst b/docs/installation/cloud/gcp.rst index 8510f901..0c23353e 100644 --- a/docs/installation/cloud/gcp.rst +++ b/docs/installation/cloud/gcp.rst @@ -1,5 +1,5 @@ ##################### -Google Cloud Platform +VyOS Deployment on Google Cloud Platform ##################### This guide provides step-by-step instructions for deploying a VyOS instance with two NICs and the required resources on Google Cloud Platform (GCP). @@ -126,8 +126,8 @@ Step 3: Create VPC Networks and Subnets .. figure:: /_static/images/cloud-gcp-vpc-03.png .. figure:: /_static/images/cloud-gcp-vpc-04.png - -4. Add firewall rules to allow specific network traffic from the Internet. By default all incoming traffic from outside a network is blocked. + +4. Add firewall rules to allow specific network traffic from the Internet if needed. By default, all incoming traffic from outside the network is blocked. Typically, a VyOS deployment from the GCP Marketplace configures this automatically, ensuring that SSH access is enabled after deployment. .. figure:: /_static/images/cloud-gcp-vpc-05.png @@ -224,7 +224,7 @@ Step 4: Deploy VyOS instance from Marketplace - set interfaces ethernet eth1 address 'dhcp' - set interfaces ethernet eth1 dhcp-options no-default-route -For more information, please visit the official VyOS documentation: +For more information, please visit the documentation: https://docs.vyos.io/en/stable/automation/cloud-init.html#module-vyos-userdata diff --git a/docs/installation/cloud/index.rst b/docs/installation/cloud/index.rst index 5236f092..d219a291 100644 --- a/docs/installation/cloud/index.rst +++ b/docs/installation/cloud/index.rst @@ -8,6 +8,8 @@ Running VyOS in Cloud Environments :caption: Content aws + aws-ha azure + azure-ha gcp - oracel \ No newline at end of file + oracle \ No newline at end of file