AWS Edge Cluster

Edge Cluster Types

There are two kinds of elastic clusters:

  • Metal: this uses baremetal instances to create OpenNebula Hosts, providing the best performance and highest capacity.
  • Virtual: this uses a virtual machine instance to create OpenNebula Hosts. This provision is better suited for PaaS like workloads.

You can run the following hypervisors in the clusters:

  • KVM, runs virtual machines. This hypervisor can be only used with metal clusters.
  • Firecracker, runs micro VMs. This hypervisor can be only used with metal clusters.
  • LXC, runs system containers.

AWS Providers

An AWS provider contains the credentials to interact with Amazon and also the region to deploy your Edge Clusters. OpenNebula comes with four pre-defined providers in the following regions:

  • Frankfurt
  • London
  • North Virginia (US)
  • North California (US)

In order to define an AWS provider, you need the following information:

  • Credentials: these are used to interact with the remote provider. You need to provide access_key and secret_key. You can follow this guide.
  • Region: this is the location in the world where the resources are going to be deployed. All the available regions are listed here.
  • Instance types and AMI’s: these define the capacity of the resources that are going to be deployed and the operating system that is going to be installed on them.

How to Add a New AWS Provider

To add a new provider you need a YAML template file with the following information:

cat provider.yaml
name: 'aws-frankfurt'

description: 'Edge cluster in AWS Frankfurt'
provider: 'aws'

connection:
  access_key: 'AWS access key'
  secret_key: 'AWS secret key'
  region: 'eu-central-1'

inputs:
  - name: 'aws_ami_image'
    type: 'list'
    options:
      - 'ami-04c21037b3f953d37'
  - name: 'aws_instance_type'
    type: 'list'
    options:
      - 'c5.metal'
      - 'i3.metal'
      - 'm5.metal'
      - 'r5.metal'

Then you just need to use the command oneprovider create:

oneprovider create provider.yaml
ID: 0

The providers’ templates are located in /usr/share/one/oneprovision/edge-clusters/<type>/providers/aws. You just need to enter valid credentials.

How to Customize an Existing Provider

The provider information is stored in the OpenNebula database and it can be updated just like any other resource. In this case, you need to use the command oneprovider update. It will open an editor so you can edit all the information there. You can also use the OneProvision FireEdge GUI to update all the information.

AWS Edge Cluster Implementation

An Edge Cluster in AWS creates the following resources:

  • AWS instance: Host to run virtual machines.
  • AWS VPC: it creates an isolated virtual network for all the deployed resources. There are some limits in the number of VPC that can be requested by the user, please refer to this link for more information.
  • AWS subnet: it allows communication between VMs that are running in the provisioned Hosts.
  • AWS internet gateway: it allows VMs to have public connectivity over Internet.
  • AWS security group: by default all the traffic is allowed, but custom security rules can be defined by the user to allow only specific traffic to the VMs.

The network model is implemented in the following way:

  • Public Networking: this is implemeted using elastic IPs from AWS and the IPAM driver from OpenNebula. When the virtual network is created in OpenNebula, the elastic IPs are requested from AWS. Then, inside the Host, IP forwarding rules are applied so the VM can communicate over the public IP assigned by AWS. There are some limits to the number of elastic IPs that can be requested; please refer to this link for more information.
  • Private Networking: this is implemented using (BGP-EVPN) and VXLAN.

image_cluster

Operating Providers & Edge Clusters

Refer to the cluster operation guide to check all the operations needed to create, manage, and delete an Edge Cluster. Refer to the providers guide to check all of the operations related to providers.

You can also manage AWS Cluster using OneProvision FireEdge GUI.

image_fireedge