可用区

可用区将运行 DHCP、L3、FW 等服务的网络节点分组在一起。它定义为网络节点上的代理属性。这允许用户将可用区与其资源关联,以便资源获得高可用性。

用例

可用区用于使网络资源具有高可用性。操作员将连接到不同电源的网络节点分组到单独的可用区,并配置具有高可用性的资源调度,以便它们调度到不同的可用区。

必需的扩展

核心插件必须支持 availability_zone 扩展。核心插件还必须支持 network_availability_zone 扩展,以便根据可用区调度网络。 Ml2Plugin 支持它。路由器服务插件必须支持 router_availability_zone 扩展,以便根据可用区调度路由器。 L3RouterPlugin 支持它。

$ openstack extension list --network -c Alias -c Name
+---------------------------+---------------------------+
| Name                      | Alias                     |
+---------------------------+---------------------------+
...
| Network Availability Zone | network_availability_zone |
...
| Availability Zone         | availability_zone         |
...
| Router Availability Zone  | router_availability_zone  |
...
+---------------------------+---------------------------+

代理的可用区

可以在 dhcp-agentl3-agent 中定义 availability_zone 属性。要为每个代理定义可用区,请将值设置为 /etc/neutron/dhcp_agent.ini/etc/neutron/l3_agent.ini[AGENT] 部分

[AGENT]
availability_zone = zone-1

要确认代理的可用区

$ openstack network agent show 116cc128-4398-49af-a4ed-3e95494cd5fc
+---------------------+---------------------------------------------------+
| Field               | Value                                             |
+---------------------+---------------------------------------------------+
| admin_state_up      | UP                                                |
| agent_type          | DHCP agent                                        |
| alive               | True                                              |
| availability_zone   | zone-1                                            |
| binary              | neutron-dhcp-agent                                |
| configurations      | dhcp_driver='neutron.agent.linux.dhcp.Dnsmasq',   |
|                     | dhcp_lease_duration='86400',                      |
|                     | log_agent_heartbeats='False', networks='2',       |
|                     | notifies_port_ready='True', ports='6', subnets='4 |
| created_at          | 2016-12-14 00:25:54                               |
| description         | None                                              |
| heartbeat_timestamp | 2016-12-14 06:20:24                               |
| host                | ankur-desktop                                     |
| id                  | 116cc128-4398-49af-a4ed-3e95494cd5fc              |
| started_at          | 2016-12-14 00:25:54                               |
| topic               | dhcp_agent                                        |
+---------------------+---------------------------------------------------+

$ openstack network agent show 9632309a-2aa4-4304-8603-c4de02c4a55f
+---------------------+-------------------------------------------------+
| Field               | Value                                           |
+---------------------+-------------------------------------------------+
| admin_state_up      | UP                                              |
| agent_type          | L3 agent                                        |
| alive               | True                                            |
| availability_zone   | zone-1                                          |
| binary              | neutron-l3-agent                                |
| configurations      | agent_mode='legacy', ex_gw_ports='2',           |
|                     | floating_ips='0',                               |
|                     | handle_internal_only_routers='True',            |
|                     | interface_driver='openvswitch', interfaces='4', |
|                     | log_agent_heartbeats='False', routers='2'       |
| created_at          | 2016-12-14 00:25:58                             |
| description         | None                                            |
| heartbeat_timestamp | 2016-12-14 06:20:28                             |
| host                | ankur-desktop                                   |
| id                  | 9632309a-2aa4-4304-8603-c4de02c4a55f            |
| started_at          | 2016-12-14 00:25:58                             |
| topic               | l3_agent                                        |
+---------------------+-------------------------------------------------+

感知可用区的调度器

网络调度器

AZAwareWeightScheduler 设置为 /etc/neutron/neutron.conf 中的 network_scheduler_driver,以便网络服务根据可用区调度网络

network_scheduler_driver = neutron.scheduler.dhcp_agent_scheduler.AZAwareWeightScheduler
dhcp_load_type = networks

网络服务将网络调度到所选区域内的代理之一,就像使用 WeightScheduler 一样。在这种情况下,调度器也参考 dhcp_load_type

路由器调度器

AZLeastRoutersScheduler 设置为文件 /etc/neutron/neutron.conf 中的 router_scheduler_driver,以便网络服务根据可用区调度路由器

router_scheduler_driver = neutron.scheduler.l3_agent_scheduler.AZLeastRoutersScheduler

网络服务将路由器调度到所选区域内的代理之一,就像使用 LeastRouterScheduler 一样。

使用可用区实现高可用性

虽然网络服务为路由器提供高可用性,并为网络的 DHCP 服务提供高可用性和容错能力,但可用区通过在隔离的故障域中分割网络服务部署来提供额外的保护层。通过跨不同可用区部署 HA 节点,可以保证在影响部署的区域范围故障面前,网络服务仍然可用。

本节说明如何为 L3 和 DHCP 使用可用区获得高可用性。您应该自然地设置上述可用区配置选项。

L3 高可用性

在文件 /etc/neutron/neutron.conf 中设置以下配置选项,以便获得 L3 高可用性。

l3_ha = True
max_l3_agents_per_router = 3

HA 路由器在您创建路由器时选择的可用区上创建。

DHCP 高可用性

在文件 /etc/neutron/neutron.conf 中设置以下配置选项,以便获得 DHCP 高可用性。

dhcp_agents_per_network = 2

DHCP 服务在您创建网络时选择的可用区上创建。