Bu mimari örneği, self-servis yayına alma sunucusunu, keepalived
yoluyla Sanal Yönlendirici Yedekleme Protokolünü (VRRP) kullanarak yüksek kullanılabilirlik mekanizması ile zenginleştirir ve self servis ağlar için yönlendirme yük devretmesini sağlar. VRRP, bir ana (etkin) sunucuyu ve her yönlendiricinin en az bir yedek kopyasını oluşturduğu için, en az iki ağ düğümü gerektirir.
Normal çalışma sırasında ana yönlendirici üzerindeki “keepalived”, belirli bir proje için tüm VRRP yönlendiricilerini birbirine bağlayan gizli bir ağa heartbeat paketlerini periyodik olarak iletir. VRRP yönlendiricileriyle yapılan her proje ayrı bir gizli ağ kullanır. Varsayılan olarak bu ağ, ml2_conf.ini
dosyasındaki tenant_network_types
seçeneğindeki ilk değeri kullanır. Ek kontrol için, neutron.conf
dosyasındaki l3_ha_network_name
ve l3_ha_network_name
seçeneklerini kullanarak gizli ağ için self servis ağ türünü ve fiziksel ağ adını belirtebilirsiniz.
Yedekleme yönlendiricisinde keepalived
, heartbeat paketlerini almayı durdurursa, ana yönlendiricinin başarısız olduğunu varsayar ve qrouter
ad alanındaki arabirimlerdeki IP adreslerini yapılandırarak yedek yönlendiriciyi ana yönlendiriciye yönlendirir. Birden fazla yedek yönlendirici bulunan ortamlarda, bir sonraki en yüksek önceliği olan yedek yönlendirici üzerindeki keepalived
, yedek yönlendiriciyi ana yönlendiriciye yönlendirir.
Not
Bu yüksek kullanılabilirlik mekanizması, tüm yönlendiriciler için aynı öncelik kullanan VRRP’yi yapılandırır. Bu nedenle VRRP, ana yönlendiriciye en yüksek IP adresine sahip yedek yönlendiriciyi tanıtır.
Uyarı
keepalived
v1.2.15 ve daha öncesinde max_l3_agents_per_router
değeri 3 veya daha fazla olarak ayarlandığında paket kaybına neden olabileceği bilinen bir hata var. Bu nedenle, bu özelliği kullanırken keepalived
v1.2.16 veya daha üst sürüme yükseltmenizi öneririz.
Ağ düğümleri arasındaki VRRP heartbeat trafiğinin kesilmesi, genellikle bir ağ arabirimi veya fiziksel ağ altyapısı hatası nedeniyle bir yerine çalışma tetikler. Katman-3 aracısını yeniden başlatın veya başarısız olursa, keepalived
olanağı sağlayan bir yük devretme işlemi devreye girmez.
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:
Gerçek sistem kurulumları için, bir ağ düğümü başarısız olursa, tüm çevre için ağ trafiğini işlemek için yeterli kaynağa sahip en az üç ağ düğümünü öneriyoruz. Ayrıca, geriye kalan iki düğüm yedeklilik sağlamaya devam edebilir.
Aşağıdaki bileşenleri içeren bir ağ düğümü ekleyin:
Not
DHCP ve meta veri aracısını her hesaplama düğümünde tutabilir veya ağ düğümlerine taşıyabilirsiniz.
Aşağıdaki resim, bir self-servis ağı ve bir etiketsiz (düz) ağ için bileşenleri ve bağlantıyı göstermektedir. Ana yönlendirici, ağ düğümü 1’de bulunur. 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.
Aşağıdaki örnek yapılandırmayı, self servis ağları destekleyen mevcut bir operasyonel ortama VRRP kullanarak yüksek kullanılabilirlik desteği eklemek için bir şablon olarak kullanın.
neutron.conf
dosyasında:
VRRP’yi etkinleştir.
[DEFAULT]
l3_ha = True
Aşağıdaki servisleri yeniden başlatın:
Değişiklik yok.
Ağ hizmeti OVS katmanı-2 aracı ve katman-3 aracısını yükleyin.
OVS kurun.
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.
Aşağıdaki servisleri başlatın:
OVS sağlayıcı köprüsü ``br-provider``i oluştur:
$ ovs-vsctl add-br br-provider
openvswitch_agent.ini
dosyasında, katman-2 ajanını yapılandır.
[ovs]
bridge_mappings = provider:br-provider
local_ip = OVERLAY_INTERFACE_IP_ADDRESS
[agent]
tunnel_types = vxlan
l2_population = true
[securitygroup]
firewall_driver = iptables_hybrid
``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 = openvswitch
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:
Değişiklik yok.
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 |
+--------------------------------------+--------------------+----------+-------------------+-------+-------+---------------------------+
| 1236bbcb-e0ba-48a9-80fc-81202ca4fa51 | Metadata agent | compute2 | | True | UP | neutron-metadata-agent |
| 457d6898-b373-4bb3-b41f-59345dcfb5c5 | Open vSwitch agent | compute2 | | True | UP | neutron-openvswitch-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 |
| 7f00d759-f2c9-494a-9fbf-fd9118104d03 | Open vSwitch agent | network2 | | True | UP | neutron-openvswitch-agent |
| b28d8818-9e32-4888-930b-29addbdd2ef9 | L3 agent | network2 | nova | True | UP | neutron-l3-agent |
+--------------------------------------+--------------------+----------+-------------------+-------+-------+---------------------------+
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 VRRP’yi kullanıyor. Aşağıdaki prosedür, ilave bir self-servis ağı ve yönlendirici oluşturur. Ağ hizmeti, mevcut yönlendiricilere yüksek kullanılabilirlik eklemeyi de destekliyor. Bununla birlikte, bu yordam, idari olarak devre dışı bırakmayı ve bu yönlendiricideki arabirimlerle self servis ağlar için ağ bağlantısını geçici olarak kesen her yönlendiriciyi etkinleştirmeyi gerektirir.
Normal (idari olmayan) bir proje kimlik bilgisi kaynağı.
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 |
+-------------------------+--------------+
Self-servis ağı üzerinde bir IPv4 alt ağı oluştur.
$ openstack subnet create --subnet-range 198.51.100.0/24 \
--network selfservice2 --dns-nameserver 8.8.4.4 selfservice2-v4
+-------------------+------------------------------+
| Field | Value |
+-------------------+------------------------------+
| allocation_pools | 198.51.100.2-198.51.100.254 |
| cidr | 198.51.100.0/24 |
| dns_nameservers | 8.8.4.4 |
| enable_dhcp | True |
| gateway_ip | 198.51.100.1 |
| ip_version | 4 |
| name | selfservice2-v4 |
+-------------------+------------------------------+
Self-servis ağı üzerinde bir IPv6 alt ağı oluştur.
$ openstack subnet create --subnet-range fd00:198:51:100::/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:198:51:100::2-fd00:198:51:100:ffff:ffff:ffff:ffff |
| cidr | fd00:198:51:100::/64 |
| dns_nameservers | 2001:4860:4860::8844 |
| enable_dhcp | True |
| gateway_ip | fd00:198:51:100::1 |
| ip_version | 6 |
| ipv6_address_mode | slaac |
| ipv6_ra_mode | slaac |
| name | selfservice2-v6 |
+-------------------+--------------------------------------------------------+
Bir yönlendirici oluştur.
$ openstack router create router2
+-----------------------+---------+
| Field | Value |
+-----------------------+---------+
| admin_state_up | UP |
| name | router2 |
| status | ACTIVE |
+-----------------------+---------+
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.
Yönlendirici üzerine bir sağlayıcı ağı geçit olarak ekleyin.
$ neutron router-gateway-set router2 provider1
Set gateway for router router2
Yönetimsel proje kimlik bilgilerini kaynak olarak verin.
VRRP heartbeat trafiğini işleyen dahili yüksek kullanılabilirlikli ağın oluşturulmasını doğrulayın.
$ openstack network list
+--------------------------------------+----------------------------------------------------+--------------------------------------+
| ID | Name | Subnets |
+--------------------------------------+----------------------------------------------------+--------------------------------------+
| 1b8519c1-59c4-415c-9da2-a67d53c68455 | HA network tenant f986edf55ae945e2bef3cb4bfd589928 | 6843314a-1e76-4cc9-94f5-c64b7a39364a |
+--------------------------------------+----------------------------------------------------+--------------------------------------+
Her ağ düğümünde, aynı ID ile qrouter
ad alanının oluşumunu doğrulayın.
Ağ düğümü 1:
# ip netns
qrouter-b6206312-878e-497c-8ef7-eb384f8add96
Ağ düğümü 2:
# ip netns
qrouter-b6206312-878e-497c-8ef7-eb384f8add96
Not
Yönlendirici 1 için Linux köprü: Self-servis ağları ad alanı, yalnızca VRRP’yi etkinleştirmeden önce oluşturma nedeniyle ağ düğümü 1’de görünmelidir.
Her ağ düğümünde, arayüzlerin IP adresini qrouter
ad alanına gösterin. VRRP arabirimi hariç, ana yönlendirici sunucusuna ait yalnızca bir ad alanı arabirimlerdeki IP adreslerini içerir.
Ağ düğümü 1:
# ip netns exec qrouter-b6206312-878e-497c-8ef7-eb384f8add96 ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ha-eb820380-40@if21: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc noqueue state UP group default qlen 1000
link/ether fa:16:3e:78:ba:99 brd ff:ff:ff:ff:ff:ff link-netnsid 0
inet 169.254.192.1/18 brd 169.254.255.255 scope global ha-eb820380-40
valid_lft forever preferred_lft forever
inet 169.254.0.1/24 scope global ha-eb820380-40
valid_lft forever preferred_lft forever
inet6 fe80::f816:3eff:fe78:ba99/64 scope link
valid_lft forever preferred_lft forever
3: qr-da3504ad-ba@if24: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc noqueue state UP group default qlen 1000
link/ether fa:16:3e:dc:8e:a8 brd ff:ff:ff:ff:ff:ff link-netnsid 0
inet 198.51.100.1/24 scope global qr-da3504ad-ba
valid_lft forever preferred_lft forever
inet6 fe80::f816:3eff:fedc:8ea8/64 scope link
valid_lft forever preferred_lft forever
4: qr-442e36eb-fc@if27: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc noqueue state UP group default qlen 1000
link/ether fa:16:3e:ee:c8:41 brd ff:ff:ff:ff:ff:ff link-netnsid 0
inet6 fd00:198:51:100::1/64 scope global nodad
valid_lft forever preferred_lft forever
inet6 fe80::f816:3eff:feee:c841/64 scope link
valid_lft forever preferred_lft forever
5: qg-33fedbc5-43@if28: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether fa:16:3e:03:1a:f6 brd ff:ff:ff:ff:ff:ff link-netnsid 0
inet 203.0.113.21/24 scope global qg-33fedbc5-43
valid_lft forever preferred_lft forever
inet6 fd00:203:0:113::21/64 scope global nodad
valid_lft forever preferred_lft forever
inet6 fe80::f816:3eff:fe03:1af6/64 scope link
valid_lft forever preferred_lft forever
Ağ düğümü 2:
# ip netns exec qrouter-b6206312-878e-497c-8ef7-eb384f8add96 ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ha-7a7ce184-36@if8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc noqueue state UP group default qlen 1000
link/ether fa:16:3e:16:59:84 brd ff:ff:ff:ff:ff:ff link-netnsid 0
inet 169.254.192.2/18 brd 169.254.255.255 scope global ha-7a7ce184-36
valid_lft forever preferred_lft forever
inet6 fe80::f816:3eff:fe16:5984/64 scope link
valid_lft forever preferred_lft forever
3: qr-da3504ad-ba@if11: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc noqueue state UP group default qlen 1000
link/ether fa:16:3e:dc:8e:a8 brd ff:ff:ff:ff:ff:ff link-netnsid 0
4: qr-442e36eb-fc@if14: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc noqueue state UP group default qlen 1000
5: qg-33fedbc5-43@if15: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether fa:16:3e:03:1a:f6 brd ff:ff:ff:ff:ff:ff link-netnsid 0
Not
Ana yönlendirici, ağ düğümü 2’de bulunabilir.
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.
Sunucunun IPv4 ve IPv6 adreslerini belirleyin.
$ openstack server list
+--------------------------------------+-----------------------+--------+---------------------------------------------------------------------------+
| ID | Name | Status | Networks |
+--------------------------------------+-----------------------+--------+---------------------------------------------------------------------------+
| bde64b00-77ae-41b9-b19a-cd8e378d9f8b | selfservice-instance2 | ACTIVE | selfservice2=fd00:198:51:100:f816:3eff:fe71:e93e, 198.51.100.4 |
+--------------------------------------+-----------------------+--------+---------------------------------------------------------------------------+
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 |
+-------------+--------------------------------------+
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.
ping
atmaya baslayın. Sonraki üç basamağı yerine getirirken, sunucunun bağlantısının kesilmesi gerektiğini görürsünüz.qrouter
ad alanındaki arayüzlere IP adreslerinin eklenmesine dikkat ederek, ana yönlendiriciye yedek yönlendiricinin yükseltilmesini doğrulayın.keepalived
sunucunuzun durumu, kullanılabilir ve yapılandırılmış tüm ağ geçidi adreslerine olan bağlantıyı doğrulayan bir bash komut dosyası aracılığıyla otomatik olarak izlenebilir. Bağlanabilirlik kaybolduğunda, ana yönlendirici başka bir düğüme yeniden düzenlenir.
Tüm yönlendiriciler aynı anda bağlantıyı kaybederse, yeni bir ana yönlendirici seçme işlemi, bir veya daha fazla yönlendiricinin bağlantısını geri yükleyinceye kadar round-robin kipine tekrarlanır.
Bu özelliği etkinleştirmek için, l3_agent.ini
dosyasını düzenleyin:
ha_vrrp_health_check_interval = 30
ha_vrrp_health_check_interval
sağlık kontrolünün kaç saniye içinde kaç sıklıkta çalışması gerektiğinin gösterildiği yer. Varsayılan değer `` 0`` olup, bu kontrolün hiç çalışmaması gerektiğini gösterir.
Bu yüksek kullanılabilirlik mekanizması, ana yönlendirici başarısız olursa katman-3 servislerinin yerine başka bir yönlendiriciye geçilmesi ile birlikte Open vSwitch: Self-servis ağları işlevini basitleştirir. Bu sebeple, normal işlemler için :ref: Normal çalışma için self-servis ağı trafik akışı <deploy-ovs-selfservice-networktrafficflow> referans alabilirsiniz.
Except where otherwise noted, this document is licensed under Creative Commons Attribution 3.0 License. See all OpenStack Legal Documents.