Open vSwitch: High availability menggunakan DVR

Open vSwitch: High availability menggunakan DVR

Contoh arsitektur ini menambah contoh self-service deployment dengan mekanisme high-availability Router Distributed Virtual (DVR) yang menyediakan konektivitas antara jaringan self-service dan jaringan penyedia pada node komputasi bukannya pada jaringan node untuk skenario tertentu. Untuk contoh dengan alamat IPv4 mengambang, routing antara jaringan self-service dan jaringan penyedia berada sepenuhnya pada node komputasi untuk menghilangkan titik tunggal (single point) isu kegagalan dan kinerja dengan node jaringan. Routing juga berada sepenuhnya pada node komputasi untuk instance dengan alamat IPv4 tetap atau alamat IPv4 mengambang dengan menggunakan jaringan self-service dari router virtual didistribusikan yang sama. Namun, instance dengan alamat IP tetap masih mengandalkan node jaringan untuk routing dan layanan SNAT antara jaringan self-service dan jaringan penyedia.

Pertimbangkan atribut berikut dari mekanisme ketersediaan tinggi ini untuk menentukan kepraktisan di lingkungan Anda:

  • Hanya menyediakan konektivitas ke sebuah instance melalui node komputasi dimana instance berada jika instance berada pada jaringan self-service dengan alamat IPv4 mengambang. Instance pada jaringan self-service dengan hanya alamat IPv6 atau kedua alamat IPv4 dan IPv6 tergantung pada node jaringan untuk konektivitas IPv6.

  • Instance router pada setiap node komputasi mengkonsumsi alamat IPv4 pada jaringan provider dimana mengandung gateway.

Prasyarat

Memodifikasi node komputasi dengan komponen berikut:

  • Menginstall the OpenStack Networking layer-3 agent.

Catatan

Pertimbangkan untuk menambahkan setidaknya satu node jaringan tambahan untuk menyediakan high-availability untuk instance dengan alamat IP tetap. Lihat :ref: config-dvr-SNAT-ha-ovs untuk informasi lebih lanjut.

Arsitektur

High-availability using Open vSwitch with DVR - overview

Gambar berikut menunjukkan komponen dan konektivitas untuk satu jaringan self-service dan satu jaringan untagged (flat). Dalam kasus ini, instance berada pada node komputasi yang sama sebagai agen DHCP untuk jaringan. Jika agen DHCP berada pada node komputasi lain, agen yang terakhir hanya berisi namespace DHCP dengan port di jembatan integrasi OVS.

High-availability using Open vSwitch with DVR - components and connectivity - one network

Contoh configuration

Menggunakan contoh konfigurasi berikut sebagai template untuk menambahkan dukungan untuk high-availability menggunakan DVR di lingkungan operasional yang ada dimana mendukung jaringan self-service.

Controller node

  1. Dalam file neutron.conf:

    • Aktifkan routing yang didistribusikan secara default untuk semua router.

      [DEFAULT]
      router_distributed = true
      
  2. Restart layanan berikut:

    • Server

Network node (simpul jaringan)

  1. Dalam file ``openswitch_agent.ini`, aktifkan routing yang didistribusikan.

    [DEFAULT]
    enable_distributed_routing = true
    
  2. Dalam file l3_agent.ini, lakukan konfigurasi agen layer-3 untuk menyediakan layanan SNAT.

    [DEFAULT]
    agent_mode = dvr_snat
    

    Catatan

    Opsi external_network_bridge sengaja tidak mengandung nilai.

  3. Restart layanan berikut:

    • Open vSwitch agent
    • Layer-3 agent

Compute nodes

  1. Menginstall agen layer-3 layanan Networking.

  2. Dalam file ``openswitch_agent.ini`, aktifkan routing yang didistribusikan.

    [DEFAULT]
    enable_distributed_routing = true
    
  3. Restart layanan berikut:

    • Open vSwitch agent
  4. Dalam file l3_agent.ini, konfigure layer-3 agent.

    [DEFAULT]
    interface_driver = openvswitch
    external_network_bridge =
    agent_mode = dvr
    

    Catatan

    Opsi external_network_bridge sengaja tidak mengandung nilai.

Verifikasi operasi layanan

  1. Dapatkan kredensial proyek administrasi.

  2. Memverifikasi keberadaan dan operasi dari agen.

    $ neutron agent-list
    +--------------------------------------+--------------------+-------------+----------------+-------+----------------+---------------------------+
    | id                                   | agent_type         | host        | availability_zone | alive | admin_state_up | binary                    |
    +--------------------------------------+--------------------+----------+-------------------+-------+----------------+---------------------------+
    | 05d980f2-a4fc-4815-91e7-a7f7e118c0db | L3 agent           | compute1 | nova              | :-)   | True           | neutron-l3-agent          |
    | 1236bbcb-e0ba-48a9-80fc-81202ca4fa51 | Metadata agent     | compute2 |                   | :-)   | True           | neutron-metadata-agent    |
    | 2a2e9a90-51b8-4163-a7d6-3e199ba2374b | L3 agent           | compute2 | nova              | :-)   | True           | neutron-l3-agent          |
    | 457d6898-b373-4bb3-b41f-59345dcfb5c5 | Open vSwitch agent | compute2 |                   | :-)   | True           | neutron-openvswitch-agent |
    | 513caa68-0391-4e53-a530-082e2c23e819 | Linux bridge agent | compute1 |                   | :-)   | True           | neutron-linuxbridge-agent |
    | 71f15e84-bc47-4c2a-b9fb-317840b2d753 | DHCP agent         | compute2 | nova              | :-)   | True           | neutron-dhcp-agent        |
    | 8805b962-de95-4e40-bdc2-7a0add7521e8 | L3 agent           | network1 | nova              | :-)   | True           | neutron-l3-agent          |
    | a33cac5a-0266-48f6-9cac-4cef4f8b0358 | Open vSwitch agent | network1 |                   | :-)   | True           | neutron-openvswitch-agent |
    | a6c69690-e7f7-4e56-9831-1282753e5007 | Metadata agent     | compute1 |                   | :-)   | True           | neutron-metadata-agent    |
    | af11f22f-a9f4-404f-9fd8-cd7ad55c0f68 | DHCP agent         | compute1 | nova              | :-)   | True           | neutron-dhcp-agent        |
    | bcfc977b-ec0e-4ba9-be62-9489b4b0e6f1 | Open vSwitch agent | compute1 |                   | :-)   | True           | neutron-openvswitch-agent |
    +--------------------------------------+--------------------+----------+-------------------+-------+----------------+---------------------------+
    

Menciptakan jaringan awal

Serupa dengan contoh self-service deployment, konfigurasi ini mendukung beberapa jaringan self-service VXLAN. Setelah mengaktifkan ketersediaan tinggi, semua router tambahan menggunakan routing yang didistribusikan. Prosedur berikut membuat jaringan self-service tambahan dan router. Layanan Networking juga mendukung penambahan routing yang didistribusikan untuk router yang ada.

  1. Dapatkan sumber kredensial proyek biasa (non-administratif).

  2. Membuat jaringan self-service.

    $ neutron net-create selfservice2
    Created a new network:
    +-------------------------+--------------------------------------+
    | Field                   | Value                                |
    +-------------------------+--------------------------------------+
    | admin_state_up          | True                                 |
    | availability_zone_hints |                                      |
    | availability_zones      |                                      |
    | description             |                                      |
    | id                      | 7ebc353c-6c8f-461f-8ada-01b9f14beb18 |
    | ipv4_address_scope      |                                      |
    | ipv6_address_scope      |                                      |
    | mtu                     | 1450                                 |
    | name                    | selfservice2                         |
    | port_security_enabled   | True                                 |
    | router:external         | False                                |
    | shared                  | False                                |
    | status                  | ACTIVE                               |
    | subnets                 |                                      |
    | tags                    |                                      |
    | tenant_id               | f986edf55ae945e2bef3cb4bfd589928     |
    +-------------------------+--------------------------------------+
    
  3. Buat subnet IPv4 pada jaringan self-service..

    $ neutron subnet-create --name selfservice2-v4 --ip-version 4 \
      --dns-nameserver 8.8.4.4 selfservice2 192.168.2.0/24
    Created a new subnet:
    +-------------------+--------------------------------------------------+
    | Field             | Value                                            |
    +-------------------+--------------------------------------------------+
    | allocation_pools  | {"start": "192.168.2.2", "end": "192.168.2.254"} |
    | cidr              | 192.168.2.0/24                                   |
    | description       |                                                  |
    | dns_nameservers   | 8.8.4.4                                          |
    | enable_dhcp       | True                                             |
    | gateway_ip        | 192.168.2.1                                      |
    | host_routes       |                                                  |
    | id                | 12a41804-18bf-4cec-bde8-174cbdbf1573             |
    | ip_version        | 4                                                |
    | ipv6_address_mode |                                                  |
    | ipv6_ra_mode      |                                                  |
    | name              | selfservice2-v4                                  |
    | network_id        | 7ebc353c-6c8f-461f-8ada-01b9f14beb18             |
    | subnetpool_id     |                                                  |
    | tenant_id         | f986edf55ae945e2bef3cb4bfd589928                 |
    +-------------------+--------------------------------------------------+
    
  4. Buat subnet IPv6 pada jaringan self-service...

    $ neutron subnet-create --name selfservice2-v6 --ip-version 6 \
      --ipv6-address-mode slaac --ipv6-ra-mode slaac \
      --dns-nameserver 2001:4860:4860::8844 selfservice2 \
      fd00:192:168:2::/64
    Created a new subnet:
    +-------------------+-----------------------------------------------------------------------------+
    | Field             | Value                                                                       |
    +-------------------+-----------------------------------------------------------------------------+
    | allocation_pools  | {"start": "fd00:192:168:2::2", "end": "fd00:192:168:2:ffff:ffff:ffff:ffff"} |
    | cidr              | fd00:192:168:2::/64                                                         |
    | description       |                                                                             |
    | dns_nameservers   | 2001:4860:4860::8844                                                        |
    | enable_dhcp       | True                                                                        |
    | gateway_ip        | fd00:192:168:2::1                                                           |
    | host_routes       |                                                                             |
    | id                | b0f122fe-0bf9-4f31-975d-a47e58aa88e3                                        |
    | ip_version        | 6                                                                           |
    | ipv6_address_mode | slaac                                                                       |
    | ipv6_ra_mode      | slaac                                                                       |
    | name              | selfservice2-v6                                                             |
    | network_id        | 7ebc353c-6c8f-461f-8ada-01b9f14beb18                                        |
    | subnetpool_id     |                                                                             |
    | tenant_id         | f986edf55ae945e2bef3cb4bfd589928                                            |
    +-------------------+-----------------------------------------------------------------------------+
    
  5. Buat router.

    $ neutron router-create router2
    Created a new router:
    +-------------------------+--------------------------------------+
    | Field                   | Value                                |
    +-------------------------+--------------------------------------+
    | admin_state_up          | True                                 |
    | availability_zone_hints |                                      |
    | availability_zones      |                                      |
    | description             |                                      |
    | external_gateway_info   |                                      |
    | id                      | b6206312-878e-497c-8ef7-eb384f8add96 |
    | name                    | router2                              |
    | routes                  |                                      |
    | status                  | ACTIVE                               |
    | tenant_id               | f986edf55ae945e2bef3cb4bfd589928     |
    +-------------------------+--------------------------------------+
    
  6. Tambahkan subnet IPv4 dan IPv6 sebagai interface pada router.

    $ neutron router-interface-add router2 selfservice2-v4
    Added interface da3504ad-ba70-4b11-8562-2e6938690878 to router router2.
    
    $ neutron router-interface-add router2 selfservice2-v6
    Added interface 442e36eb-fce3-4cb5-b179-4be6ace595f0 to router router2.
    
  7. Tambahkan jaringan provider sebagai gateway pada router.

    $ neutron router-gateway-set router2 provider1
    Set gateway for router router2
    

Verifikasi operasi jaringan

  1. Dapatkan kredensial proyek administrasi.

  2. Verifikasi routing yang didistribusikan pada router.

    $ neutron router-show router2
      +-------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
      | Field                   | Value                                                                                                                                                                                                                                                                             |
      +-------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
      | distributed             | True                                                                                                                                                                                                                                                                              |
      +-------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    
  3. Pada setiap node komputasi, verifikasi pembuatan namespace qrouter dengan ID yang sama.

    Compute node 1 (node komputasi 1):

    # ip netns
    qrouter-78d2f628-137c-4f26-a257-25fc20f203c1
    

    Compute node 2 (node komputasi 2):

    # ip netns
    qrouter-78d2f628-137c-4f26-a257-25fc20f203c1
    
  4. Pada node jaringan, verifikasi pembuatan namespace snat dan qrouter dengan ID yang sama.

    # ip netns
    snat-78d2f628-137c-4f26-a257-25fc20f203c1
    qrouter-78d2f628-137c-4f26-a257-25fc20f203c1
    

    Catatan

    Namespace untuk router 1 dari Open vSwitch: jaringan self-service juga harus muncul di jaringan node 1 karena pembuatan sebelum pengaktifan routing yang didistribusikan

  5. Meluncurkan sebuah instance dengan sebuah antarmuka pada jaringan self-service tambahan. Misalnya, image CirrOS menggunakan flavor ID 1.

    $ openstack server create --flavor 1 --image cirros --nic net-id=NETWORK_ID selfservice-instance2
    

    Ganti `` NETWORK_ID`` dengan ID dari jaringan self-service tambahan.

  6. Tentukan alamat IPv4 dan IPv6 dari instance.

    $ openstack server list
    +--------------------------------------+-----------------------+--------+---------------------------------------------------------------------------+
    | ID                                   | Name                  | Status | Networks                                                                  |
    +--------------------------------------+-----------------------+--------+---------------------------------------------------------------------------+
    | bde64b00-77ae-41b9-b19a-cd8e378d9f8b | selfservice-instance2 | ACTIVE | selfservice2=fd00:192:168:2:f816:3eff:fe71:e93e, 192.168.2.4              |
    +--------------------------------------+-----------------------+--------+---------------------------------------------------------------------------+
    
  7. Membuat alamat IPv4 mengambang di jaringan operator.

    $ openstack ip floating create provider1
    +-------------+--------------------------------------+
    | Field       | Value                                |
    +-------------+--------------------------------------+
    | fixed_ip    | None                                 |
    | id          | 0174056a-fa56-4403-b1ea-b5151a31191f |
    | instance_id | None                                 |
    | ip          | 203.0.113.17                         |
    | pool        | provider1                            |
    +-------------+--------------------------------------+
    
  8. Mengasosiasikan alamat IPv4 mengambang dengan instance.

    $ openstack ip floating add 203.0.113.17 selfservice-instance2
    

    Catatan

    Command ini tidak memberikan output.

  9. Pada node komputasi yang berisi instance, verifikasi pembuatan namespace fip dengan ID yang sama dengan jaringan penyedia.

    # ip netns
    fip-4bfa3075-b4b2-4f7d-b88e-df1113942d43
    

Arus lalu lintas jaringan

Bagian berikut menjelaskan arus lalu lintas jaringan di beberapa skenario umum. Lalu lintas jaringan North-south perjalanan antara instance dan jaringan eksternal sebagaimana Internet. Lalu lintas jaringan East-west perjalanan antara instance pada jaringan yang sama atau berbeda. Dalam semua skenario, infrastruktur jaringan fisik menangani switching dan routing antara jaringan penyedia dan jaringan eksternal sebagaimana Internet. Setiap kasus merujuk satu atau lebih dari komponen berikut:

  • Provider network (VLAN)
    • VLAN ID 101 (tagged)
  • Self-service network 1 (VXLAN)
    • VXLAN ID (VNI) 101
  • Self-service network 2 (VXLAN)
    • VXLAN ID (VNI) 102
  • Self-service router
    • Gateway pada jaringan penyedia

    • Interface on self-service network 1
    • Interface on self-service network 2
  • Instance 1
  • Instance 2

Bagian ini hanya berisi skenario aliran yang menguntungkan dari routing virtual yang didistribusikan atau yang berbeda dari operasi konvensional. Untuk skenario aliran lainnya, lihat Arus lalu lintas jaringan.

Skenario North-south 1: Instance dengan alamat IP tetap

Mirip dengan Skenario North-south 1: Instance dengan alamat IP tetap kecuali namespace router pada node jaringan menjadi namespace SNAT. Node jaringan masih mengandung namespace router, tetapi itu tidak melayani tujuan dalam hal ini.

High-availability using Open vSwitch with DVR - network traffic flow - north/south scenario 1

Skenarion north-south 2: Instance dengan alamat IPv4 mengambang

Untuk instance dengan alamat IPv4 yang mengambang menggunakan jaringan self-service pada router yang didistribusikan, compute node yang berisi instance melakukan SNAT pada lalu lintas utara-selatan lewat dari instance ke jaringan eksternal seperti Internet dan, DNAT pada lalu lintas utara-selatan lewat dari jaringan eksternal ke instance. Alamat IP mengambang dan NAT tidak berlaku untuk IPv6. Dengan demikian, network node me-rute lalu lintas IPv6 dalam skenario ini, lalu lintas utara-selatan lewat antara instance dan jaringan eksternal seperti Internet.

  • Instance 1 berada pada compute node 1 dan menggunakan jaringan self-service 1.

  • Sebuah host di Internet mengirimkan sebuah paket ke instance.

Langkah berikut melibatkan compute node:

  1. Infrastruktur jaringan fisik (1) meneruskan paket ke antarmuka jaringan fisik penyedia (2).

  2. Antarmuka jaringan fisik penyedia meneruskan paket ke OVS provider bridge provider network port (3).

  3. OVS provider bridge menukar VLAN tag 101 sebenarnya dengan VLAN tag internal.

  4. OVS provider bridge phy-br-provider port (4) meneruskan paket ke OVS integration bridge int-br-provider port (5).

  5. OVS integration bridge port untuk provider network (6) menghapus tag VLAN internal dan meneruskan paket ke provider network interface (7) dalam namespace IP mengambang. Interface ini merespon setiap permintaan ARP untuk alamat IPv4 mengambang instance.

  6. Namespace IP mengambang me-rute paket (8) ke namespace router yang didistribusikan (9) menggunakan sepasang alamat IP pada jaringan internal DVR. Namespace ini berisi alamat IPv4 mengambang instance.

  7. Router melakukan DNAT pada paket yang mengubah alamat IP tujuan ke alamat IP instance di jaringan self-service melalui antarmuka jaringan self-service (10).

  8. Router meneruskan paket ke OVS integration bridge port untuk jaringan self-service (11).

  9. OVS integration bridge menambahkan tag VLAN internal untuk paket.

  10. OVS integration bridge menghapus tag VLAN internal dari paket.

  11. OVS integration bridge security group port (12) meneruskan paket ke security group bridge OVS port (13) melalui pasangan veth.

  12. Aturan kelompok keamanan (14) dari security group bridge menangani firewall dan pelacakan koneksi paket.

  13. Security group bridge instance port (15) meneruskan paket ke instance interface (16) melalui pasangan veth.

High-availability using Open vSwitch with DVR - network traffic flow - north/south scenario 2

Catatan

Lalu lintas Egress mengikuti langkah serupa secara terbalik, kecuali SNAT merubah alamat IPv4 sumber dari paket ke alamat IPv4 mengambang.

Skenario east-west 1: Instance pada jaringan yang berbeda pada router yang sama

Instance dengan alamat IPv4/IPv6 tetap atau alamat IPv4 mengambang pada node komputasi yang sama berkomunikasi melalui router pada node komputasi. Instance pada node komputasi yang berbeda berkomunikasi melalui sebuah instance dari router pada setiap node komputasi.

Catatan

Skenario ini menempatkan instance pada node komputasi yang berbeda untuk menunjukkan situasi yang paling kompleks.

Langkah berikut yang melibatkan compute node 1:

  1. The instance interface (1) forwards the packet to the security group bridge instance port (2) via veth pair.
  2. Security group rules (3) pada security group bridge menangani firewall dan pelacakan koneksi paket.

  3. Security group bridge OVS port (4) meneruskan paket ke packet to the OVS integration bridge security group port (5) melalui pasangan veth.

  4. OVS integration bridge menambahkan tag VLAN internal untuk paket.

  5. OVS integration bridge port for self-service network 1 (6) menghapus tag VLAN internal dan meneruskan paket ke self-service network 1 interface di distributed router namespace (6).

  6. Namespace router yang didistribusikan me-rute paket ke self-service network 2.

  7. Self-service network 2 interface idalam distributed router namespace (8) meneruskan paket ke OVS integration bridge port untuk self-service network 2 (9).

  8. OVS integration bridge menambahkan tag VLAN internal untuk paket.

  9. OVS integration bridge menukar internal VLAN tag untuk internal tunnel ID.

  10. OVS integration bridge patch-tun port (10) meneruskan paket ke OVS tunnel bridge patch-int port (11).

  11. OVS tunnel bridge (12) membungkus paket menggunakan VNI 101.

  12. The underlying physical interface (13) untuk jaringan overlay meneruskan paket ke compute node 2 melalui overlay network (14).

Langkah berikut yang melibatkan compute node 2:

  1. The underlying physical interface (15) untuk jaringan overlay meneruskan paket ke OVS tunnel bridge (16).

  2. OVS tunnel bridge membuka paket dan menambahkan internal tunnel ID ke paket.

  3. OVS tunnel bridge menukar internal tunnel ID ke internal VLAN tag.

  4. OVS tunnel bridge patch-int patch port (17) meneruskan paket ke OVS integration bridge patch-tun patch port (18).

  5. OVS integration bridge menghapus tag VLAN internal dari paket.

  6. OVS integration bridge security group port (19) meneruskan paket ke security group bridge OVS port (20) melalui pasangan veth.

  7. Security group rules (21) pada security group bridge menangani firewall dan pelacakan koneksi paket.

  8. Security group bridge instance port (22) meneruskan paket ke instance 2 interface (23) melalui pasangan veth.

Catatan

Routing antar jaringan self-service terjadi pada compute node (simpul komputasi) yang berisi instance pengiriman paket. Dalam skenario ini, routing terjadi pada compute node 1 untuk paket dari instance 1 ke instance 2 dan pada compute node 2 untuk paket dari instance 2 ke instance 1.

High-availability using Open vSwitch with DVR - network traffic flow - east/west scenario 2
Creative Commons Attribution 3.0 License

Except where otherwise noted, this document is licensed under Creative Commons Attribution 3.0 License. See all OpenStack Legal Documents.