Bu mimari örneği, neredeyse sınırsız miktarda tamamen sanal ağları desteklemek için Linux köprü: Sağlayıcı ağlar işlevini güçlendirir. Ağ hizmeti, VLAN self-servis ağlarını desteklese de, bu örnek VXLAN self servis ağlarına odaklanmaktadır. Self servis ağları hakkında daha fazla bilgi için bkz Self-servis ağları.
Not
Linux köprü aracısı, GRE ve Geneve gibi diğer yerleşik protokolleri desteklemiyor.
Aşağıdaki bileşenleri içeren bir ağ düğümü ekleyin:
Hesaplama düğümlerini aşağıdaki bileşenlerle düzenleyin:
Not
DHCP ve meta veri aracısını her hesaplama düğümünde tutabilir veya ağ düğümüne taşıyabilirsiniz.
Aşağıdaki resim, bir kendi kendine hizmet ağına ve bir etiketsiz (düz) sağlayıcı ağı için bileşenleri ve bağlanabilirliği 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 bir DHCP ad alanı ve yer paylaşımı fiziksel ağ arayüzünde bir bağlantı noktası olan Linux köprüsü içerir.
Sağlayıcı ağlarını destekleyen mevcut bir operasyon ortamına self servis ağlar için destek eklemek için aşağıdaki örnek yapılandırmayı şablon olarak kullanın.
neutron.conf
dosyasında:
Yönlendirmeyi etkinleştirin ve çakışan IP adres aralıklarına izin verin.
[DEFAULT]
service_plugins = router
allow_overlapping_ips = True
ml2_conf.ini
dosyasında:
Sürücüleri ve proje ağ türlerini yazmak için vxlan
ekleyin.
[ml2]
type_drivers = flat,vlan,vxlan
tenant_network_types = vxlan
Katman-2 nüfus mekanizma sürücüsünü etkinleştir.
[ml2]
mechanism_drivers = linuxbridge,l2population
VXLAN ağ kimliği (VNI) aralığını yapılandırın.
[ml2_type_vxlan]
vni_ranges = VNI_START:VNI_END
VNI_START
ve VNI_END
değerlerini uygun sayısal değerlerle değiştirin.
Aşağıdaki servisleri yeniden başlatın:
Ağ hizmeti katman-3 aracısını yükleyin.
neutron.conf
dosyasında, genel seçenekleri yapılandırın:
[DEFAULT]
core_plugin = ml2
auth_strategy = keystone
[database]
# ...
[keystone_authtoken]
# ...
[nova]
# ...
[agent]
# ...
[DEFAULT]
, [database]
, [keystone_authtoken]
, [nova]
, ve [agent]
bölümleri için uygun ek yapılandırmaları bulmak için OpenStack sürümünüze göre Kurulum Dökümanları ve Kılavuzları ve Yapılandırma Kılavuzu belgelerine bakın.
linuxbridge_agent.ini
dosyasında, katman-2 ajanını yapılandır.
[linux_bridge]
physical_interface_mappings = provider:PROVIDER_INTERFACE
[vxlan]
enable_vxlan = True
l2_population = True
local_ip = OVERLAY_INTERFACE_IP_ADDRESS
[securitygroup]
firewall_driver = iptables
Sağlayıcı ağları barındıran ilgili arabirimin adı ile PROVIDER_INTERFACE``i yer değiştirin. Örnek, ``eth1
.
``OVERLAY_INTERFACE_IP_ADDRESS``i self servis ağları için VXLAN yer paylaşımlarını yöneten arabirimin IP adresiyle değiştirin.
l3_agent.ini
dosyasında, katman-3 ajanını yapılandır.
[DEFAULT]
interface_driver = linuxbridge
external_network_bridge =
Not
external_network_bridge
seçeneğinin değeri bilerek boş bırakılmıştır.
Aşağıdaki servisleri başlatın:
linuxbridge_agent.ini
dosyasında, katman-2 nüfusu da dahil olmak üzere VXLAN desteğini etkinleştirin.
[vxlan]
enable_vxlan = True
l2_population = True
local_ip = OVERLAY_INTERFACE_IP_ADDRESS
``OVERLAY_INTERFACE_IP_ADDRESS``i self servis ağları için VXLAN yer paylaşımlarını yöneten arabirimin IP adresiyle değiştirin.
Aşağıdaki servisleri yeniden başlatın:
Yönetimsel proje kimlik bilgilerini kaynak olarak verin.
Ajanların varlığını ve işlevini doğrula.
$ openstack network agent list
+--------------------------------------+--------------------+----------+-------------------+-------+-------+---------------------------+
| ID | Agent Type | Host | Availability Zone | Alive | State | Binary |
+--------------------------------------+--------------------+----------+-------------------+-------+-------+---------------------------+
| 09de6af6-c5f1-4548-8b09-18801f068c57 | Linux bridge agent | compute2 | | True | UP | neutron-linuxbridge-agent |
| 188945d1-9e70-4803-a276-df924e0788a4 | Linux bridge agent | compute1 | | True | UP | neutron-linuxbridge-agent |
| e76c440d-d5f6-4316-a674-d689630b629e | DHCP agent | compute1 | nova | True | UP | neutron-dhcp-agent |
| e67367de-6657-11e6-86a4-931cd04404bb | DHCP agent | compute2 | nova | True | UP | neutron-dhcp-agent |
| e8174cae-6657-11e6-89f0-534ac6d0cb5c | Metadata agent | compute1 | | True | UP | neutron-metadata-agent |
| ece49ec6-6657-11e6-bafb-c7560f19197d | Metadata agent | compute2 | | True | UP | neutron-metadata-agent |
| 598f6357-4331-4da5-a420-0f5be000bec9 | L3 agent | network1 | nova | True | UP | neutron-l3-agent |
| f4734e0f-bcd5-4922-a19d-e31d56b0a7ae | Linux bridge agent | network1 | | True | UP | neutron-linuxbridge-agent |
+--------------------------------------+--------------------+----------+-------------------+-------+-------+---------------------------+
Yapılandırma, birden fazla VXLAN self servis ağını destekler. Kolaylık sağlamak için, aşağıdaki yordam bir self-servis ağı ve düz tedarikçi ağında bir ağ geçidi bulunan bir yönlendirici oluşturur. Yönlendirici, IPv4 ağ trafiğinde NAT kullanır ve doğrudan IPv6 ağ trafiğini yönlendirir.
Not
Self servis ağlar ile IPv6 bağlantısı genellikle düğümlere statik yol eklemeyi ve fiziksel ağ altyapısını gerektirir.
Yönetimsel proje kimlik bilgilerini kaynak olarak verin.
Self servis ağlar için harici bağlantıyı desteklemek için sağlayıcı ağını güncelleyin.
$ openstack network set --external provider1
Not
Bu komutun hiç çıktısı yok.
Normal (idari olmayan) bir proje kimlik bilgisi kaynağı.
Bir self-servis ağı oluştur.
$ openstack network create selfservice1
+-------------------------+--------------+
| Field | Value |
+-------------------------+--------------+
| admin_state_up | UP |
| mtu | 1450 |
| name | selfservice1 |
| port_security_enabled | True |
| router:external | Internal |
| shared | False |
| status | ACTIVE |
+-------------------------+--------------+
Self-servis ağı üzerinde bir IPv4 alt ağı oluştur.
$ openstack subnet create --subnet-range 192.0.2.0/24 \
--network selfservice1 --dns-nameserver 8.8.4.4 selfservice1-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 | selfservice1-v4 |
+-------------------+---------------------------+
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 selfservice1 \
--dns-nameserver 2001:4860:4860::8844 selfservice1-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 | selfservice1-v6 |
+-------------------+------------------------------------------------------+
Bir yönlendirici oluştur.
$ openstack router create router1
+-----------------------+---------+
| Field | Value |
+-----------------------+---------+
| admin_state_up | UP |
| name | router1 |
| status | ACTIVE |
+-----------------------+---------+
Yönlendirici üzerinde arabirim olarak IPv4 ve IPv6 alt ağları ekle.
$ openstack router add subnet router1 selfservice1-v4
$ openstack router add subnet router1 selfservice1-v6
Not
Bu komut hiç çıktı üretmedi.
Yönlendirici ağ sağlayıcısını ağ geçidi olarak ekleyin.
$ neutron router-gateway-set router1 provider1
Set gateway for router router1
Her hesaplama düğümünde, ikinci bir qdhcp
ad alanının oluşturulmasını doğrulayın.
# ip netns
qdhcp-8b868082-e312-4110-8627-298109d4401c
qdhcp-8fbc13ca-cfe0-4b8a-993b-e33f37ba66d1
Ağ düğümünde, qrouter
ad alanının oluşturulmasını doğrulayın.
# ip netns
qrouter-17db2a15-e024-46d0-9250-4cd4d336a2cc
Normal (idari olmayan) bir proje kimlik bilgisi kaynağı.
Ağı kullanarak ping
ve SSH erişim örneklerine izin vermek için uygun güvenlik grubu kurallarını oluşturun.
$ openstack security group rule create --proto icmp default
+------------------+-----------+
| Field | Value |
+------------------+-----------+
| direction | ingress |
| ethertype | IPv4 |
| protocol | icmp |
| remote_ip_prefix | 0.0.0.0/0 |
+------------------+-----------+
$ openstack security group rule create --ethertype IPv6 --proto ipv6-icmp default
+-----------+-----------+
| Field | Value |
+-----------+-----------+
| direction | ingress |
| ethertype | IPv6 |
| protocol | ipv6-icmp |
+-----------+-----------+
$ openstack security group rule create --proto tcp --dst-port 22 default
+------------------+-----------+
| Field | Value |
+------------------+-----------+
| direction | ingress |
| ethertype | IPv4 |
| port_range_max | 22 |
| port_range_min | 22 |
| protocol | tcp |
| remote_ip_prefix | 0.0.0.0/0 |
+------------------+-----------+
$ openstack security group rule create --ethertype IPv6 --proto tcp --dst-port 22 default
+------------------+-----------+
| Field | Value |
+------------------+-----------+
| direction | ingress |
| ethertype | IPv6 |
| port_range_max | 22 |
| port_range_min | 22 |
| protocol | tcp |
+------------------+-----------+
Self servis ağı üzerindeki bir arayüzle 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-instance1
NETWORK_ID
ile self servis ağın ID’sini değiştirin.
Sunucunun IPv4 ve IPv6 adreslerini belirleyin.
$ openstack server list
+--------------------------------------+-----------------------+--------+--------------------------------------------------------------+
| ID | Name | Status | Networks |
+--------------------------------------+-----------------------+--------+--------------------------------------------------------------+
| c055cdb0-ebb4-4d65-957c-35cbdbd59306 | selfservice-instance1 | ACTIVE | selfservice1=192.0.2.4, fd00:192:0:2:f816:3eff:fe30:9cb0 |
+--------------------------------------+-----------------------+--------+--------------------------------------------------------------+
Uyarı
IPv4 adresi, özel bir IP adres aralığında (RFC1918) bulunur. Böylece, Ağ hizmeti, sunucunun Internet gibi harici ağlara erişmesi için kaynak ağ adresi çevirisi (SNAT) gerçekleştirir. İnternet gibi harici ağlardan sunucuya erişim, kayan bir IPv4 adresini gerektirir. Ağ hizmeti, kayan IPv4 adresinden self servis ağdaki sunucu IPv4 adresine hedef ağ adresi çevirisi (DNAT) gerçekleştirir. Öte yandan, IPv6 için Ağ hizmet mimarisi, NAT’ın çok büyük adres alanı ve karmaşıklığı nedeniyle NAT’ı desteklemiyor. Böylece, kayan IP adresleri IPv6 için mevcut değildir ve Ağ hizmeti, yalnızca kendi kendine hizmet ağlarındaki IPv6 alt ağları için yönlendirme gerçekleştirir. Başka bir deyişle, IPv4 ve IPv6 adresleri veya sadece IPv6 adresleri ile “gizlemek” için NAT’a güvenemezsiniz ve erişimi kısıtlamak için güvenlik gruplarını doğru bir şekilde uygulamalısınız.
Denetleyici düğümünde veya sağlayıcı ağına erişimi olan herhangi bir ana bilgisayarda, sunucunun IPv6 adresine ping
atın.
$ ping6 -c 4 fd00:192:0:2:f816:3eff:fe30:9cb0
PING fd00:192:0:2:f816:3eff:fe30:9cb0(fd00:192:0:2:f816:3eff:fe30:9cb0) 56 data bytes
64 bytes from fd00:192:0:2:f816:3eff:fe30:9cb0: icmp_seq=1 ttl=63 time=2.08 ms
64 bytes from fd00:192:0:2:f816:3eff:fe30:9cb0: icmp_seq=2 ttl=63 time=1.88 ms
64 bytes from fd00:192:0:2:f816:3eff:fe30:9cb0: icmp_seq=3 ttl=63 time=1.55 ms
64 bytes from fd00:192:0:2:f816:3eff:fe30:9cb0: icmp_seq=4 ttl=63 time=1.62 ms
--- fd00:192:0:2:f816:3eff:fe30:9cb0 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3004ms
rtt min/avg/max/mdev = 1.557/1.788/2.085/0.217 ms
İsteğe bağlı olarak, İnternet gibi sunucuya harici ağlardan IPv4 erişimini etkinleştirin.
Sağlayıcı ağ üzerinde yüzen IPv4 adresini oluşturun.
$ openstack floating ip create provider1
+-------------+--------------------------------------+
| Field | Value |
+-------------+--------------------------------------+
| fixed_ip | None |
| id | 22a1b088-5c9b-43b4-97f3-970ce5df77f2 |
| instance_id | None |
| ip | 203.0.113.16 |
| pool | provider1 |
+-------------+--------------------------------------+
Sunucu ile yüzen IPv4 adresini ilişkilendir.
$ openstack server add floating ip selfservice-instance1 203.0.113.16
Not
Bu komutun hiç çıktısı yok.
Denetleyici düğümünde veya sağlayıcının ağına erişimi olan herhangi bir ana bilgisayarda, sunucunun kayan IPv4 adresine ping
atın.
$ ping -c 4 203.0.113.16
PING 203.0.113.16 (203.0.113.16) 56(84) bytes of data.
64 bytes from 203.0.113.16: icmp_seq=1 ttl=63 time=3.41 ms
64 bytes from 203.0.113.16: icmp_seq=2 ttl=63 time=1.67 ms
64 bytes from 203.0.113.16: icmp_seq=3 ttl=63 time=1.47 ms
64 bytes from 203.0.113.16: icmp_seq=4 ttl=63 time=1.59 ms
--- 203.0.113.16 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3005ms
rtt min/avg/max/mdev = 1.473/2.040/3.414/0.798 ms
Sunucuya erişim alın.
Internet veya diğer harici ağlara IPv4 ve IPv6 bağlanılabilirliğini test edin.
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:
Sabit bir IPv4 adresine sahip sunucular için, ağ düğümü, self-servisten İnternet gibi harici ağlara geçen kuzey-güney trafiğinde SNAT gerçekleştirir. Sabit IPv6 adresli sunucularda, ağ düğümü, self-servis ve harici ağlar arasında trafiğin geleneksel yolunu gerçekleştirir.
Aşağıdaki adımlar hesaplama düğümü 1’i içerir:
veth
çifti aracılığıyla self servis köprü sunucu bağlantı noktasına (2) iletir.Aşağıdaki adımlar ağ düğümünü içerir:
Not
Geri dönüş trafiği de benzer adımları izlemektedir. Bununla birlikte, kayan bir IPv4 adresi olmadan, sağlayıcıdaki veya dış ağdaki ana bilgisayarlar, self servis ağı üzerindeki sunucular ile bağlantılar kuramaz.
Yüzen bir IPv4 adresine sahip örnekler için ağ düğümü, sunucudan harici ağlardan kuzey-güney trafiğine Internet ve DNAT gibi harici ağlara geçen kuzey-güney trafiğinde SNAT gerçekleştirir. Değişken IP adresleri ve NAT, IPv6 için geçerli değildir. Böylece, ağ düğüm bu senaryoda IPv6 trafiğini yönlendirir.
Aşağıdaki adımlar ağ düğümünü içerir:
Aşağıdaki adımlar, hesaplama düğümünü içerir:
veth
çifti aracılığıyla örnek arabirimine (15) iletir.Not
Çıkış sunucu trafiği, kuzey-güney senaryosu 1’e benzer, ancak SNAT, paketin kaynak IP adresini sağlayıcı ağı üzerindeki yönlendirici IP adresinden ziyade kayan IPv4 adresine değiştirir.
Aynı ağdaki sabit bir IPv4/IPv6 veya kayan IPv4 adresine sahip olan örnekler, bu örnekleri içeren hesaplama düğümleri arasında doğrudan iletişim kurar.
Varsayılan olarak, VXLAN protokolü hedef konum bilgisi yetersizdir ve keşfetmek için çok noktaya yayın kullanır. Keşif sonrasında konumu yerel yönlendirme veritabanında depolar. Büyük dağıtımlarda, keşif işlemi, tüm düğümlerin işlemesi gereken önemli miktarda ağ oluşturabilir. Bunları ortadan kaldırmak ve genel olarak verimliliği artırmak için, Ağ hizmeti, VXLAN arabirimleri için yönlendirme veritabanını otomatik olarak dolduran katman-2 nüfus şeması sürücüsünü içerir. Örnek yapılandırma, bu sürücüyü etkinleştirir. Daha fazla bilgi için bkz ML2 eklentisi.
Aşağıdaki adımlar hesaplama düğümü 1’i içerir:
veth
çifti aracılığıyla self servis köprü sunucu bağlantı noktasına (2) iletir.Aşağıdaki adımlar hesaplama düğüm 2’yi içerir:
Not
Dönüş trafik akışı benzer adımlardan tersine takip eder.
Sabit bir IPv4 / IPv6 adresi veya kayan IPv4 adresi kullanan sunucular ağ düğümünde yönlendirici üzerinden iletişim kurar. Self servis ağları aynı yönlendiricide bulunmalıdır.
Not
Her iki sunucu da aynı hesaplama düğümünde bulunur ve VXLAN’ın aynı katman-3 ağını nasıl kullanabileceğini gösterir.
Aşağıdaki adımlar, hesaplama düğümünü içerir:
veth
çifti aracılığıyla self servis köprü sunucu bağlantı noktasına (2) iletir.Aşağıdaki adımlar ağ düğümünü içerir:
Aşağıdaki adımlar, hesaplama düğümünü içerir:
veth
çifti vasıtasıyla sunucu 2 arayüzüne (20) iletir.Not
Dönüş trafik akışı benzer adımlardan tersine takip eder.
Except where otherwise noted, this document is licensed under Creative Commons Attribution 3.0 License. See all OpenStack Legal Documents.