Yönlendirilmiş sağlayıcı ağlar

Yönlendirilmiş sağlayıcı ağlar

Not

Deneysel özellik. Bu özelliğin kullanımı OpenStack istemcisinin 3.3 veya daha yeni sürümlerini gerektirir.

Yönlendirilen sağlayıcı ağlarından önce, Ağ hizmeti tek bir varlık olarak çok dilimli katman-3 ağını sunamadı. Bu nedenle, her operatör tipik olarak aşağıdaki mimarilerden birini seçti:

  • Tek büyük katman-2 ağı
  • Çok katmanlı daha küçük katman-2 ağları

Tek büyük katman-2 ağları ölçekte karmaşık hale gelir ve önemli başarısızlık alanlarını içerir.

Birden çok daha küçük katman-2 ağları daha iyi ölçeklenir ve başarısızlık alanlarını küçültür ancak ağ seçimini kullanıcıya bırakır. Ek bilgi olmadan, kullanıcılar bu ağları kolayca ayırt edemezler.

Yönlendirilmiş bir sağlayıcı ağı, tek bir sağlayıcı ağı ile birden fazla katman 2 ağını (yayın alanları) veya kesimleri temsil etmeyi ve operatöre kullanıcılara bir ağ sunmasını sağlar. Bununla birlikte, bir sunucuya ait belirli IP adresleri, belirli hesaplama düğümünde bulunan ağın bölümüne bağlıdır.

Geleneksel ağa benzer şekilde, katman-2 (anahtarlama), aynı segmentteki portlar arasındaki trafiği aktarır ve katman-3 (yönlendirme) segmentler arasındaki trafiğin geçişini ele alır.

Her bölüm, açıkça bu segmente ait en az bir alt ağ gerektirir. Bir segment ve bir alt ağ arasındaki ilişki, yönlendirilmiş bir sağlayıcı ağını diğer ağ türlerinden ayırır. Ağ hizmeti, belirli bir ağdaki sıfır veya tüm alt ağların bir bölümle ilişkilendirilmesini zorlar. Örneğin, segmentleri olan alt ağları içeren bir ağda bir bölüm olmadan bir alt ağ oluşturmaya çalışılırken bir hata oluşur.

Ağ hizmeti, kesimler arasında katman-3 hizmetleri sağlamaz. Bunun yerine, alt ağları yönlendirmek için fiziksel ağ altyapısına güvenir. Bu nedenle hem Ağ hizmeti hem de fiziksel ağ altyapısı, geleneksel sağlayıcı ağlarına benzer şekilde yönlendirilmiş sağlayıcı ağları için yapılandırma içermelidir. Gelecekte, dinamik yönlendirme protokollerinin uygulanması yönlendirilen ağların yapılandırmasını kolaylaştırabilir.

Kısıtlamalar

Newton uygulaması aşağıdaki kısıtlamaları içerir:

  • Hesaplama zamanlayıcısı, yönlendirilmiş bir ağdaki IP adresi kaynaklarının farkındalığından yoksundur. Böylece, zamanlayıcı, başka bir kesimden IP adresleri atamadan önce bir segmentteki IP adreslerini tüketebilir. Hesaplama zamanlayıcısının Ocata sürümü, kullanılabilir IP adresleri olmayan bölümler etrafında zamanlama yeteneği sağlamalıdır. Newton’da, Hesaplama zamanlayıcı, sağlayıcı ağı üzerinde herhangi bir hesaplama düğümü seçer. Bu hesaplama düğümündeki bölümde kullanılabilir IP adresleri yoksa, bağlantı noktası bağlaması başarısız olur ve Hesaplama zamanlayıcısı, segmentler dikkate alınmadan başka bir hesaplama düğümü seçer. Yeniden zamanlama, maksimum yeniden deneme sayısına kadar devam eder. Operatörler, IP kullanımını izlemeli ve IP adreslerinin tüketilmesinden önce segmentlere alt ağlar eklemelidir. Daha fazla bilgi için, bakınız blueprint.
  • Yönlendirilmiş bir sağlayıcı ağı, kayan IPv4 adresleri ile uyumluluğu engelleyen bir router:external ağ olarak da işlev göremez. İlave yönlendirme, muhtemelen BGP dinamik yönlendirme kullanarak gelecekte bu sorunu çözebilir.

Önkoşullar

Yönlendirilmiş sağlayıcı ağları, geleneksel sağlayıcı ağları üzerinden ek önkoşullar gerektirir. Aşağıdaki yöntemi kullanmanızı öneririz:

  1. Segmentlerle başlayın. Ağ hizmeti, aşağıdaki bileşenleri kullanarak bir segment tanımlar:

    • Benzersiz fiziksel ağ adı
    • Dilim türü
    • Dilim ID

    Örnek, provider1, VLAN, ve 2016. Daha fazla bilgi için `API kılavuzu <https://developer.openstack.org/api-ref/networking/v2/#segments>`_na bakınız.

    Bir ağ içinde, alt segmentler arasında aynı bölümlendirme ayrıntılarının tekrar kullanılmasını sağlayan her segment için benzersiz bir fiziksel ağ adı kullanın. Örneğin, belirli bir sağlayıcı ağının tüm kesimlerinde aynı VLAN kimliği kullanılarak. Geleneksel sağlayıcı ağlarına benzer şekilde, operatör katman-2 fiziksel ağ altyapısını buna göre hazırlamalıdır.

  2. Segmentler arasında yönlendirme uygulayın.

    Ağ hizmeti, bölümler arasında yönlendirme sağlamaz. Operatör, bir sağlayıcı ağı kesimleri arasında yönlendirme uygulamalıdır. Bir segmentteki her alt ağda, söz konusu alt ağdaki yönlendirici arayüzünün ağ geçidi adresi bulunmalıdır. Örneğin:

    Dilim Sürüm Adresler Geçit
    segment1 4 203.0.113.0/24 203.0.113.1
    segment1 6 fd00:203:0:113::/64 fd00:203:0:113::1
    segment2 4 198.51.100.0/24 198.51.100.1
    segment2 6 fd00:198:51:100::/64 fd00:198:51:100::1
  3. Dilimleri hesaplama düğümleriyle eşleştir.

    Yönlendirilmiş sağlayıcı ağları, hesaplama düğümlerinin farklı segmentlerde bulunduğunu ima eder. Operatör, bir yönlendirici sağlayıcı ağına katılmayı düşündüğü her bilgisayarın kendi bölümlerinden birine doğrudan bağlandığından emin olmalıdır.

    Sunucu Raf Fiziksel Ağ
    compute0001 raf 1 dilim 1
    compute0002 raf 1 dilim 1
    ... ... ...
    compute0101 raf 2 segment 2
    compute0102 raf 2 segment 2
    compute0102 raf 2 segment 2
    ... ... ...
  4. DHCP ajanlarını yayına al.

    Geleneksel sağlayıcının ağlarının aksine, DHCP aracı bir ağda birden fazla segmenti destekleyemez. Operatör, segment başına en az bir DHCP aracı yayına almalıdır. Düğüm sayısını azaltmak için bir veya daha fazla ağ düğümünden ziyade segmentleri içeren hesaplama düğümlerinde DHCP aracıları yayına almayı düşünün.

    Sunucu Raf Fiziksel Ağ
    network0001 raf 1 dilim 1
    network0002 raf 2 segment 2
    ... ... ...
  5. Ağ hizmetinin iletişim hesaplayıcısını Hesaplama zamanlayıcısı ile yapılandırın.

    Yönlendirilmiş bir sağlayıcı ağında bir IPv4 adresine sahip bir arayüze sahip bir sunucu Hesaplama zamanlayıcısı tarafından kullanılabilir IPv4 adreslerine sahip bir dilime erişimi olan bir ana bilgisayara yerleştirilmelidir. Bunu mümkün kılmak için, Ağ hizmeti, Hesaplama zamanlayıcısına yönlendirilmiş bir sağlayıcı ağının her bir bölümüyle ilişkili IPv4 adreslerinin envanterini iletir. Operatör, Ağ hizmetinin Hesaplama zamanlayıcı yerleştirme API’si ile iletişim kurmak için kullanacağı kimlik doğrulama bilgilerini yapılandırmalıdır. Lütfen aşağıda örnek yapılandırmaya bakın.

    Not

    Büyük adres alanlarının bir sonucu olarak IPv6 alt ağları için Ağ hizmeti ve Hesaplama zamanlayıcı arasındaki koordinasyon gerekli değildir.

    Not

    Ağ hizmeti ve Hesaplama zamanlayıcısı arasındaki koordinasyon, aşağıdaki minimum API mikro sürümlerini gerektirir.

    • Hesaplama servisi API: 2.41
    • Yerleştirme API: 1.1

Örnek yapılandırma

Denetleyici düğüm

  1. neutron-server servisimi çalıştıran tüm düğümlerdeki neutron.conf dosyasındaki service_plugins listesine segments ekleyerek dilim sevis eklentisini etkinleştirin:

    [DEFAULT]
    # ...
    service_plugins = ..., segments
    
  2. Hesaplama servisi yerleşim API’si için kimlik doğrulama kimlik bilgileriyle birlikte neutron.conf dosyasına bir placement bölümü ekleyin:

    [placement]
    auth_uri = http://192.0.2.72/identity
    project_domain_name = Default
    project_name = service
    user_domain_name = Default
    password = apassword
    username = nova
    auth_url = http://192.0.2.72/identity_admin
    auth_type = password
    region_name = RegionOne
    
  3. neutron-server servisini yeniden başlatın.

Ağ veya hesaplama düğümleri

  • Bir veya daha fazla segmenti uygun fiziksel ağ köprüsüne veya arabirime eşlemek ve aracıyı yeniden başlatmak için her düğüm üzerindeki katman-2 aracısını yapılandırın.

Yönlendirilmiş bir sağlayıcı ağı oluşturma

Aşağıdaki adımlar, iki bölümlü yönlendirilmiş sağlayıcı ağı oluşturur. Her bölüm bir IPv4 alt ağ ve bir de IPv6 alt ağ içerir.

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

  2. Bir varsayılan segment içeren bir VLAN sağlayıcı ağı oluşturun. Bu örnekte, ağ, VLAN ID 2016 olan provider1 fiziksel ağını kullanmaktadır.

    $ openstack network create --share --provider-physical-network provider1 \
      --provider-network-type vlan --provider-segment 2016 multisegment1
    +---------------------------+--------------------------------------+
    | Field                     | Value                                |
    +---------------------------+--------------------------------------+
    | admin_state_up            | UP                                   |
    | id                        | 6ab19caa-dda9-4b3d-abc4-5b8f435b98d9 |
    | ipv4_address_scope        | None                                 |
    | ipv6_address_scope        | None                                 |
    | l2_adjacency              | True                                 |
    | mtu                       | 1500                                 |
    | name                      | multisegment1                        |
    | port_security_enabled     | True                                 |
    | provider:network_type     | vlan                                 |
    | provider:physical_network | provider1                            |
    | provider:segmentation_id  | 2016                                 |
    | router:external           | Internal                             |
    | shared                    | True                                 |
    | status                    | ACTIVE                               |
    | subnets                   |                                      |
    | tags                      | []                                   |
    +---------------------------+--------------------------------------+
    
  3. Varsayılan dilimi segment1 olarak yeniden adlandırın.

    $ openstack network segment list --network multisegment1
    +--------------------------------------+----------+--------------------------------------+--------------+---------+
    | ID                                   | Name     | Network                              | Network Type | Segment |
    +--------------------------------------+----------+--------------------------------------+--------------+---------+
    | 43e16869-ad31-48e4-87ce-acf756709e18 | None     | 6ab19caa-dda9-4b3d-abc4-5b8f435b98d9 | vlan         |    2016 |
    +--------------------------------------+----------+--------------------------------------+--------------+---------+
    
    $ openstack network segment set --name segment1 43e16869-ad31-48e4-87ce-acf756709e18
    

    Not

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

  4. Sağlayıcı ağı üzerinde ikinci bir bölüm oluşturun. Bu örnekte, segment, VLAN ID 2016 olan provider2 fiziksel ağını kullanmaktadır.

    $ openstack network segment create --physical-network provider2 \
       --network-type vlan --segment 2016 --network multisegment1 segment2
    +------------------+--------------------------------------+
    | Field            | Value                                |
    +------------------+--------------------------------------+
    | description      | None                                 |
    | headers          |                                      |
    | id               | 053b7925-9a89-4489-9992-e164c8cc8763 |
    | name             | segment2                             |
    | network_id       | 6ab19caa-dda9-4b3d-abc4-5b8f435b98d9 |
    | network_type     | vlan                                 |
    | physical_network | provider2                            |
    | segmentation_id  | 2016                                 |
    +------------------+--------------------------------------+
    
  5. Ağın segment1 ve segment2 dilimlerini içerdiğini doğrulayın.

    $ openstack network segment list --network multisegment1
    +--------------------------------------+----------+--------------------------------------+--------------+---------+
    | ID                                   | Name     | Network                              | Network Type | Segment |
    +--------------------------------------+----------+--------------------------------------+--------------+---------+
    | 053b7925-9a89-4489-9992-e164c8cc8763 | segment2 | 6ab19caa-dda9-4b3d-abc4-5b8f435b98d9 | vlan         |    2016 |
    | 43e16869-ad31-48e4-87ce-acf756709e18 | segment1 | 6ab19caa-dda9-4b3d-abc4-5b8f435b98d9 | vlan         |    2016 |
    +--------------------------------------+----------+--------------------------------------+--------------+---------+
    
  6. segment1 diliminde alt ağlar oluşturun. Bu örnekte, IPv4 alt ağında 203.0.113.0/24 kullanılıyor ve IPv6 alt ağında fd00:203:0:113::/64 kullanılıyor.

    $ openstack subnet create \
      --network multisegment1 --network-segment segment1 \
      --ip-version 4 --subnet-range 203.0.113.0/24 \
      multisegment1-segment1-v4
    +-------------------+--------------------------------------+
    | Field             | Value                                |
    +-------------------+--------------------------------------+
    | allocation_pools  | 203.0.113.2-203.0.113.254            |
    | cidr              | 203.0.113.0/24                       |
    | enable_dhcp       | True                                 |
    | gateway_ip        | 203.0.113.1                          |
    | id                | c428797a-6f8e-4cb1-b394-c404318a2762 |
    | ip_version        | 4                                    |
    | name              | multisegment1-segment1-v4            |
    | network_id        | 6ab19caa-dda9-4b3d-abc4-5b8f435b98d9 |
    | segment_id        | 43e16869-ad31-48e4-87ce-acf756709e18 |
    +-------------------+--------------------------------------+
    
    $ openstack subnet create \
      --network multisegment1 --network-segment segment1 \
      --ip-version 6 --subnet-range fd00:203:0:113::/64 \
      --ipv6-address-mode slaac multisegment1-segment1-v6
    +-------------------+------------------------------------------------------+
    | Field             | Value                                                |
    +-------------------+------------------------------------------------------+
    | allocation_pools  | fd00:203:0:113::2-fd00:203:0:113:ffff:ffff:ffff:ffff |
    | cidr              | fd00:203:0:113::/64                                  |
    | enable_dhcp       | True                                                 |
    | gateway_ip        | fd00:203:0:113::1                                    |
    | id                | e41cb069-9902-4c01-9e1c-268c8252256a                 |
    | ip_version        | 6                                                    |
    | ipv6_address_mode | slaac                                                |
    | ipv6_ra_mode      | None                                                 |
    | name              | multisegment1-segment1-v6                            |
    | network_id        | 6ab19caa-dda9-4b3d-abc4-5b8f435b98d9                 |
    | segment_id        | 43e16869-ad31-48e4-87ce-acf756709e18                 |
    +-------------------+------------------------------------------------------+
    

    Not

    Varsayılan olarak, sağlayıcı ağlarındaki IPv6 alt ağları, stateless adres otomatik yapılandırması (SLAAC) ve yönlendirici reklamı için fiziksel ağ altyapısına dayalıdır.

  7. segment2 diliminde alt ağlar oluşturun. Bu örnekte, IPv4 alt ağında 198.51.100.0/24 kullanılıyor ve IPv6 alt ağında fd00:198:51:100::/64 kullanılıyor.

    $ openstack subnet create \
      --network multisegment1 --network-segment segment2 \
      --ip-version 4 --subnet-range 198.51.100.0/24 \
      multisegment1-segment2-v4
    +-------------------+--------------------------------------+
    | Field             | Value                                |
    +-------------------+--------------------------------------+
    | allocation_pools  | 198.51.100.2-198.51.100.254          |
    | cidr              | 198.51.100.0/24                      |
    | enable_dhcp       | True                                 |
    | gateway_ip        | 198.51.100.1                         |
    | id                | 242755c2-f5fd-4e7d-bd7a-342ca95e50b2 |
    | ip_version        | 4                                    |
    | name              | multisegment1-segment2-v4            |
    | network_id        | 6ab19caa-dda9-4b3d-abc4-5b8f435b98d9 |
    | segment_id        | 053b7925-9a89-4489-9992-e164c8cc8763 |
    +-------------------+--------------------------------------+
    
    $ openstack subnet create \
      --network multisegment1 --network-segment segment2 \
      --ip-version 6 --subnet-range fd00:198:51:100::/64 \
      --ipv6-address-mode slaac multisegment1-segment2-v6
    +-------------------+--------------------------------------------------------+
    | Field             | Value                                                  |
    +-------------------+--------------------------------------------------------+
    | allocation_pools  | fd00:198:51:100::2-fd00:198:51:100:ffff:ffff:ffff:ffff |
    | cidr              | fd00:198:51:100::/64                                   |
    | enable_dhcp       | True                                                   |
    | gateway_ip        | fd00:198:51:100::1                                     |
    | id                | b884c40e-9cfe-4d1b-a085-0a15488e9441                   |
    | ip_version        | 6                                                      |
    | ipv6_address_mode | slaac                                                  |
    | ipv6_ra_mode      | None                                                   |
    | name              | multisegment1-segment2-v6                              |
    | network_id        | 6ab19caa-dda9-4b3d-abc4-5b8f435b98d9                   |
    | segment_id        | 053b7925-9a89-4489-9992-e164c8cc8763                   |
    +-------------------+--------------------------------------------------------+
    
  8. Her IPv4 alt ağının en az bir DHCP aracı ile ilişkili olduğunu doğrulayın.

    $ neutron dhcp-agent-list-hosting-net multisegment1
    +--------------------------------------+-------------+----------------+-------+
    | id                                   | host        | admin_state_up | alive |
    +--------------------------------------+-------------+----------------+-------+
    | c904ed10-922c-4c1a-84fd-d928abaf8f55 | compute0001 | True           | :-)   |
    | e0b22cc0-d2a6-4f1c-b17c-27558e20b454 | compute0101 | True           | :-)   |
    +--------------------------------------+-------------+----------------+-------+
    
  9. Stokların, Hesaplama hizmeti yerleşimi API’sindeki her bir dilim IPv4 alt ağında oluşturulduğunu doğrulayın (kısalık uğruna, dilimlerden yalnızca biri bu örnekte gösterilmiştir).

    Not

    URL’ler OpenStack dağıtımınıza bağlı olarak farklılık gösterir. URL’yi openstack endpoint list | grep placement komutunu çalıştırarak keşfedebilirsiniz.

    $ SEGMENT_ID=053b7925-9a89-4489-9992-e164c8cc8763
    $ curl -s -X GET \
      http://localhost/placement/resource_providers/$SEGMENT_ID/inventories \
      -H "Content-type: application/json" \
      -H "X-Auth-Token: $TOKEN" \
      -H "Openstack-Api-Version: placement 1.1"
    {
        "resource_provider_generation": 1,
        "inventories": {
            "allocation_ratio": 1,
            "total": 254,
            "reserved": 2,
            "step_size": 1,
            "min_unit": 1,
            "max_unit": 1
        }
    }
    

    Not

    Bu kılavuzun yazılmasından bu yana yerleşim API CLI istemcisi yok, bu nedenle curl komutu bu örnek için kullanılıyor.

  10. Ana bilgisayar toplamlarının Hesaplama hizmetindeki her bölüm için oluşturulduğunu doğrulayın (kısalık uğruna dilimlerden yalnızca biri bu örnekte gösterilmiştir).

    $ nova aggregate-list
    +----+---------------------------------------------------------+-------------------+
    | Id | Name                                                    | Availability Zone |
    +----+---------------------------------------------------------+-------------------+
    | 10 | Neutron segment id 053b7925-9a89-4489-9992-e164c8cc8763 |                   |
    +----+---------------------------------------------------------+-------------------+
    
  11. Bir veya daha fazla örneği başlatın. Her örnek, belirli hesaplama düğümünde kullandığı dilime göre IP adresleri alır.

    Not

    If a fixed IP is specified by the user in the port create request, that particular IP is allocated immediately to the port. However, creating a port and passing it to an instance yields a different behavior than conventional networks. The Networking service defers assignment of IP addresses to the port until the particular compute node becomes apparent. For example:

    $ openstack port create --network multisegment1 port1
    +-----------------------+--------------------------------------+
    | Field                 | Value                                |
    +-----------------------+--------------------------------------+
    | admin_state_up        | UP                                   |
    | binding_vnic_type     | normal                               |
    | id                    | 6181fb47-7a74-4add-9b6b-f9837c1c90c4 |
    | ip_allocation         | deferred                             |
    | mac_address           | fa:16:3e:34:de:9b                    |
    | name                  | port1                                |
    | network_id            | 6ab19caa-dda9-4b3d-abc4-5b8f435b98d9 |
    | port_security_enabled | True                                 |
    | security_groups       | e4fcef0d-e2c5-40c3-a385-9c33ac9289c5 |
    | status                | DOWN                                 |
    +-----------------------+--------------------------------------+
    
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.