Contoh arsitektur ini menambah contoh pengerahan self-service dengan mekanisme high-availability menggunakan Virtual Router Redundancy Protocol (VRRP) melalui keepalived
dan menyediakan failover routing untuk jaringan self-service. Hal ini membutuhkan minimal dua node jaringan karena VRRP menciptakan satu instance master (aktif) dan setidaknya satu instance cadangan dari setiap router.
Selama operasi normal, `` keepalived`` pada router utama secara berkala mentransmisikan paket heartbeat melalui jaringan tersembunyi yang menghubungkan semua router VRRP untuk proyek tertentu. Setiap proyek dengan router VRRP menggunakan jaringan tersembunyi yang terpisah. Secara default jaringan ini menggunakan nilai pertama dalam opsi tenant_network_types
dalam file ml2_conf.ini
file. Untuk kontrol tambahan, Anda dapat menentukan tipe jaringan self-service dan nama jaringan fisik untuk jaringan tersembunyi menggunakan opsi l3_ha_network_type
dan l3_ha_network_name
dalam file neutron.conf
.
If keepalived
on the backup router stops receiving heartbeat packets,
it assumes failure of the master router and promotes the backup router to
master router by configuring IP addresses on the interfaces in the
qrouter
namespace. In environments with more than one backup router,
keepalived
on the backup router with the next highest priority promotes
that backup router to master router.
Catatan
Mekanisme high-availability ini mengkonfigurasi VRRP menggunakan prioritas yang sama untuk semua router. Oleh karena itu, VRRP mempromosikan router cadangan dengan alamat IP tertinggi ke router utama.
Peringatan
Ada bug yang dikenal dengan keepalived
v1.2.15 dan sebelumnya yang dapat menyebabkan kehilangan paket (packet loss) ketika `` max_l3_agents_per_router`` diatur ke 3 atau lebih. Oleh karena itu, kami menyarankan Anda meng-upgrade ke keepalived
v1.2.16 atau lebih besar saat penggunaan fitur ini.
Gangguanlalu lintas heartbeat VRRP antara node jaringan, biasanya karena antarmuka jaringan atau kegagalan infrastruktur jaringan fisik, memicu failover. Restart agen lapisan-3, atau kegagalan itu, tidak memicu failover menyediakan keepalived
terus beroperasi.
Pertimbangkan atribut berikut mekanisme ketersediaan tinggi ini untuk menentukan kepraktisan di lingkungan Anda:
Untuk pengerahan produksi, kami sarankan setidaknya tiga node jaringan dengan sumber daya yang cukup untuk menangani lalu lintas jaringan untuk seluruh lingkungan jika salah satu simpul jaringan gagal. Disamping itu, dua node yang tersisa dapat terus memberikan redundansi.
Tambahkan satu node jaringan dengan komponen-komponen berikut:
Catatan
Anda dapat menjaga DHCP dan agen metadata pada setiap node komputasi atau memindahkannya ke node jaringan.
Gambar berikut menunjukkan komponen dan konektivitas untuk satu jaringan self-service dan satu jaringan untagged (flat). Router master berada pada node jaringan 1. Dalam kasus ini, instance berada pada node komputasi yang sama sebagai agen DHCP untuk jaringan. Jika agen DHCP berada pada node komputasi lain, yang terakhir hanya berisi namespace DHCP dan Linux bridge dengan port pada interface jaringan fisik overlay.
Gunakan contoh konfigurasi berikut sebagai template untuk menambahkan dukungan high-availability penggunaan VRRP untuk lingkungan operasional yang ada yang mendukung jaringan self-service.
Dalam file neutron.conf
:
Aktifkan VRRP.
[DEFAULT]
l3_ha = True
Restart layanan berikut:
Tidak ada perubahan.
Install OVS layer-2 agent dan layer-3 agent layanan Networking.
Instal OVS.
Dalam file neutron.conf
, lakukan konfigurasi opsi umum:
[DEFAULT]
core_plugin = ml2
auth_strategy = keystone
[database]
# ...
[keystone_authtoken]
# ...
[nova]
# ...
[agent]
# ...
Lihat Installation Tutorials and Guides dan Configuration Reference untuk rilis OpenStack Anda untuk mendapatkan konfigurasi tambahan yang sesuai untuk bagian [DEFAULT]
, [database]
, [keystone_authtoken]
, [nova]
, and [agent]
.
Mulai layanan berikut:
Buat OVS provider bridge br-provider
:
$ ovs-vsctl add-br br-provider
Dalam file openvswitch_agent.ini
, lakukan konfigurasi layer-2 agent.
[ovs]
bridge_mappings = provider:br-provider
local_ip = OVERLAY_INTERFACE_IP_ADDRESS
[agent]
tunnel_types = vxlan
l2_population = true
[securitygroup]
firewall_driver = iptables_hybrid
Gantilah OVERLAY_INTERFACE_IP_ADDRESS
dengan alamat IP dari antarmuka yang menangani VXLAN overlay untuk jaringan self-service.
Dalam file l3_agent.ini
, lakukan konfigurasi layer-3 agent.
[DEFAULT]
interface_driver = openvswitch
external_network_bridge =
Catatan
Opsi external_network_bridge
sengaja tidak mengandung nilai.
Mulai layanan berikut:
Tidak ada perubahan.
Dapatkan sumber kredensial proyek administrasi.
Memverifikasi keberadaan dan operasi dari agen.
$ 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 |
+--------------------------------------+--------------------+----------+-------------------+-------+-------+---------------------------+
Serupa dengan contoh pengerahan self-service, konfigurasi ini mendukung beberapa VXLAN jaringan self-service. Setelah mengaktifkan high-availability, semua router tambahan menggunakan VRRP. Prosedur berikut membuat jaringan self-service tambahan dan router. Layanan Networking juga mendukung penambahan high-availability untuk router yang ada. Namun, prosedur ini secara administratif membutuhkan penonaktifkan dan pengaktifkan setiap router yang sementara mengganggu konektivitas jaringan untuk jaringan self-service dengan interface pada router itu.
Dapatkan sumber kredensial proyek (non-administratif) biasa.
Buat jaringan self-service.
$ 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 |
+-------------------------+--------------+
Buat subnet IPv4 pada jaringan self-service.
$ 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 |
+-------------------+------------------------------+
Buat subnet IPv6 pada jaringan self-service.
$ 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 |
+-------------------+--------------------------------------------------------+
Buat router.
$ openstack router create router2
+-----------------------+---------+
| Field | Value |
+-----------------------+---------+
| admin_state_up | UP |
| name | router2 |
| status | ACTIVE |
+-----------------------+---------+
Tambahkan subnet IPv4 dan IPv6 sebagai interface pada router.
$ openstack router add subnet router2 selfservice2-v4
$ openstack router add subnet router2 selfservice2-v6
Catatan
Perintah ini tidak memberikan output.
Tambahkan jaringan provider sebagai gateway pada router.
$ neutron router-gateway-set router2 provider1
Set gateway for router router2
Dapatkan sumber kredensial proyek administrasi.
Lakukan verifikasi penciptaan jaringan high-availability internal yang menangani VRRP lalu lintas heartbeat.
$ openstack network list
+--------------------------------------+----------------------------------------------------+--------------------------------------+
| ID | Name | Subnets |
+--------------------------------------+----------------------------------------------------+--------------------------------------+
| 1b8519c1-59c4-415c-9da2-a67d53c68455 | HA network tenant f986edf55ae945e2bef3cb4bfd589928 | 6843314a-1e76-4cc9-94f5-c64b7a39364a |
+--------------------------------------+----------------------------------------------------+--------------------------------------+
Pada setiap node jaringan, lakukan verifikasi penciptaan namespace qrouter
dengan ID yang sama.
Network node 1:
# ip netns
qrouter-b6206312-878e-497c-8ef7-eb384f8add96
Network node 2:
# ip netns
qrouter-b6206312-878e-497c-8ef7-eb384f8add96
Catatan
Namespace untuk router 1 dari Linux bridge: Jaringan self-service seharusnya hanya muncul di jaringan node 1 karena penciptaan sebelum mengaktifkan VRRP.
Pada setiap node jaringan, tampilkan alamat IP dari antarmuka dalam namespace qrouter
. Dengan pengecualian dari interface VRRP, hanya satu namespace yang menjadi milik instance router utama berisi alamat IP pada antarmuka.
Network node 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
Network node 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
Catatan
Router utama mungkin berada pada network node 2.
Luncurkan instance dengan sebuah antarmuka pada jaringan self-service tambahan. Misalnya, image CirrOS menggunakan flavor ID 1.
$ openstack server create --flavor 1 --image cirros --nic net-id=NETWORK_ID selfservice-instance2
Gantilah NETWORK_ID
dengan ID dari jaringan self-service tambahan
Tentukan alamat IPv4 dan IPv6 instance.
$ 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 |
+--------------------------------------+-----------------------+--------+---------------------------------------------------------------------------+
Buat alamat IPv4 mengambang di jaringan provider.
$ 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 |
+-------------+--------------------------------------+
Lakukan asosiasi alamat IPv4 mengambang dengan instance.
$ openstack server add floating ip selfservice-instance2 203.0.113.17
Catatan
Perintah ini tidak memberikan output.
ping
dari alamat IPv4 mengambang dan alamat IPv6 dari instance. Sambil melakukan tiga langkah selanjutnya, Anda akan melihat minimal, jika ada, gangguan konektivitas untuk instance.qrouter
.Kesehatan instance keepalived
Anda dapat secara otomatis dipantau melalui skrip bash yang memverifikasi konektivitas ke semua alamat gerbang yang dikonfigurasi dan tersedia. Dalam hal konektivitas yang hilang, master router dijadwal ulang ke node lain.
Jika semua router kehilangan konektivitas secara bersamaan, proses pemilihan router induk baru akan diulang secara round-robin sampai satu atau lebih router telah dipulihkan konektivitas mereka.
Untuk mengaktifkan fitur ini, edit file l3_agent.ini
:
ha_vrrp_health_check_interval = 30
Dimana ha_vrrp_health_check_interval
menunjukkan seberapa sering dalam detik dimana pengecekan kesehatan harus dijalankan. Nilai default adalah 0
, yang menunjukkan bahwa pengecekan tidak berjalan sama sekali.
Mekanisme high-availability ini hanya menambah Open vSwitch: Jaringan self-service dengan failover layanan lapisan-3 kepada router lain jika master router gagal. Dengan demikian, Anda dapat referensi Self-service network traffic flow untuk operasi normal.
Except where otherwise noted, this document is licensed under Creative Commons Attribution 3.0 License. See all OpenStack Legal Documents.