Bagian ini menjelaskan cara menggunakan manajemen agen (agent alias) dan ekstensi scheduler (alias agent_scheduler) untuk skalabilitas agen DHCP dan HA.
Catatan
Gunakan perintah klien neutron ext-list untuk memeriksa apakah ekstensi ini diaktifkan. Periksa agent
dan agent_scheduler
termasuk dalam output.
$ openstack extension list --network -c Name -c Alias
+-------------------------------------------------------------+---------------------------+
| Name | Alias |
+-------------------------------------------------------------+---------------------------+
| Default Subnetpools | default-subnetpools |
| Network IP Availability | network-ip-availability |
| Network Availability Zone | network_availability_zone |
| Auto Allocated Topology Services | auto-allocated-topology |
| Neutron L3 Configurable external gateway mode | ext-gw-mode |
| Port Binding | binding |
| Neutron Metering | metering |
| agent | agent |
| Subnet Allocation | subnet_allocation |
| L3 Agent Scheduler | l3_agent_scheduler |
| Tag support | tag |
| Neutron external network | external-net |
| Neutron Service Flavors | flavors |
| Network MTU | net-mtu |
| Availability Zone | availability_zone |
| Quota management support | quotas |
| HA Router extension | l3-ha |
| Provider Network | provider |
| Multi Provider Network | multi-provider |
| Address scope | address-scope |
| Neutron Extra Route | extraroute |
| Subnet service types | subnet-service-types |
| Resource timestamps | standard-attr-timestamp |
| Neutron Service Type Management | service-type |
| Router Flavor Extension | l3-flavors |
| Tag support for resources: subnet, subnetpool, port, router | tag-ext |
| Neutron Extra DHCP opts | extra_dhcp_opt |
| Resource revision numbers | standard-attr-revisions |
| Pagination support | pagination |
| Sorting support | sorting |
| security-group | security-group |
| DHCP Agent Scheduler | dhcp_agent_scheduler |
| Router Availability Zone | router_availability_zone |
| RBAC Policies | rbac-policies |
| standard-attr-description | standard-attr-description |
| Neutron L3 Router | router |
| Allowed Address Pairs | allowed-address-pairs |
| project_id field enabled | project-id |
| Distributed Virtual Router | dvr |
+-------------------------------------------------------------+---------------------------+
Akan ada tiga host saat penyiapan.
Host | Deskripsi |
---|---|
OpenStack controller host - controlnode | Jalankan layanan Networking, Identity, dan Compute yang diperlukan untuk pengerahan VM. Node harus memiliki setidaknya satu antarmuka jaringan yang terhubung ke Management Network. Perhatikan bahwa `` nova-network`` tidak harus berjalan karena digantikan oleh Neutron. |
HostA | Jakankan nova-compute , agen Neutron L2 dan agen DHCP |
HostB | Sama dengan HostA |
controlnode: neutron server
file konfigurasi Neutron /etc/neutron/neutron.conf
:
[DEFAULT]
core_plugin = linuxbridge
rabbit_host = controlnode
allow_overlapping_ips = True
host = controlnode
agent_down_time = 5
dhcp_agents_per_network = 1
Catatan
Dalam konfigurasi di atas, kita menggunakan dhcp_agents_per_network = 1
untuk demonstrasi ini. Dalam pengerahan biasa, kami sarankan pengaturan dhcp_agents_per_network
untuk lebih dari satu untuk mencocokkan jumlah agen DHCP dalam pengerahan Anda. Lihat Aktifkan HA DHCP secara default.
Update file konfigurasi plug-in /etc/neutron/plugins/linuxbridge/linuxbridge_conf.ini
:
[vlans]
tenant_network_type = vlan
network_vlan_ranges = physnet1:1000:2999
[database]
connection = mysql://root:root@127.0.0.1:3306/neutron_linux_bridge
retry_interval = 2
[linux_bridge]
physical_interface_mappings = physnet1:eth0
HostA and HostB: L2 agent
file konfigurasi Neutron /etc/neutron/neutron.conf
:
[DEFAULT]
rabbit_host = controlnode
rabbit_password = openstack
# host = HostB on hostb
host = HostA
Update file konfigurasi plug-in /etc/neutron/plugins/linuxbridge/linuxbridge_conf.ini
:
[vlans]
tenant_network_type = vlan
network_vlan_ranges = physnet1:1000:2999
[database]
connection = mysql://root:root@127.0.0.1:3306/neutron_linux_bridge
retry_interval = 2
[linux_bridge]
physical_interface_mappings = physnet1:eth0
Update file konfigurasi nova /etc/nova/nova.conf
:
[DEFAULT]
use_neutron=True
firewall_driver=nova.virt.firewall.NoopFirewallDriver
[neutron]
admin_username=neutron
admin_password=servicepassword
admin_auth_url=http://controlnode:35357/v2.0/
auth_strategy=keystone
admin_tenant_name=servicetenant
url=http://203.0.113.10:9696/
HostA and HostB: DHCP agent
Update file konfigurasi DHCP /etc/neutron/dhcp_agent.ini
:
[DEFAULT]
interface_driver = neutron.agent.linux.interface.BridgeInterfaceDriver
Peran admin diperlukan untuk menggunakan manajemen agen dan ekstensi scheduler. Pastikan Anda menjalankan perintah berikut di bawah sebuah proyek dengan peran admin.
Untuk bereksperimen, Anda perlu VM dan jaringan neutron:
$ openstack server list
+--------------------------------------+-----------+--------+----------------+------------+
| ID | Name | Status | Networks | Image Name |
+--------------------------------------+-----------+--------+----------------+------------+
| c394fcd0-0baa-43ae-a793-201815c3e8ce | myserver1 | ACTIVE | net1=192.0.2.3 | cirros |
| 2d604e05-9a6c-4ddb-9082-8a1fbdcc797d | myserver2 | ACTIVE | net1=192.0.2.4 | ubuntu |
| c7c0481c-3db8-4d7a-a948-60ce8211d585 | myserver3 | ACTIVE | net1=192.0.2.5 | centos |
+--------------------------------------+-----------+--------+----------------+------------+
$ openstack network list
+--------------------------------------+------+--------------------------------------+
| ID | Name | Subnets |
+--------------------------------------+------+--------------------------------------+
| 89dca1c6-c7d4-4f7a-b730-549af0fb6e34 | net1 | f6c832e3-9968-46fd-8e45-d5cf646db9d1 |
+--------------------------------------+------+--------------------------------------+
Daftar semua agen:
$ openstack network agent list
+--------------------------------------+--------------------+-------+-------------------+-------+-------+---------------------------+
| ID | Agent Type | Host | Availability Zone | Alive | State | Binary |
+--------------------------------------+--------------------+-------+-------------------+-------+-------+---------------------------+
| 22467163-01ea-4231-ba45-3bd316f425e6 | Linux bridge agent | HostA | None | True | UP | neutron-metering-agent |
| 2444c54d-0d28-460c-ab0f-cd1e6b5d3c7b | DHCP agent | HostA | None | True | UP | neutron-openvswitch-agent |
| 3066d20c-9f8f-440c-ae7c-a40ffb4256b6 | Linux bridge agent | HostB | nova | True | UP | neutron-l3-agent |
| 55569f4e-6f31-41a6-be9d-526efce1f7fe | DHCP agent | HostB | nova | True | UP | neutron-l3-agent |
+--------------------------------------+--------------------+-------+-------------------+-------+-------+---------------------------+
Setiap agen yang mendukung ekstensi ini akan mendaftarkan diri dengan server neutron ketika dijalankan.
Output menunjukkan informasi untuk empat agen. Field alive
menunjukan :-)
jika agen yang dilaporkan keadaannya dalam periode yang ditentukan oleh pilihan agent_down_time
dalam file neutron.conf
. Jika tidak, alive
adalah xxx
.
Daftar agen DHCP yang menjadi tempat jaringan tertentu:
$ neutron dhcp-agent-list-hosting-net net1
+--------------------------------------+-------+----------------+-------+
| id | host | admin_state_up | alive |
+--------------------------------------+-------+----------------+-------+
| a0c1c21c-d4f4-4577-9ec7-908f2d48622d | HostA | True | :-) |
+--------------------------------------+-------+----------------+-------+
Daftar jaringan yang ditempati oleh agen DHCP yang diberikan:
Perintah ini adalah untuk menunjukkan jaringan dimana agen dhcp diberikan sedang mengelola.
$ neutron net-list-on-dhcp-agent a0c1c21c-d4f4-4577-9ec7-908f2d48622d
+--------------------------------------+------+---------------------------------------------------+
| id | name | subnets |
+--------------------------------------+------+---------------------------------------------------+
| 89dca1c6-c7d4-4f7a-b730-549af0fb6e34 | net1 | f6c832e3-9968-46fd-8e45-d5cf646db9d1 192.0.2.0/24 |
+--------------------------------------+------+---------------------------------------------------+
Tampilkan detail agen.
The openstack network agent show command shows details for a specified agent:
$ openstack network agent show 22467163-01ea-4231-ba45-3bd316f425e6
+---------------------+-------------------------------------------------------------------------+
| Field | Value |
+---------------------+-------------------------------------------------------------------------+
| admin_state_up | UP |
| agent_type | Metering agent |
| alive | False |
| availability_zone | None |
| binary | neutron-metering-agent |
| configurations | measure_interval='30', metering_driver='neutron.services.metering.drive |
| | rs.noop.noop_driver.NoopMeteringDriver', report_interval='300' |
| created_at | 2016-10-08 15:17:14 |
| description | None |
| heartbeat_timestamp | 2016-10-24 13:53:35 |
| host | HostA |
| id | 22467163-01ea-4231-ba45-3bd316f425e6 |
| started_at | 2016-10-08 15:17:14 |
| topic | dhcp_agent |
+---------------------+-------------------------------------------------------------------------+
Dalam output ini, heartbeat_timestamp
adalah waktu di server neutron. Anda tidak perlu menyinkronkan semua agen kali ini untuk ekstensi ini supaya berjalan dengan benar. configurations
menjelaskan konfigurasi statis untuk agen atau data time berjalan. Agen ini adalah agen DHCP dan menjadi tempat satu jaringan, satu subnet, dan tiga port.
Berbagai jenis agen menunjukkan rincian yang berbeda. Output berikut menunjukkan informasi untuk agen Linux bridge:
$ openstack network agent show 22467163-01ea-4231-ba45-3bd316f425e6
+---------------------+-------------------------------------------------------------------------+
| Field | Value |
+---------------------+-------------------------------------------------------------------------+
| admin_state_up | UP |
| agent_type | Metering agent |
| alive | False |
| availability_zone | None |
| binary | neutron-linuxbridge-agent |
| configurations | measure_interval='30', metering_driver='neutron.services.metering.drive |
| | rs.noop.noop_driver.NoopMeteringDriver', report_interval='300' |
| created_at | 2016-10-08 15:17:14 |
| description | None |
| heartbeat_timestamp | 2016-10-24 13:53:35 |
| host | HostB |
| id | 22467163-01ea-4231-ba45-3bd316f425e6 |
| started_at | 2016-10-08 15:17:14 |
| topic | dhcp_agent |
+---------------------+-------------------------------------------------------------------------+
Output menunjukkan bridge-mapping
dan jumlah perangkat jaringan virtual pada agen L2 ini.
Sebuah jaringan tunggal dapat ditugaskan untuk lebih dari satu agen DHCP dan satu agen DHCP dapat host lebih dari satu jaringan. Anda dapat menambahkan jaringan ke agen DHCP dan menghapus satu dari itu.
Penjadwalan default.
Bila Anda membuat jaringan dengan satu port, jaringan akan dijadwalkan untuk agen DHCP aktif. Jika banyak agen DHCP aktif berjalan, pilih salah satu secara acak. Anda dapat merancang algoritma penjadwalan yang lebih canggih dalam cara yang sama seperti nova-schedule nanti.
$ neutron net-create net2
$ neutron subnet-create net2 198.51.100.0/24 --name subnet2
$ neutron port-create net2
$ openstack network agent list --agent-type dhcp --host qiaomin-free
+--------------------------------------+------------+-------+-------------------+-------+-------+--------------------+
| ID | Agent Type | Host | Availability Zone | Alive | State | Binary |
+--------------------------------------+------------+-------+-------------------+-------+-------+--------------------+
| e838ef5c-75b1-4b12-84da-7bdbd62f1040 | DHCP agent | HostA | nova | True | UP | neutron-dhcp-agent |
+--------------------------------------+------------+-------+-------------------+-------+-------+--------------------+
Hal ini dialokasikan untuk agen DHCP pada HostA. Jika Anda ingin memvalidasi perilaku melalui perintah dnsmasq, Anda harus membuat subnet untuk jaringan karena agen DHCP memulai layanan dnsmasq hanya jika ada DHCP.
Tetapkan jaringan untuk agen DHCP yang diberikan.
Untuk menambahkan agen DHCP lain supaya menjadi host jaringan, jalankan perintah ini:
$ neutron dhcp-agent-network-add f28aa126-6edb-4ea5-a81e-8850876bc0a8 net2
Added network net2 to dhcp agent
$ openstack network agent list --agent-type dhcp --host qiaomin-free
+--------------------------------------+------------+-------+-------------------+-------+-------+--------------------+
| ID | Agent Type | Host | Availability Zone | Alive | State | Binary |
+--------------------------------------+------------+-------+-------------------+-------+-------+--------------------+
| e838ef5c-75b1-4b12-84da-7bdbd62f1040 | DHCP agent | HostA | nova | True | UP | neutron-dhcp-agent |
| f28aa126-6edb-4ea5-a81e-8850876bc0a8 | DHCP agent | HostB | nova | True | UP | neutron-dhcp-agent |
+--------------------------------------+------------+-------+-------------------+-------+-------+--------------------+
Kedua agen DHCP menjadi host jaringan net2
.
Hapus jaringan dari agen DHCP ditentukan.
Perintah ini adalah perintah sibling (saudara kandung) untuk perintah sebelumnya. Hapus net2
dari agen DHCP untuk HostA:
$ neutron dhcp-agent-network-remove a0c1c21c-d4f4-4577-9ec7-908f2d48622d \
net2
Removed network net2 to dhcp agent
$ neutron dhcp-agent-list-hosting-net net2
+--------------------------------------+-------+----------------+-------+
| id | host | admin_state_up | alive |
+--------------------------------------+-------+----------------+-------+
| f28aa126-6edb-4ea5-a81e-8850876bc0a8 | HostB | True | :-) |
+--------------------------------------+-------+----------------+-------+
Anda dapat melihat bahwa hanya agen DHCP untuk HostB menjadi host jaringan net2
.
Boot VM pada net2
. Biarkan kedua agen DHCP menjadi host net2
. Gagal agen pada gilirannya untuk melihat apakah VM masih bisa mendapatkan IP yang diinginkan.
Boot VM pada net2
:
$ openstack network list
+--------------------------------------+------+--------------------------------------+
| ID | Name | Subnets |
+--------------------------------------+------+--------------------------------------+
| 89dca1c6-c7d4-4f7a-b730-549af0fb6e34 | net1 | f6c832e3-9968-46fd-8e45-d5cf646db9d1 |
| 9b96b14f-71b8-4918-90aa-c5d705606b1a | net2 | 6979b71a-0ae8-448c-aa87-65f68eedcaaa |
+--------------------------------------+------+--------------------------------------+
$ openstack server create --image tty --flavor 1 myserver4 \
--nic net-id=9b96b14f-71b8-4918-90aa-c5d705606b1a
...
$ openstack server list
+--------------------------------------+-----------+--------+-------------------+------------+
| ID | Name | Status | Networks | Image Name |
+--------------------------------------+-----------+--------+-------------------+------------+
| c394fcd0-0baa-43ae-a793-201815c3e8ce | myserver1 | ACTIVE | net1=192.0.2.3 | cirros |
| 2d604e05-9a6c-4ddb-9082-8a1fbdcc797d | myserver2 | ACTIVE | net1=192.0.2.4 | ubuntu |
| c7c0481c-3db8-4d7a-a948-60ce8211d585 | myserver3 | ACTIVE | net1=192.0.2.5 | centos |
| f62f4731-5591-46b1-9d74-f0c901de567f | myserver4 | ACTIVE | net2=198.51.100.2 | cirros1 |
+--------------------------------------+-----------+--------+-------------------+------------+
Pastikan kedua agen DHCP menjadi host net2
:
Gunakan perintah sebelumnya untuk menetapkan jaringan untuk agen.
$ neutron dhcp-agent-list-hosting-net net2
+--------------------------------------+-------+----------------+-------+
| id | host | admin_state_up | alive |
+--------------------------------------+-------+----------------+-------+
| a0c1c21c-d4f4-4577-9ec7-908f2d48622d | HostA | True | :-) |
| f28aa126-6edb-4ea5-a81e-8850876bc0a8 | HostB | True | :-) |
+--------------------------------------+-------+----------------+-------+
Untuk menguji HA agen DHCP:
myserver4
VM, dan jalankan udhcpc
, dhclient
atau klien DHCP lainnya.neutron-dhcp-agent
, Anda harus menghentikan proses dnsmasq
.udhcpc
di VM; ini tidak bisa mendapatkan IP yang diinginkan.Administrator mungkin ingin menonaktifkan agen jika sistem perangkat keras atau upgrade perangkat lunak direncanakan. Beberapa agen yang mendukung penjadwalan juga mendukung penonaktifan dan pengaktifan agen, seperti L3 dan DHCP agen. Setelah agen dinonaktifkan, scheduler tidak menjadwalkan sumber daya baru untuk agen.
Setelah agen dinonaktifkan, Anda dapat dengan aman menghapus agen. Bahkan setelah menonaktifkan agen, sumber daya pada agen terus ditugaskan. Pastikan Anda menghapus sumber daya pada agen sebelum Anda menghapus agen.
Menonaktifkan agen DHCP pada HostA sebelum Anda menghentikannya:
$ neutron agent-update a0c1c21c-d4f4-4577-9ec7-908f2d48622d --admin-state-up False
$ neutron agent-list
$ openstack network agent list
+--------------------------------------+--------------------+-------+-------------------+-------+-------+---------------------------+
| ID | Agent Type | Host | Availability Zone | Alive | State | Binary |
+--------------------------------------+--------------------+-------+-------------------+-------+-------+---------------------------+
| 22467163-01ea-4231-ba45-3bd316f425e6 | Linux bridge agent | HostA | None | True | UP | neutron-metering-agent |
| 2444c54d-0d28-460c-ab0f-cd1e6b5d3c7b | DHCP agent | HostA | None | True | UP | neutron-openvswitch-agent |
| 3066d20c-9f8f-440c-ae7c-a40ffb4256b6 | Linux bridge agent | HostB | nova | True | UP | neutron-l3-agent |
| 55569f4e-6f31-41a6-be9d-526efce1f7fe | DHCP agent | HostB | nova | True | UP | neutron-l3-agent |
+--------------------------------------+--------------------+-------+-------------------+-------+-------+---------------------------+
Setelah Anda berhenti agen DHCP pada HostA, Anda dapat menghapusnya dengan perintah berikut:
$ openstack network agent delete 2444c54d-0d28-460c-ab0f-cd1e6b5d3c7b
$ openstack network agent list
+--------------------------------------+--------------------+-------+-------------------+-------+-------+---------------------------+
| ID | Agent Type | Host | Availability Zone | Alive | State | Binary |
+--------------------------------------+--------------------+-------+-------------------+-------+-------+---------------------------+
| 22467163-01ea-4231-ba45-3bd316f425e6 | Linux bridge agent | HostA | None | True | UP | neutron-metering-agent |
| 3066d20c-9f8f-440c-ae7c-a40ffb4256b6 | Linux bridge agent | HostB | nova | True | UP | neutron-l3-agent |
| 55569f4e-6f31-41a6-be9d-526efce1f7fe | DHCP agent | HostB | nova | True | UP | neutron-l3-agent |
+--------------------------------------+--------------------+-------+-------------------+-------+-------+---------------------------+
Setelah penghapusan, jika Anda me-restart agen DHCP, akan muncul pada daftar agen lagi.
Anda dapat mengontrol jumlah default agen DHCP yang ditugaskan ke jaringan dengan menetapkan pilihan konfigurasi berikut di file /etc/neutron/neutron.conf
.
dhcp_agents_per_network = 3
Except where otherwise noted, this document is licensed under Creative Commons Attribution 3.0 License. See all OpenStack Legal Documents.