Atom feed of this document
  

 在代理管理和调度扩展中的命令

以下命令需要运行的命令的租户是管理员角色。

[注意]注意

确保设置了下面的环境变量,这些都是多个客户端用于访问身份服务的。

export OS_USERNAME=admin
export OS_PASSWORD=adminpassword
export OS_TENANT_NAME=admin
export OS_AUTH_URL=http://controlnode:5000/v2.0/
 

设置

  • 要完成实验,你需要虚拟机和一个neutron网络:

    $ nova list
    +--------------------------------------+-----------+--------+---------------+
    | ID                                   | Name      | Status | Networks      |
    +--------------------------------------+-----------+--------+---------------+
    | c394fcd0-0baa-43ae-a793-201815c3e8ce | myserver1 | ACTIVE | net1=10.0.1.3 |
    | 2d604e05-9a6c-4ddb-9082-8a1fbdcc797d | myserver2 | ACTIVE | net1=10.0.1.4 |
    | c7c0481c-3db8-4d7a-a948-60ce8211d585 | myserver3 | ACTIVE | net1=10.0.1.5 |
    +--------------------------------------+-----------+--------+---------------+
    
    $ neutron net-list
    +--------------------------------------+------+--------------------------------------+
    | id                                   | name | subnets                              |
    +--------------------------------------+------+--------------------------------------+
    | 89dca1c6-c7d4-4f7a-b730-549af0fb6e34 | net1 | f6c832e3-9968-46fd-8e45-d5cf646db9d1 |
    +--------------------------------------+------+--------------------------------------+
 

在neutron部署中管理代理

每个代理都支持这些扩展,当neutron服务启动时会注册自己。

  1. 列出所有代理:

    $ neutron agent-list
    +--------------------------------------+--------------------+-------+-------+----------------+
    | id                                   | agent_type         | host  | alive | admin_state_up |
    +--------------------------------------+--------------------+-------+-------+----------------+
    | 1b69828d-6a9b-4826-87cd-1757f0e27f31 | Linux bridge agent | HostA | :-)   | True           |
    | a0c1c21c-d4f4-4577-9ec7-908f2d48622d | DHCP agent         | HostA | :-)   | True           |
    | ed96b856-ae0f-4d75-bb28-40a47ffd7695 | Linux bridge agent | HostB | :-)   | True           |
    | f28aa126-6edb-4ea5-a81e-8850876bc0a8 | DHCP agent         | HostB | :-)   | True           |
    +--------------------------------------+--------------------+-------+-------+----------------+
    

    输出显示了四个代理的信息。 alive栏显示:-) ,如果在 neutron.conf 中定义了agent_down_time属性,此即是期间由代理所报告的状态。另外,alivexxx

  2. 驻扎在特定网络的DHCP代理列表

    在一些部署中,一个DHCP代理无法满足掌控所有的网络数据。另外,当部署还算小的时候你就必须开始备份。相同的网络可以分配给多于一个的DHCP代理,一个DHCP代理也可以有多个网络。

    驻扎在指定网络的DHCP代理列表:

    $ neutron dhcp-agent-list-hosting-net net1
    +--------------------------------------+-------+----------------+-------+
    | id                                   | host  | admin_state_up | alive |
    +--------------------------------------+-------+----------------+-------+
    | a0c1c21c-d4f4-4577-9ec7-908f2d48622d | HostA | True           | :-)   |
    +--------------------------------------+-------+----------------+-------+
  3. 通过给定的DHCP代理列出所托管的网络。

    此命令显示了那个网络时给定的DHCP代理所管理的。

    $ 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  10.0.1.0/24 |
    +--------------------------------------+------+---------------------------------------------------+
  4. 显示代理细节。

    agent-show 命令展示了一个指定代理的细节:

    $ neutron agent-show a0c1c21c-d4f4-4577-9ec7-908f2d48622d
    +---------------------+----------------------------------------------------------+
    | Field               | Value                                                    |
    +---------------------+----------------------------------------------------------+
    | admin_state_up      | True                                                     |
    | agent_type          | DHCP agent                                               |
    | alive               | False                                                    |
    | binary              | neutron-dhcp-agent                                       |
    | configurations      | {                                                        |
    |                     |      "subnets": 1,                                       |
    |                     |      "use_namespaces": true,                             |
    |                     |      "dhcp_driver": "neutron.agent.linux.dhcp.Dnsmasq",  |
    |                     |      "networks": 1,                                      |
    |                     |      "dhcp_lease_time": 120,                             |
    |                     |      "ports": 3                                          |
    |                     | }                                                        |
    | created_at          | 2013-03-16T01:16:18.000000                               |
    | description         |                                                          |
    | heartbeat_timestamp | 2013-03-17T01:37:22.000000                               |
    | host                | HostA                                                    |
    | id                  | 58f4ce07-6789-4bb3-aa42-ed3779db2b03                     |
    | started_at          | 2013-03-16T06:48:39.000000                               |
    | topic               | dhcp_agent                                               |
    +---------------------+----------------------------------------------------------+

    在这个输出中,heartbeat_timestamp 是 neutron 服务器的时间。您不需要为该扩展的正确执行而将所有的代理与这个时间同步。configurations 描述了代理或执行数据的静态配置。这个代理是一个 DHCP 代理,且它托管一个网络、一个子网和三个端口。

    不同类型的代理会显示不同的细节。下面的输出是Linux网桥代理的信息:

    $ neutron agent-show ed96b856-ae0f-4d75-bb28-40a47ffd7695
    +---------------------+--------------------------------------+
    | Field               | Value                                |
    +---------------------+--------------------------------------+
    | admin_state_up      | True                                 |
    | binary              | neutron-linuxbridge-agent            |
    | configurations      | {                                    |
    |                     |      "physnet1": "eth0",             |
    |                     |      "devices": "4"                  |
    |                     | }                                    |
    | created_at          | 2013-03-16T01:49:52.000000           |
    | description         |                                      |
    | disabled            | False                                |
    | group               | agent                                |
    | heartbeat_timestamp | 2013-03-16T01:59:45.000000           |
    | host                | HostB                                |
    | id                  | ed96b856-ae0f-4d75-bb28-40a47ffd7695 |
    | topic               | N/A                                  |
    | started_at          | 2013-03-16T06:48:39.000000           |
    | type                | Linux bridge agent                   |
    +---------------------+--------------------------------------+

    该输出显示了 bridge-mapping 和在这个 L2 代理上的虚拟网络设备的数目。

 

管理网络DHCP代理的任务

现在您已经执行了 net-list-on-dhcp-agentdhcp-agent-list-hosting-net 命令,您可以进行添加一个网络到 DHCP 代理以及从中移除一个网络的操作。

  1. 默认调度。

    当您以一个端口创建了一个网络,您可以将它调度到一个激活的 DHCP 代理中。如果有很多激活的代理正在运行,则随机选择一个。您可以以与日后的 nova-schedule 相同的方式设计更复杂的调度算法。

    $ neutron net-create net2
    $ neutron subnet-create net2 9.0.1.0/24 --name subnet2
    $ neutron port-create net2
    $ neutron dhcp-agent-list-hosting-net net2
    +--------------------------------------+-------+----------------+-------+
    | id                                   | host  | admin_state_up | alive |
    +--------------------------------------+-------+----------------+-------+
    | a0c1c21c-d4f4-4577-9ec7-908f2d48622d | HostA | True           | :-)   |
    +--------------------------------------+-------+----------------+-------+

    它被分配给 HostA 的 DHCP 代理。如果您想通过 dnsmasq 命令验证其行为,您必需为该网络创建一个子网,因为 DHCP 代理仅在有 DHCP 的情况下启动 dnsmasq 服务。

  2. 分配网络给指定的DHCP代理。

    要添加另外的DHCP代理给托管的网络,运行此命令:

    $ neutron dhcp-agent-network-add f28aa126-6edb-4ea5-a81e-8850876bc0a8 net2
    Added network net2 to dhcp agent
    $ 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           | :-)   |
    +--------------------------------------+-------+----------------+-------+

    两个DHCP代理均托管在net2网络。

  3. 从指定到DHCP代理删除一个网络。

    此命令是前一个到伙伴命令。为HostA从DHCP代理删除net2

    $ 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           | :-)   |
    +--------------------------------------+-------+----------------+-------+

    你可以看到只有HostB的DHCP代理托管了net2网络。

 

DHCP代理的高可用

在 net2 上启动一台虚拟机。让两个 DHCP 代理托管 net2。使代理依次故障,以查看虚拟机是否仍然获得了想要的 IP。

  1. 在net2中启动一个虚拟机。

    $ neutron net-list
    +--------------------------------------+------+--------------------------------------------------+
    | id                                   | name | subnets                                          |
    +--------------------------------------+------+--------------------------------------------------+
    | 89dca1c6-c7d4-4f7a-b730-549af0fb6e34 | net1 | f6c832e3-9968-46fd-8e45-d5cf646db9d1  10.0.1.0/24|
    | 9b96b14f-71b8-4918-90aa-c5d705606b1a | net2 | 6979b71a-0ae8-448c-aa87-65f68eedcaaa  9.0.1.0/24 |
    +--------------------------------------+------+--------------------------------------------------+
    $ nova boot --image tty --flavor 1 myserver4 \
      --nic net-id=9b96b14f-71b8-4918-90aa-c5d705606b1a
    $ nova list
    +--------------------------------------+-----------+--------+---------------+
    | ID                                   | Name      | Status | Networks      |
    +--------------------------------------+-----------+--------+---------------+
    | c394fcd0-0baa-43ae-a793-201815c3e8ce | myserver1 | ACTIVE | net1=10.0.1.3 |
    | 2d604e05-9a6c-4ddb-9082-8a1fbdcc797d | myserver2 | ACTIVE | net1=10.0.1.4 |
    | c7c0481c-3db8-4d7a-a948-60ce8211d585 | myserver3 | ACTIVE | net1=10.0.1.5 |
    | f62f4731-5591-46b1-9d74-f0c901de567f | myserver4 | ACTIVE | net2=9.0.1.2  |
    +--------------------------------------+-----------+--------+---------------+
  2. 确保'net2'上有全部的DHCP代理。

    使用前面的命令来分配网络给代理。

    $ 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           | :-)   |
    +--------------------------------------+-------+----------------+-------+
 

测试高可用

  1. 登录到myserver4虚拟机,然后运行udhcpc, dhclient或者其它DHCP客户单。

  2. 在HostA中停止DHCP代理。另外要停止neutron-dhcp-agent,你必须停止 dnsmasq进程。

  3. 在虚拟机中运行DHCP客户单,以检查其能够获得意料中的IP。

  4. 同样在主机B中停止DHCP代理。

  5. 在VM中运行udhcpc;它无法获得想要的IP。

  6. 在主机B中启动DHCP代理。虚拟机再次获得了想要的IP。

 

禁用和删除一个代理

如果计划升级系统硬件或软件,管理员可能想要禁用代理。一些支持调度的代理也支持禁用和启用代理,例如 L3 和 DHCP 代理。代理禁用后,调度器不会再调度新的资源给代理。禁用代理后,您可以安全地将代理移除。请在您删除代理之前移除代理上的资源。

  • 要运行下面的命令,你必须在主机A中停止DHCP代理。

    $ neutron agent-update --admin-state-up False a0c1c21c-d4f4-4577-9ec7-908f2d48622d
    $ neutron agent-list
    +--------------------------------------+--------------------+-------+-------+----------------+
    | id                                   | agent_type         | host  | alive | admin_state_up |
    +--------------------------------------+--------------------+-------+-------+----------------+
    | 1b69828d-6a9b-4826-87cd-1757f0e27f31 | Linux bridge agent | HostA | :-)   | True           |
    | a0c1c21c-d4f4-4577-9ec7-908f2d48622d | DHCP agent         | HostA | :-)   | False          |
    | ed96b856-ae0f-4d75-bb28-40a47ffd7695 | Linux bridge agent | HostB | :-)   | True           |
    | f28aa126-6edb-4ea5-a81e-8850876bc0a8 | DHCP agent         | HostB | :-)   | True           |
    +--------------------------------------+--------------------+-------+-------+----------------+
    $ neutron agent-delete a0c1c21c-d4f4-4577-9ec7-908f2d48622d
    Deleted agent: a0c1c21c-d4f4-4577-9ec7-908f2d48622d
    $ neutron agent-list
    +--------------------------------------+--------------------+-------+-------+----------------+
    | id                                   | agent_type         | host  | alive | admin_state_up |
    +--------------------------------------+--------------------+-------+-------+----------------+
    | 1b69828d-6a9b-4826-87cd-1757f0e27f31 | Linux bridge agent | HostA | :-)   | True           |
    | ed96b856-ae0f-4d75-bb28-40a47ffd7695 | Linux bridge agent | HostB | :-)   | True           |
    | f28aa126-6edb-4ea5-a81e-8850876bc0a8 | DHCP agent         | HostB | :-)   | True           |
    +--------------------------------------+--------------------+-------+-------+----------------+

    丢失后,若重启DHCP代理的话,它会再次回到代理列表中。

Questions? Discuss on ask.openstack.org
Found an error? Report a bug against this page


loading table of contents...