Skip to content

vr_quick

Michal Opala edited this page Feb 6, 2024 · 3 revisions

Quick Start

Upon creation a VR is just a resource in OpenNebula, it doesn't perform any networking-related errands by itself, you must instantiate Service Virtual Router virtual machines to make anything happen.

Let's assume you have two OpenNebula Virtual networks public and private, and you want to deploy a Virtual Router with failover capabilities so the VMs in the private network can reach the Internet. The topology will be as follows:

public network
───────────────────┬─────────────
                   │ FLOATING_IP (3.27.6.5)
 ┌─ ─ ─ ─ ─ ─ ─ ─ ─┼ ─ ─ ┐
 │ Virtual Router  │     │
 │ ┌────┴───┐ ┌────┴───┐ │
 │ │        │ │        │ │
 │ │  VR-1  │ │  VR-2  │ │
 │ │        │ │        │ │
 │ └──eth1──┘ └──eth1──┘ │
 │     │           │     │
 │  10.0.0.2    10.0.0.3 │
 │                 │     │
 └─ ─ ─ ─ ─ ─ ─ ─ ─│─ ─ ─┘
                   │ FLOATING_IP (10.0.0.1)
───────────────────┼──────────┬──────────┬───────
Private Network    │          │          │
(10.0.0.0/24)      │          │          │
                 ┌─┴──┐     ┌─┴──┐     ┌─┴──┐
                 │ VM │     │ VM │     │ VM │
                 └────┘     └────┘     └────┘

Here's a procedure to get you started:

  1. Download the Service Virtual Router:

    $ onemarketapp export 'Service Virtual Router' vr1 --datastore default
    IMAGE
        ID: 0
    VMTEMPLATE
        ID: 0
  2. Adjust the VM template to meet your needs (e.g. CPU, MEMORY) and enable NAT'ing on the public interface:

    $ onetemplate update vr1
    ...
    
  3. Create the VR:

    $ onevrouter create <<'EOF'
    NAME = "vr1"
    NIC = [
      NETWORK = "public",
      FLOATING_IP = "YES",
      FLOATING_ONLY = "YES" ]
    NIC = [
      NETWORK = "private",
      FLOATING_IP = "YES",
      FLOATING_ONLY = "NO" ]
    CONTEXT = [
      NETWORK = "YES",
      SSH_PUBLIC_KEY = "$USER[SSH_PUBLIC_KEY]",
      ONEAPP_VNF_NAT4_ENABLED = "YES",
      ONEAPP_VNF_NAT4_INTERFACES_OUT = "eth0" ]
    EOF
    ID: 0
  4. Create VR instances:

    $ onevrouter instantiate vr1 vr1 --multiple 2
    ...
  5. Update the private Virtual Network so the DEFAULT_GW points to the VROUTER_IP in the private network.

Clone this wiki locally