Contoh arsitektur ini menambah contoh self-service deployment dengan mekanisme high-availability Router Distributed Virtual (DVR) yang menyediakan konektivitas antara jaringan self-service dan jaringan penyedia pada node komputasi bukannya pada jaringan node untuk skenario tertentu. Untuk contoh dengan alamat IPv4 mengambang, routing antara jaringan self-service dan jaringan penyedia berada sepenuhnya pada node komputasi untuk menghilangkan titik tunggal (single point) isu kegagalan dan kinerja dengan node jaringan. Routing juga berada sepenuhnya pada node komputasi untuk instance dengan alamat IPv4 tetap atau alamat IPv4 mengambang dengan menggunakan jaringan self-service dari router virtual didistribusikan yang sama. Namun, instance dengan alamat IP tetap masih mengandalkan node jaringan untuk routing dan layanan SNAT antara jaringan self-service dan jaringan penyedia.
Pertimbangkan atribut berikut dari mekanisme ketersediaan tinggi ini untuk menentukan kepraktisan di lingkungan Anda:
Hanya menyediakan konektivitas ke sebuah instance melalui node komputasi dimana instance berada jika instance berada pada jaringan self-service dengan alamat IPv4 mengambang. Instance pada jaringan self-service dengan hanya alamat IPv6 atau kedua alamat IPv4 dan IPv6 tergantung pada node jaringan untuk konektivitas IPv6.
Instance router pada setiap node komputasi mengkonsumsi alamat IPv4 pada jaringan provider dimana mengandung gateway.
Memodifikasi node komputasi dengan komponen berikut:
Menginstall the OpenStack Networking layer-3 agent.
Catatan
Pertimbangkan untuk menambahkan setidaknya satu node jaringan tambahan untuk menyediakan high-availability untuk instance dengan alamat IP tetap. Lihat :ref: config-dvr-SNAT-ha-ovs untuk informasi lebih lanjut.
Gambar berikut menunjukkan komponen dan konektivitas untuk satu jaringan self-service dan satu jaringan untagged (flat). Dalam kasus ini, instance berada pada node komputasi yang sama sebagai agen DHCP untuk jaringan. Jika agen DHCP berada pada node komputasi lain, agen yang terakhir hanya berisi namespace DHCP dengan port di jembatan integrasi OVS.
Menggunakan contoh konfigurasi berikut sebagai template untuk menambahkan dukungan untuk high-availability menggunakan DVR di lingkungan operasional yang ada dimana mendukung jaringan self-service.
Dalam file neutron.conf:
Aktifkan routing yang didistribusikan secara default untuk semua router.
[DEFAULT]
router_distributed = true
Restart layanan berikut:
Dalam file ``openswitch_agent.ini`, aktifkan routing yang didistribusikan.
[DEFAULT]
enable_distributed_routing = true
Dalam file l3_agent.ini, lakukan konfigurasi agen layer-3 untuk menyediakan layanan SNAT.
[DEFAULT]
agent_mode = dvr_snat
Catatan
Opsi external_network_bridge sengaja tidak mengandung nilai.
Restart layanan berikut:
Menginstall agen layer-3 layanan Networking.
Dalam file ``openswitch_agent.ini`, aktifkan routing yang didistribusikan.
[DEFAULT]
enable_distributed_routing = true
Restart layanan berikut:
Dalam file l3_agent.ini, konfigure layer-3 agent.
[DEFAULT]
interface_driver = openvswitch
external_network_bridge =
agent_mode = dvr
Catatan
Opsi external_network_bridge sengaja tidak mengandung nilai.
Dapatkan kredensial proyek administrasi.
Memverifikasi keberadaan dan operasi dari agen.
$ neutron agent-list
+--------------------------------------+--------------------+-------------+----------------+-------+----------------+---------------------------+
| id | agent_type | host | availability_zone | alive | admin_state_up | binary |
+--------------------------------------+--------------------+----------+-------------------+-------+----------------+---------------------------+
| 05d980f2-a4fc-4815-91e7-a7f7e118c0db | L3 agent | compute1 | nova | :-) | True | neutron-l3-agent |
| 1236bbcb-e0ba-48a9-80fc-81202ca4fa51 | Metadata agent | compute2 | | :-) | True | neutron-metadata-agent |
| 2a2e9a90-51b8-4163-a7d6-3e199ba2374b | L3 agent | compute2 | nova | :-) | True | neutron-l3-agent |
| 457d6898-b373-4bb3-b41f-59345dcfb5c5 | Open vSwitch agent | compute2 | | :-) | True | neutron-openvswitch-agent |
| 513caa68-0391-4e53-a530-082e2c23e819 | Linux bridge agent | compute1 | | :-) | True | neutron-linuxbridge-agent |
| 71f15e84-bc47-4c2a-b9fb-317840b2d753 | DHCP agent | compute2 | nova | :-) | True | neutron-dhcp-agent |
| 8805b962-de95-4e40-bdc2-7a0add7521e8 | L3 agent | network1 | nova | :-) | True | neutron-l3-agent |
| a33cac5a-0266-48f6-9cac-4cef4f8b0358 | Open vSwitch agent | network1 | | :-) | True | neutron-openvswitch-agent |
| a6c69690-e7f7-4e56-9831-1282753e5007 | Metadata agent | compute1 | | :-) | True | neutron-metadata-agent |
| af11f22f-a9f4-404f-9fd8-cd7ad55c0f68 | DHCP agent | compute1 | nova | :-) | True | neutron-dhcp-agent |
| bcfc977b-ec0e-4ba9-be62-9489b4b0e6f1 | Open vSwitch agent | compute1 | | :-) | True | neutron-openvswitch-agent |
+--------------------------------------+--------------------+----------+-------------------+-------+----------------+---------------------------+
Serupa dengan contoh self-service deployment, konfigurasi ini mendukung beberapa jaringan self-service VXLAN. Setelah mengaktifkan ketersediaan tinggi, semua router tambahan menggunakan routing yang didistribusikan. Prosedur berikut membuat jaringan self-service tambahan dan router. Layanan Networking juga mendukung penambahan routing yang didistribusikan untuk router yang ada.
Dapatkan sumber kredensial proyek biasa (non-administratif).
Membuat jaringan self-service.
$ neutron net-create selfservice2
Created a new network:
+-------------------------+--------------------------------------+
| Field | Value |
+-------------------------+--------------------------------------+
| admin_state_up | True |
| availability_zone_hints | |
| availability_zones | |
| description | |
| id | 7ebc353c-6c8f-461f-8ada-01b9f14beb18 |
| ipv4_address_scope | |
| ipv6_address_scope | |
| mtu | 1450 |
| name | selfservice2 |
| port_security_enabled | True |
| router:external | False |
| shared | False |
| status | ACTIVE |
| subnets | |
| tags | |
| tenant_id | f986edf55ae945e2bef3cb4bfd589928 |
+-------------------------+--------------------------------------+
Buat subnet IPv4 pada jaringan self-service..
$ neutron subnet-create --name selfservice2-v4 --ip-version 4 \
--dns-nameserver 8.8.4.4 selfservice2 192.168.2.0/24
Created a new subnet:
+-------------------+--------------------------------------------------+
| Field | Value |
+-------------------+--------------------------------------------------+
| allocation_pools | {"start": "192.168.2.2", "end": "192.168.2.254"} |
| cidr | 192.168.2.0/24 |
| description | |
| dns_nameservers | 8.8.4.4 |
| enable_dhcp | True |
| gateway_ip | 192.168.2.1 |
| host_routes | |
| id | 12a41804-18bf-4cec-bde8-174cbdbf1573 |
| ip_version | 4 |
| ipv6_address_mode | |
| ipv6_ra_mode | |
| name | selfservice2-v4 |
| network_id | 7ebc353c-6c8f-461f-8ada-01b9f14beb18 |
| subnetpool_id | |
| tenant_id | f986edf55ae945e2bef3cb4bfd589928 |
+-------------------+--------------------------------------------------+
Buat subnet IPv6 pada jaringan self-service...
$ neutron subnet-create --name selfservice2-v6 --ip-version 6 \
--ipv6-address-mode slaac --ipv6-ra-mode slaac \
--dns-nameserver 2001:4860:4860::8844 selfservice2 \
fd00:192:168:2::/64
Created a new subnet:
+-------------------+-----------------------------------------------------------------------------+
| Field | Value |
+-------------------+-----------------------------------------------------------------------------+
| allocation_pools | {"start": "fd00:192:168:2::2", "end": "fd00:192:168:2:ffff:ffff:ffff:ffff"} |
| cidr | fd00:192:168:2::/64 |
| description | |
| dns_nameservers | 2001:4860:4860::8844 |
| enable_dhcp | True |
| gateway_ip | fd00:192:168:2::1 |
| host_routes | |
| id | b0f122fe-0bf9-4f31-975d-a47e58aa88e3 |
| ip_version | 6 |
| ipv6_address_mode | slaac |
| ipv6_ra_mode | slaac |
| name | selfservice2-v6 |
| network_id | 7ebc353c-6c8f-461f-8ada-01b9f14beb18 |
| subnetpool_id | |
| tenant_id | f986edf55ae945e2bef3cb4bfd589928 |
+-------------------+-----------------------------------------------------------------------------+
Buat router.
$ neutron router-create router2
Created a new router:
+-------------------------+--------------------------------------+
| Field | Value |
+-------------------------+--------------------------------------+
| admin_state_up | True |
| availability_zone_hints | |
| availability_zones | |
| description | |
| external_gateway_info | |
| id | b6206312-878e-497c-8ef7-eb384f8add96 |
| name | router2 |
| routes | |
| status | ACTIVE |
| tenant_id | f986edf55ae945e2bef3cb4bfd589928 |
+-------------------------+--------------------------------------+
Tambahkan subnet IPv4 dan IPv6 sebagai interface pada router.
$ neutron router-interface-add router2 selfservice2-v4
Added interface da3504ad-ba70-4b11-8562-2e6938690878 to router router2.
$ neutron router-interface-add router2 selfservice2-v6
Added interface 442e36eb-fce3-4cb5-b179-4be6ace595f0 to router router2.
Tambahkan jaringan provider sebagai gateway pada router.
$ neutron router-gateway-set router2 provider1
Set gateway for router router2
Dapatkan kredensial proyek administrasi.
Verifikasi routing yang didistribusikan pada router.
$ neutron router-show router2
+-------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Field | Value |
+-------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| distributed | True |
+-------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
Pada setiap node komputasi, verifikasi pembuatan namespace qrouter dengan ID yang sama.
Compute node 1 (node komputasi 1):
# ip netns
qrouter-78d2f628-137c-4f26-a257-25fc20f203c1
Compute node 2 (node komputasi 2):
# ip netns
qrouter-78d2f628-137c-4f26-a257-25fc20f203c1
Pada node jaringan, verifikasi pembuatan namespace snat dan qrouter dengan ID yang sama.
# ip netns
snat-78d2f628-137c-4f26-a257-25fc20f203c1
qrouter-78d2f628-137c-4f26-a257-25fc20f203c1
Catatan
Namespace untuk router 1 dari Open vSwitch: jaringan self-service juga harus muncul di jaringan node 1 karena pembuatan sebelum pengaktifan routing yang didistribusikan
Meluncurkan sebuah 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
Ganti `` NETWORK_ID`` dengan ID dari jaringan self-service tambahan.
Tentukan alamat IPv4 dan IPv6 dari instance.
$ openstack server list
+--------------------------------------+-----------------------+--------+---------------------------------------------------------------------------+
| ID | Name | Status | Networks |
+--------------------------------------+-----------------------+--------+---------------------------------------------------------------------------+
| bde64b00-77ae-41b9-b19a-cd8e378d9f8b | selfservice-instance2 | ACTIVE | selfservice2=fd00:192:168:2:f816:3eff:fe71:e93e, 192.168.2.4 |
+--------------------------------------+-----------------------+--------+---------------------------------------------------------------------------+
Membuat alamat IPv4 mengambang di jaringan operator.
$ openstack ip floating create provider1
+-------------+--------------------------------------+
| Field | Value |
+-------------+--------------------------------------+
| fixed_ip | None |
| id | 0174056a-fa56-4403-b1ea-b5151a31191f |
| instance_id | None |
| ip | 203.0.113.17 |
| pool | provider1 |
+-------------+--------------------------------------+
Mengasosiasikan alamat IPv4 mengambang dengan instance.
$ openstack ip floating add 203.0.113.17 selfservice-instance2
Catatan
Command ini tidak memberikan output.
Pada node komputasi yang berisi instance, verifikasi pembuatan namespace fip dengan ID yang sama dengan jaringan penyedia.
# ip netns
fip-4bfa3075-b4b2-4f7d-b88e-df1113942d43
Bagian berikut menjelaskan arus lalu lintas jaringan di beberapa skenario umum. Lalu lintas jaringan North-south perjalanan antara instance dan jaringan eksternal sebagaimana Internet. Lalu lintas jaringan East-west perjalanan antara instance pada jaringan yang sama atau berbeda. Dalam semua skenario, infrastruktur jaringan fisik menangani switching dan routing antara jaringan penyedia dan jaringan eksternal sebagaimana Internet. Setiap kasus merujuk satu atau lebih dari komponen berikut:
Gateway pada jaringan penyedia
Bagian ini hanya berisi skenario aliran yang menguntungkan dari routing virtual yang didistribusikan atau yang berbeda dari operasi konvensional. Untuk skenario aliran lainnya, lihat Arus lalu lintas jaringan.
Mirip dengan Skenario North-south 1: Instance dengan alamat IP tetap kecuali namespace router pada node jaringan menjadi namespace SNAT. Node jaringan masih mengandung namespace router, tetapi itu tidak melayani tujuan dalam hal ini.
Untuk instance dengan alamat IPv4 yang mengambang menggunakan jaringan self-service pada router yang didistribusikan, compute node yang berisi instance melakukan SNAT pada lalu lintas utara-selatan lewat dari instance ke jaringan eksternal seperti Internet dan, DNAT pada lalu lintas utara-selatan lewat dari jaringan eksternal ke instance. Alamat IP mengambang dan NAT tidak berlaku untuk IPv6. Dengan demikian, network node me-rute lalu lintas IPv6 dalam skenario ini, lalu lintas utara-selatan lewat antara instance dan jaringan eksternal seperti Internet.
Instance 1 berada pada compute node 1 dan menggunakan jaringan self-service 1.
Sebuah host di Internet mengirimkan sebuah paket ke instance.
Langkah berikut melibatkan compute node:
Infrastruktur jaringan fisik (1) meneruskan paket ke antarmuka jaringan fisik penyedia (2).
Antarmuka jaringan fisik penyedia meneruskan paket ke OVS provider bridge provider network port (3).
OVS provider bridge menukar VLAN tag 101 sebenarnya dengan VLAN tag internal.
OVS provider bridge phy-br-provider port (4) meneruskan paket ke OVS integration bridge int-br-provider port (5).
OVS integration bridge port untuk provider network (6) menghapus tag VLAN internal dan meneruskan paket ke provider network interface (7) dalam namespace IP mengambang. Interface ini merespon setiap permintaan ARP untuk alamat IPv4 mengambang instance.
Namespace IP mengambang me-rute paket (8) ke namespace router yang didistribusikan (9) menggunakan sepasang alamat IP pada jaringan internal DVR. Namespace ini berisi alamat IPv4 mengambang instance.
Router melakukan DNAT pada paket yang mengubah alamat IP tujuan ke alamat IP instance di jaringan self-service melalui antarmuka jaringan self-service (10).
Router meneruskan paket ke OVS integration bridge port untuk jaringan self-service (11).
OVS integration bridge menambahkan tag VLAN internal untuk paket.
OVS integration bridge menghapus tag VLAN internal dari paket.
OVS integration bridge security group port (12) meneruskan paket ke security group bridge OVS port (13) melalui pasangan veth.
Aturan kelompok keamanan (14) dari security group bridge menangani firewall dan pelacakan koneksi paket.
Security group bridge instance port (15) meneruskan paket ke instance interface (16) melalui pasangan veth.
Catatan
Lalu lintas Egress mengikuti langkah serupa secara terbalik, kecuali SNAT merubah alamat IPv4 sumber dari paket ke alamat IPv4 mengambang.
Instance dengan alamat IPv4/IPv6 tetap atau alamat IPv4 mengambang pada node komputasi yang sama berkomunikasi melalui router pada node komputasi. Instance pada node komputasi yang berbeda berkomunikasi melalui sebuah instance dari router pada setiap node komputasi.
Catatan
Skenario ini menempatkan instance pada node komputasi yang berbeda untuk menunjukkan situasi yang paling kompleks.
Langkah berikut yang melibatkan compute node 1:
Security group rules (3) pada security group bridge menangani firewall dan pelacakan koneksi paket.
Security group bridge OVS port (4) meneruskan paket ke packet to the OVS integration bridge security group port (5) melalui pasangan veth.
OVS integration bridge menambahkan tag VLAN internal untuk paket.
OVS integration bridge port for self-service network 1 (6) menghapus tag VLAN internal dan meneruskan paket ke self-service network 1 interface di distributed router namespace (6).
Namespace router yang didistribusikan me-rute paket ke self-service network 2.
Self-service network 2 interface idalam distributed router namespace (8) meneruskan paket ke OVS integration bridge port untuk self-service network 2 (9).
OVS integration bridge menambahkan tag VLAN internal untuk paket.
OVS integration bridge menukar internal VLAN tag untuk internal tunnel ID.
OVS integration bridge patch-tun port (10) meneruskan paket ke OVS tunnel bridge patch-int port (11).
OVS tunnel bridge (12) membungkus paket menggunakan VNI 101.
The underlying physical interface (13) untuk jaringan overlay meneruskan paket ke compute node 2 melalui overlay network (14).
Langkah berikut yang melibatkan compute node 2:
The underlying physical interface (15) untuk jaringan overlay meneruskan paket ke OVS tunnel bridge (16).
OVS tunnel bridge membuka paket dan menambahkan internal tunnel ID ke paket.
OVS tunnel bridge menukar internal tunnel ID ke internal VLAN tag.
OVS tunnel bridge patch-int patch port (17) meneruskan paket ke OVS integration bridge patch-tun patch port (18).
OVS integration bridge menghapus tag VLAN internal dari paket.
OVS integration bridge security group port (19) meneruskan paket ke security group bridge OVS port (20) melalui pasangan veth.
Security group rules (21) pada security group bridge menangani firewall dan pelacakan koneksi paket.
Security group bridge instance port (22) meneruskan paket ke instance 2 interface (23) melalui pasangan veth.
Catatan
Routing antar jaringan self-service terjadi pada compute node (simpul komputasi) yang berisi instance pengiriman paket. Dalam skenario ini, routing terjadi pada compute node 1 untuk paket dari instance 1 ke instance 2 dan pada compute node 2 untuk paket dari instance 2 ke instance 1.
Except where otherwise noted, this document is licensed under Creative Commons Attribution 3.0 License. See all OpenStack Legal Documents.