Ketersediaan tinggi untuk DHCP

Ketersediaan tinggi untuk DHCP

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                       |
+-------------------------------------------------------------+---------------------------+

Penyiapan demo

_images/demo_multiple_dhcp_agents.png

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

Konfigurasi

controlnode: neutron server

  1. 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.

  2. 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

  1. file konfigurasi Neutron /etc/neutron/neutron.conf:

    [DEFAULT]
    rabbit_host = controlnode
    rabbit_password = openstack
    # host = HostB on hostb
    host = HostA
    
  2. 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
    
  3. 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
    

Prasyarat untuk demonstrasi

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 |
+--------------------------------------+------+--------------------------------------+

Mengelola agen dalam pengerahan neutron

  1. 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.

  2. 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           | :-)   |
    +--------------------------------------+-------+----------------+-------+
    
  3. 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 |
    +--------------------------------------+------+---------------------------------------------------+
    
  4. 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.

Mengelola tugas jaringan agen DHCP

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.

  1. 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.

  2. 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.

  3. 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.

HA untuk agen DHCP

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.

  1. 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    |
    +--------------------------------------+-----------+--------+-------------------+------------+
    
  2. 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:

  1. Log in ke myserver4 VM, dan jalankan udhcpc, dhclient atau klien DHCP lainnya.
  2. Hentikan agen DHCP pada HostA. Selain penghentian binary neutron-dhcp-agent, Anda harus menghentikan proses dnsmasq.
  3. Jalankan klien DHCP di VM untuk melihat apakah ia bisa mendapatkan IP yang diinginkan.
  4. Hhentikan agen DHCP pada HostB juga.
  5. Jalankan udhcpc di VM; ini tidak bisa mendapatkan IP yang diinginkan.
  6. Mulailah agen DHCP pada HostB. VM mendapatkan yang diinginkan IP lagi.

Menonaktifkan dan menghapus agen

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.

Aktifkan HA DHCP secara default

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
Creative Commons Attribution 3.0 License

Except where otherwise noted, this document is licensed under Creative Commons Attribution 3.0 License. See all OpenStack Legal Documents.