Open vSwitch: DVR kullanarak yüksek kullanılabilirlik

Open vSwitch: DVR kullanarak yüksek kullanılabilirlik

Bu mimari örneği, belirli senaryolarda ağ düğümleri yerine hesaplama düğümlerinde self-servis ve sağlayıcı ağları arasında bağlantı sağlayan Dağıtılmış Sanal Yöneltici (DVR) yüksek kullanılabilirlik mekanizması ile self servis dağıtım örneğini zenginleştirir. Yüzen bir IPv4 adresine sahip sunucular için, self servis ve sağlayıcı ağları arasındaki yönlendirme, ağ düğümleri ile tekli başarısızlık ve performans sorunlarını gidermek için hesaplama düğümlerinde tamamen bulunur. Yönlendirme, aynı dağıtılmış sanal yönlendiricideki self servis ağları kullanarak sabit veya kayan IPv4 adresli sunucular için hesaplama düğümlerinde de bulunur. Bununla birlikte, sabit bir IP adresine sahip olan sunucular, yönlendirme ve düğüm hizmetleri için self-servis ve sağlayıcı ağları arasındaki ağ düğümüne hala güvenmektedir.

Ortamınızdaki pratikliği belirlemek için bu yüksek kullanılabilirlik mekanizmasının aşağıdaki özelliklerini göz önünde bulundurun:

  • Örneğin, kayan bir IPv4 adresine sahip bir self-servis ağında bulunuyorsa, sunucunun bulunduğu hesaplama düğümü aracılığıyla bir sunucuya bir bağlantı sağlar. Yalnızca bir IPv6 adresi veya her ikisi de IPv4 ve IPv6 adresleri olan self servis ağlardaki sunucular, IPv6 bağlantısı için ağ düğümüne güvenir.
  • Her hesaplama düğümünde bir yönlendiricinin örneği, ağ geçidi içeren sağlayıcı ağında bir IPv4 adresi tüketir.

Önkoşullar

Hesaplama düğümlerini aşağıdaki bileşenlerle düzenleyin:

  • OpenStack Ağ katman-3 aracısını kurun.

Not

Sabit bir IP adresli örnekler için yüksek kullanılabilirlik sağlamak için en az bir ek ağ düğümü eklemeyi düşünün. Daha fazla bilgi için bakınız VRRP ile Dağıtık Sanal Yönlendirme.

Mimari

High-availability using Open vSwitch with DVR - overview

Aşağıdaki resim, bir self-servis ağı ve bir etiketsiz (düz) ağ için bileşenleri ve bağlantıyı göstermektedir. Bu durumda, sunucu, ağ için DHCP aracı ile aynı hesaplama düğümünde bulunur. DHCP aracı başka bir hesaplama düğümünde bulunuyorsa, sonuncusu yalnızca OVS entegrasyon köprüsünde bir bağlantı noktasına sahip bir DHCP ad alanını içerir.

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

Örnek yapılandırma

Aşağıdaki örnek yapılandırmayı, self servis ağları destekleyen mevcut bir operasyonel ortama DVR kullanarak yüksek kullanılabilirlik desteği eklemek için bir şablon olarak kullanın.

Denetleyici düğüm

  1. neutron.conf dosyasında:

    • Tüm yönlendiriciler için varsayılan olarak dağıtılmış yönlendirmeyi etkinleştirin.

      [DEFAULT]
      router_distributed = True
      
  2. Aşağıdaki servisleri yeniden başlatın:

    • Sunucu

Ağ düğümü

  1. openswitch_agent.ini dosyasında, dağıtık yönlendirmeyi etkinleştir.

    [DEFAULT]
    enable_distributed_routing = True
    
  2. l3_agent.ini dosyasında, SNAT servislerini sağlamak için katman-3 ajanını yapılandırın.

    [DEFAULT]
    agent_mode = dvr_snat
    

    Not

    external_network_bridge seçeneğinin değeri bilerek boş bırakılmıştır.

  3. Aşağıdaki servisleri yeniden başlatın:

    • Open vSwitch ajanı
    • Katman-3 ajanı

Hesaplama düğümleri

  1. Ağ hizmeti katman-3 aracısını yükleyin.

  2. openswitch_agent.ini dosyasında, dağıtık yönlendirmeyi etkinleştir.

    [DEFAULT]
    enable_distributed_routing = True
    
  3. l3_agent.ini dosyasında, katman-3 ajanını yapılandır.

    [DEFAULT]
    interface_driver = openvswitch
    external_network_bridge =
    agent_mode = dvr
    

    Not

    external_network_bridge seçeneğinin değeri bilerek boş bırakılmıştır.

  4. Aşağıdaki servisleri yeniden başlatın:

    • Open vSwitch ajanı
    • Katman-3 ajanı

Servis işlemini doğrula

  1. Yönetimsel proje kimlik bilgilerini kaynak olarak verin.

  2. Ajanların varlığını ve işlevini doğrula.

    $ 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 |
    +--------------------------------------+--------------------+----------+-------------------+-------+-------+---------------------------+
    

Başlangıç ağları oluştur

Self-servis kurulum örneğine benzer şekilde, bu yapılandırma birden fazla VXLAN self-servis ağını desteklemektedir. Yüksek kullanılabilirlik sağlandıktan sonra, tüm ek yönlendiriciler dağıtılmış yönlendirme kullanır. Aşağıdaki prosedür, ilave bir self-servis ağı ve yönlendirici oluşturur. Ağ hizmeti, mevcut yönlendiricilere dağıtılmış yönlendirme eklemeyi de destekler.

  1. Normal (idari olmayan) bir proje kimlik bilgisi kaynağı.

  2. Bir self-servis ağı oluştur.

    $ 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. Self-servis ağı üzerinde bir IPv4 alt ağı oluştur.

    $ 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. Self-servis ağı üzerinde bir IPv6 alt ağı oluştur.

    $ 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. Bir yönlendirici oluştur.

    $ openstack router create router2
    +-----------------------+---------+
    | Field                 | Value   |
    +-----------------------+---------+
    | admin_state_up        | UP      |
    | name                  | router2 |
    | status                | ACTIVE  |
    +-----------------------+---------+
    
  6. Yönlendirici üzerinde arabirim olarak IPv4 ve IPv6 alt ağları ekle.

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

    Not

    Bu komut hiç çıktı üretmedi.

  7. Yönlendirici üzerine bir sağlayıcı ağı geçit olarak ekleyin.

    $ openstack router set router2 --external-gateway provider1
    

Ağ işlemlerini doğrula

  1. Yönetimsel proje kimlik bilgilerini kaynak olarak verin.

  2. Yönlendirici üzerinde dağıtık yönlendirmeyi doğrula.

    $ openstack router show router2
    +-------------------------+---------+
    | Field                   | Value   |
    +-------------------------+---------+
    | admin_state_up          | UP      |
    | distributed             | True    |
    | ha                      | False   |
    | name                    | router2 |
    | status                  | ACTIVE  |
    +-------------------------+---------+
    
  3. Her hesaplama düğümünde, aynı kimliği olan bir qrouter ad alanının oluşturulmasını doğrulayın.

    Hesaplama düğümü 1:

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

    Hesaplama düğümü 2:

    # ip netns
    qrouter-78d2f628-137c-4f26-a257-25fc20f203c1
    
  4. Ağ düğümünde, aynı kimliğe sahip snat ve qrouter ad alanlarının oluşturulmasını doğrulayın.

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

    Not

    :ref:`deploy-ovs-selfservice`den yönlendirici 1 için ad alanı, ağın düğümü 1’de, dağıtımlı yönlendirmeyi etkinleştirmeden önce oluşturulması nedeniyle görünmelidir.

  5. Ek self-servis ağında bir arabirimle bir sunucuyu başlatın. Örneğin, flavor ID 1’i kullanan bir CirrOS imajı.

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

    ``NETWORK_ID``yi ek self-servis ağı kimliği ile değiştirin.

  6. Sunucunun IPv4 ve IPv6 adreslerini belirleyin.

    $ 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. Sağlayıcı ağ üzerinde yüzen IPv4 adresini oluşturun.

    $ 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. Sunucu ile yüzen IPv4 adresini ilişkilendir.

    $ openstack server add floating ip selfservice-instance2 203.0.113.17
    

    Not

    Bu komutun hiç çıktısı yok.

  9. Sunucuyu içeren hesaplama düğümü üzerinde, fip ad alanının aynı ID ile sağlayıcı ağ olarak oluşturulduğunu doğrulayın.

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

Ağ trafik akışı

Aşağıdaki bölümlerde, birkaç yaygın senaryoda ağ trafiğinin akışını açıklanmaktadır. kuzey-güney ağ trafiği, bir sunucu ile İnternet gibi harici bir ağ arasında dolaşır. doğu-batı ağ trafiği aynı veya farklı ağlardaki sunucular arasında dolaşır. Tüm senaryolarda, fiziksel ağ altyapısı, sağlayıcının ağları ve Internet gibi harici ağlar arasındaki geçiş ve yönlendirmeyi ele alır. Her bir durum aşağıdaki bileşenlerden birini veya daha fazlasını referans gösteriyor:

  • Sağlayıcı ağ (VLAN)
    • VLAN ID 101 (etiketli)
  • Self-servis ağ 1 (VXLAN)
    • VXLAN ID (VNI) 101
  • Self-servis ağ 2 (VXLAN)
    • VXLAN ID (VNI) 102
  • Self-servis yönlendirici
    • Sağlayıcı ağ üzerinde geçit
    • Self-servis ağ 1 üzerindeki arabirim
    • Self-servis ağ 2 üzerindeki arabirim
  • Sunucu 1
  • Sunucu 2

Bu bölümde yalnızca dağıtılmış sanal yönlendirmeden fayda sağlayan veya geleneksel operasyondan farklı akış senaryoları bulunur. Diğer akış senaryoları için bkz Ağ trafik akışı.

Kuzey-güney senaryosu 1: Sabit bir IP adresine sahip sunucu

:ref:`deploy-ovs-selfservice-networktrafficflow-ns1`e benzer şekilde, ağ düğümündeki yönlendirici ad alanı SNAT ad alanına girme haricinde. Ağ düğümü hala yönlendirici ad alanını içerir, ancak bu durumda hiçbir amaca hizmet etmemektedir.

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

Kuzey-güney senaryosu 2: Değişken IPv4 adresli sunucu

Dağıtılmış bir yönlendiricide bir self servis ağı kullanan bir kayan IPv4 adresine sahip sunucular için, sunucuyu içeren hesaplama düğümü, harici ağdan sunucuya geçen kuzey-güney trafiği üzerindeki Internet ve DNAT gibi sunucudan harici ağa geçen kuzey güney trafiği üzerinde SNAT’ı gerçekleştirir. Yüzen IP adresleri ve NAT IPv6’ya uygulanmaz. Bu sebeple, bu senaryoda, ağ düğümü IPv6 trafiğini yönlendirir. Internet gibi sunucu ile harici network arasında geçen kuzey-güney trafiği.

  • Sunucu 1, hesap düğümü 1’de bulunur ve self-servis ağı 1’i kullanır.
  • Internet üzerindeki bir ana makine sunucuya bir paket gönderir.

Aşağıdaki adımlar, hesaplama düğümünü içerir:

  1. Fiziksel ağ altyapısı (1) paketi sağlayıcı fiziksel ağ arayüzüne iletir (2).
  2. Sağlayıcı fiziksel ağ arabirimi paketi OVS sağlayıcı köprü sağlayıcısı ağ bağlantı noktasına iletir (3).
  3. OVS sağlayıcı köprüsü, gerçek VLAN etiketi 101’i dahili VLAN etiketi ile değiştirir.
  4. OVS sağlayıcı köprüsü phy-br-provider portu (4) paketi OVS entegrasyon köprüsü int-br-provider portuna iletir (5).
  5. Sağlayıcı ağı (6) için OVS entegrasyon köprü portu, dahili VLAN etiketini kaldırır ve paketi, kayan IP ad alanındaki sağlayıcı ağ arabirimine (7) iletir. Bu arabirim, sunucu yüzen IPv4 adresi için herhangi bir ARP isteğine yanıt verir.
  6. Yüzen IP ad alanı, paketi (8) dağıtılmış yönlendirici ad alanına (9) yönlendirir ve DVR dahili ağında bir çift IP adresi kullanır. Bu ad, sunucu kayan IPv4 adresini içerir.
  7. Yöneltici paket üzerinde hedef IP adresini self servis ağ arabirimi (10) üzerinden self servis ağdaki örnek IP adresine değiştiren DNAT’yi gerçekleştirir.
  8. Yöneltici, paketi kendi kendine hizmet ağı için OVS entegrasyon köprüsü portuna iletir (11).
  9. OVS entegrasyon köprüsü pakete dahili bir VLAN etiketi ekler.
  10. OVS entegrasyon köprüsü, dahili VLAN etiketini paketten kaldırır.
  11. OVS entegrasyon köprü güvenlik grubu portu (12), veth çifti vasıtasıyla paketi güvenlik grubu köprüsü OVS portuna (13) iletir.
  12. Güvenlik grubu köprüsündeki güvenlik grubu kuralları (14), paket için güvenlik duvarını ve bağlantı izlemeyi ele alır.
  13. Güvenlik grubu köprü örneği bağlantı noktası (15), paketi veth çifti aracılığıyla sunucu arabirimine (16) iletir.
High-availability using Open vSwitch with DVR - network traffic flow - north/south scenario 2

Not

Çıkış trafiği benzer adımları tersine çevirir, ancak SNAT, paketin kaynak IPv4 adresini kayan IPv4 adresine değiştirir.

Doğu-batı senaryosu 1: Aynı yönlendirici üzerindeki farklı ağlardaki sunucular

Aynı hesaplama düğümünde sabit IPv4/IPv6 adresi veya kayan IPv4 adresine sahip sunucular, hesaplama düğümünde yönlendirici yoluyla iletişim kurar. Farklı hesaplama düğümleri üzerindeki sunucular, her hesaplama düğümünde yönlendiricinin bir örneği aracılığıyla iletişim kurar.

Not

Bu senaryo, sunucuları en karmaşık durumu göstermek için farklı hesaplama düğümlerine yerleştirir.

Aşağıdaki adımlar hesaplama düğümü 1’i içerir:

  1. Sunucu arabirimi (1) paketi veth çifti aracılığıyla güvenlik grubu köprüsü sunucu portuna (2) iletir.
  2. Güvenlik grubu köprüsündeki güvenlik grubu kuralları (3), paket için güvenlik duvarını ve bağlantı izlemeyi ele alır.
  3. Güvenlik grubu köprüsü OVS portu (4), paketin veth çifti aracılığıyla OVS entegrasyon köprü güvenlik grubu portuna (5) iletilmesini sağlar.
  4. OVS entegrasyon köprüsü pakete dahili bir VLAN etiketi ekler.
  5. Self servis ağı 1 (6) için OVS entegrasyon köprü portu, dahili VLAN etiketini kaldırır ve paketi dağıtılmış router ad alanında (6) self-servis ağı 1 arabirimine iletir.
  6. Dağıtılmış yönlendirici ad alanı, paketin self servis ağı 2’ye yönlendirilmesini sağlar.
  7. Dağıtılmış yönlendirici ad alanındaki self-servis ağı 2 arabirimi (8) paketi, self-servis ağı 2 (9) için OVS entegrasyon köprü portuna iletir.
  8. OVS entegrasyon köprüsü pakete dahili bir VLAN etiketi ekler.
  9. OVS entegrasyon köprüsü dahili VLAN etiketi ile dahili bir tünel kimliğini değiştirir.
  10. OVS entegrasyon köprüsü patch-tun bağlantı noktası (10) paketi OVS tünel köprüsü patch-int bağlantı noktasına (11) iletir.
  11. OVS tünel köprüsü (12), VNI 101’i kullanarak paketi sarar.
  12. Yer paylaşımlı ağlar için altta yatan fiziksel arabirim (13), yer paylaşım ağı (14) vasıtasıyla hesaplama düğümü 2’ye paketi iletir.

Aşağıdaki adımlar hesaplama düğüm 2’yi içerir:

  1. Yerleşim ağları için alttaki fiziksel arabirim (15) paketi OVS tünel köprüsüne (16) iletir.
  2. OVS tünel köprüsü paketi açar ve ona bir dahili tünel kimliği ekler.
  3. OVS tünel köprüsü dahili bir VLAN etiketi için dahili tünel kimliğini değiştirir.
  4. OVS tünel köprüsü patch-int yama portu (17) paketi OVS entegrasyon köprüsü patch-tun yama portuna (18) iletir.
  5. OVS entegrasyon köprüsü, dahili VLAN etiketini paketten kaldırır.
  6. OVS entegrasyon köprü güvenlik grubu portu (19) paketi veth çifti ile güvenlik grubu köprüsü OVS portuna (20) iletir.
  7. Güvenlik grubu köprüsündeki güvenlik grubu kuralları (21), paket için güvenlik duvarını ve bağlantı izlemeyi ele alır.
  8. Güvenlik grubu köprü örneği bağlantı noktası (22), paketi veth çifti vasıtasıyla örnek 2 arabirimine (23) iletir.

Not

Self servis ağlar arasındaki yönlendirme, paket gönderen sunucuyu içeren hesaplama düğümünde gerçekleşir. Bu senaryoda, yönlendirme, sunucu 1’den sunucu 2’ye ve sunucu 2’den sunucu 1’e paketler için hesaplama düğümü 2’ndeki paketler için hesaplama düğümü 1’de gerçekleşir.

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.