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ğ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.
Newton uygulaması aşağıdaki kısıtlamaları içerir:
router:external
ağ olarak da işlev göremez. İlave yönlendirme, muhtemelen BGP dinamik yönlendirme kullanarak gelecekte bu sorunu çözebilir.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:
Segmentlerle başlayın. Ağ hizmeti, aşağıdaki bileşenleri kullanarak bir segment tanımlar:
Ö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.
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 |
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 |
... | ... | ... |
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 |
... | ... | ... |
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.
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
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
neutron-server
servisini yeniden başlatın.
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.
Yönetimsel proje kimlik bilgilerini kaynak olarak verin.
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 | [] |
+---------------------------+--------------------------------------+
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.
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 |
+------------------+--------------------------------------+
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 |
+--------------------------------------+----------+--------------------------------------+--------------+---------+
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.
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 |
+-------------------+--------------------------------------------------------+
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 | :-) |
+--------------------------------------+-------------+----------------+-------+
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.
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 | |
+----+---------------------------------------------------------+-------------------+
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 |
+-----------------------+--------------------------------------+
Except where otherwise noted, this document is licensed under Creative Commons Attribution 3.0 License. See all OpenStack Legal Documents.