Open vSwitch: High availability menggunakan DVR

Open vSwitch: High availability menggunakan DVR

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

Pertimbangkan atribut berikut 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 yang mengandung gateway.

Prasyarat

Memodifikasi node komputasi dengan komponen-komponen berikut:

  • Instal agen lapisan-3 OpenStack Networking.

Catatan

Pertimbangkan untuk menambahkan setidaknya satu node jaringan tambahan untuk menyediakan ketersediaan tinggi untuk instance dengan alamat IP tetap. Lihat 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 tanpa tanda (flat). Dalam kasus ini, instance berada pada node komputasi yang sama sebagai agen DHCP untuk jaringan. Jika agen DHCP berada pada node komputasi lain, yang terakhir hanya berisi namespace DHCP dengan port pada jembatan integrasi OVS.

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

Konfigurasi contoh

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

Controller node

  1. Dalam file neutron.conf:

    • Aktifkan routing terdistribusikan dengan default untuk semua router.

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

    • Server

Node jaringan

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

    [DEFAULT]
    enable_distributed_routing = True
    
  2. Dalam file l3_agent.ini, lakukan konfigurasi agen lapisan-3 untuk memberikan layanan SNAT

    [DEFAULT]
    agent_mode = dvr_snat
    

    Catatan

    Opsi external_network_bridge sengaja tidak mengandung nilai.

  3. Restart layanan berikut:

    • Agen Open vSwitch
    • Layer-3 agent (agen lapisan-3)

Compute nodes (simpul komputasi)

  1. Instal agen lapisan-3 layanan Networking

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

    [DEFAULT]
    enable_distributed_routing = True
    
  3. Dalam file l3_agent.ini, lakukan konfigurasi layer-3 agent.

    [DEFAULT]
    interface_driver = openvswitch
    external_network_bridge =
    agent_mode = dvr
    

    Catatan

    Opsi external_network_bridge sengaja tidak mengandung nilai.

  4. Restart layanan berikut:

    • Agen Open vSwitch
    • Layer-3 agent (agen lapisan-3)

Melakukan verifikasi operasi layanan

  1. Dapatkan sumber kredensial proyek administrasi.

  2. Memverifikasi keberadaan dan operasi dari agen.

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

Menciptakan jaringan awal

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

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

  2. Buat jaringan self-service.

    $ openstack network create selfservice2
    +-------------------------+--------------+
    | Field                   | Value        |
    +-------------------------+--------------+
    | admin_state_up          | UP           |
    | mtu                     | 1450         |
    | name                    | selfservice2 |
    | port_security_enabled   | True         |
    | router:external         | Internal     |
    | shared                  | False        |
    | status                  | ACTIVE       |
    +-------------------------+--------------+
    
  3. Buat subnet IPv4 pada jaringan self-service.

    $ openstack subnet create --subnet-range 192.0.2.0/24 \
      --network selfservice2 --dns-nameserver 8.8.4.4 selfservice2-v4
    +-------------------+---------------------------+
    | Field             | Value                     |
    +-------------------+---------------------------+
    | allocation_pools  | 192.0.2.2-192.0.2.254     |
    | cidr              | 192.0.2.0/24              |
    | dns_nameservers   | 8.8.4.4                   |
    | enable_dhcp       | True                      |
    | gateway_ip        | 192.0.2.1                 |
    | ip_version        | 4                         |
    | name              | selfservice2-v4           |
    +-------------------+---------------------------+
    
  4. Buat subnet IPv6 pada jaringan self-service.

    $ openstack subnet create --subnet-range fd00:192:0:2::/64 --ip-version 6 \
      --ipv6-ra-mode slaac --ipv6-address-mode slaac --network selfservice2 \
      --dns-nameserver 2001:4860:4860::8844 selfservice2-v6
    +-------------------+------------------------------------------------------+
    | Field             | Value                                                |
    +-------------------+------------------------------------------------------+
    | allocation_pools  | fd00:192:0:2::2-fd00:192:0:2:ffff:ffff:ffff:ffff     |
    | cidr              | fd00:192:0:2::/64                                    |
    | dns_nameservers   | 2001:4860:4860::8844                                 |
    | enable_dhcp       | True                                                 |
    | gateway_ip        | fd00:192:0:2::1                                      |
    | ip_version        | 6                                                    |
    | ipv6_address_mode | slaac                                                |
    | ipv6_ra_mode      | slaac                                                |
    | name              | selfservice2-v6                                      |
    +-------------------+------------------------------------------------------+
    
  5. Buat router.

    $ openstack router create router2
    +-----------------------+---------+
    | Field                 | Value   |
    +-----------------------+---------+
    | admin_state_up        | UP      |
    | name                  | router2 |
    | status                | ACTIVE  |
    +-----------------------+---------+
    
  6. Tambahkan subnet IPv4 dan IPv6 sebagai interface pada router.

    $ openstack router add subnet router2 selfservice2-v4
    $ openstack router add subnet router2 selfservice2-v6
    

    Catatan

    Perintah ini tidak memberikan output.

  7. Tambahkan jaringan provider sebagai gateway pada router.

    $ openstack router set router2 --external-gateway provider1
    

Lakukan verifikasi operasi jaringan

  1. Dapatkan sumber kredensial proyek administrasi.

  2. Lakukan verifikasi routing terdistribusikan pada router.

    $ openstack router show router2
    +-------------------------+---------+
    | Field                   | Value   |
    +-------------------------+---------+
    | admin_state_up          | UP      |
    | distributed             | True    |
    | ha                      | False   |
    | name                    | router2 |
    | status                  | ACTIVE  |
    +-------------------------+---------+
    
  3. Pada setiap node komputasi, lakukan verifikasi penciptaan 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, lakukan verifikasi penciptaan snat dan namespace 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 penciptaan sebelum mengaktifkan routing terdistribusikan.

  5. Luncurkan 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
    

    Gantilah NETWORK_ID dengan ID dari jaringan self-service tambahan

  6. Tentukan alamat IPv4 dan IPv6 instance.

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

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

    $ openstack server add floating ip selfservice-instance2 203.0.113.17
    

    Catatan

    Perintah ini tidak memberikan output.

  9. Pada node komputasi yang berisi instance, lakukan verifikasi penciptaan namespace fip dengan ID yang sama dengan jaringan provider.

    # 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 berjalan antara instance dan jaringan eksternal seperti Internet. Lalu lintas jaringan *east-barat * berjalan antara instance pada jaringan yang sama atau berbeda. Dalam semua skenario, infrastruktur jaringan fisik menangani switching dan routing antara jaringan provider dan jaringan eksternal seperti Internet. Setiap kasus merujuk satu atau lebih dari komponen berikut:

  • Jaringan operator (VLAN)
    • VLAN ID 101 (tagged)
  • Jaringan self-service 1 (VXLAN)
    • VXLAN ID (VNI) 101
  • Jaringan self-service 2 (VXLAN)
    • VXLAN ID (VNI) 102
  • Self-service router
    • Gateway jaringan provider
    • Antarmuka pada jaringan self-service 1
    • Antarmuka pada jaringan self-service 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.

North-south scenario 1: Instance dengan alamat IP tetap

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

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

North-south scenario 2: Instance dengan alamat IPv4 mengambang

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

  • Instance 1 berada pada compute node 1 dan menggunakan self-service network 1.
  • Sebuah host di Internet mengirimkan sebuah paket ke instance.

Langkah berikut melibatkan node komputasi:

  1. Infrastruktur jaringan fisik (1) meneruskan paket ke provider physical network interface (2).
  2. Provider physical network interface meneruskan paket ke OVS provider bridge provider network port (3).
  3. OVS provider bridge menukar actual VLAN tag 101 dengan internal VLAN tag.
  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 internal VLAN tagdan 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 distributed router namespace (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 ke 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. Security group rules (14) pada 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

Egress traffic mengikuti langkah-langkah serupa secara terbalik, kecuali SNAT mengubah alamat IPv4 sumber paket ke alamat IPv4 mengambang.

East-west scenario 1: Instances 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 melibatkan komputasi node 1:

  1. Instance interface (1) meneruskan paket ke security group bridge instance port (2) melalui pasangan veth.
  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 OVS integration bridge security group port (5) melalui pasangan veth.
  4. OVS integration bridge menambahkan tag VLAN internal ke paket.
  5. OVS integration bridge port untuk self-service network 1 (6) menghapus internal VLAN tag dan meneruskan paket ke self-service network 1 interface di distributed router namespace (6).
  6. Distributed router namespace me-rute paket ke self-service network 2.
  7. Self-service network 2 interface dalam distributed router namespace (8) meneruskan paket ke OVS integration bridge port pada self-service network 2 (9).
  8. OVS integration bridge menambahkan tag VLAN internal ke paket.
  9. OVS integration bridge menukarkan internal VLAN tag ke 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. Underlying physical interface (13) untuk overlay network meneruskan paket ke compute node 2 melalui overlay network (14).

Langkah berikut melibatkan komputasi node 2:

  1. underlying physical interface (15) untuk jaringan overlay meneruskan paket ke OVS tunnel bridge (16).
  2. OVS tunnel bridge membuka paket dan menambahkan internal tunnel IDuntuk paket itu.
  3. OVS tunnel bridge menukar internal tunnel ID dengan 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 the security group bridge OVS port (20) melalui pasangan veth.
  7. Security group rules (21) dari 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 antara jaringan self-service terjadi pada node komputasi yang berisi instance yang sedang mengirim paket. Dalam skenario ini, routing terjadi pada komputasi node 1 untuk paket dari instance 1 ke instance 2 dan pada komputasi 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.