可用域,又称为 Availability Zone,最早是由 AWS 提出,详细说明可参考 AWS 官方说明。
Availability Zone可以简单的理解为一些主机(Host)的集合,每个 Availability Zone 的网络是相互独立的,并且每个 Availability Zone 的内部网络会有较低的延迟以及较短的网络路径。
在 OpenStack 中,Nova 和 Cinder 已经支持了 AvailabilityZone的概念,本期我们主要讲解 Availability Zone 在 Neutron 中的应用(下面的 Availability Zone 用『AZ』代替)。
目前,Neutron 已经支持了 DHCP 和 L3 Agents 的 AZ 概念。接下来我们主要讲解 AZ 在 DHCP Agent 中的应用(L3 Agent 类似)。
首先,每个 DHCP Agent 可通过配置文件 dhcp_agent.ini 配置该 DHCP Agent 的 AZ ,例如:
在有多个 DHCP Agent 的 OpenStack 环境中,我们通过上述的配置,将不同的 DHCP Agent 划分到了不同的 AZ 中,例如在作者的测试环境中,存在三个 DHCP Agent,它们的 AZ 是如下配置的:
我们将三个 DHCP Agent 分成了两个 AZ,分别是 zone-0,和 zone-1,接下来配置 Neutron Server 中关于默认 AZ 的选项:
并且将每个 Network 调度到两个 DHCP Agent 上:
进行完上述所有配置后,重启 Neutron Server 和 Neutron DHCP Agent 后创建的网络如果不指定 AZ 的话就会调度到两个 AZ 中,如下:
当然,我们也可指定 AZ 创建网络,如果只指定一个 AZ 并且该 AZ 中只有一个 DHCP Agent 的话,即使在 Neutron Server 中配置了『一个网络对应两个 DHCP Agent』也不会生效,如下:
以上就是 AZ 在 Neutron DHCP Agent 中的应用,L3 Agent 类似,这里不在赘述。
总的来说,OpenStack 的组件通过 AZ 的形式在一定程度上提升了高可用性以及资源的隔离,如下:
在每个 AZ 中都拥有独立的电源设备、制冷设备以及网络设备等。在实际的部署环境中,对于只有一个网络节点的环境来说,AZ 并没有太大存在的必要,但是对于复杂的网络系统,以及对网络可用性较高的环境中,AZ 对于高可用等将会有很大帮助。(作者:苌智,UnitedStack有云 )