OpenStack提供了丰富的网络配置环境,本文介绍设计云系统是对于网络部分需求的考虑和设计。
如果这次是首次在你的组织中部署云系统,在阅读完本章节后请和你的网络运维团队进行沟通,以便了解现有网络状况。云系统使用的网络同普通系统所使用的网络部署方式不同,且有可能在部署时对于网络的连接性和网络策略造成影响。
比如:组成云系统的服务器和云上运行的虚拟机实例所需要用的IP地址资源就需要事先进行妥善规划和准备;云系统网络中所涉及到的代理,防火墙也需要进行相应的研究。
网络管理
网络有效管理通常是一个重要的考虑项目(常见的如:分散的交换机和网络接口)。通过将系统管理和监控产生流量和实际云系统用户流量进行分流的网络管理方式可以减少对于用户使用的影响。
对于OpenStack内部组件则建议使用私有网络进行通讯,如:消息队列,OpenStack计算节点。VLAN非常适合于这种私有网络的场景。
公共访问选项
对于云系统中虚拟机实例有两种的IP地址分配策略:固定IP和动态IP。固定IP策略是在虚拟机实例启动时分配并绑定一个固定IP地址,而动态IP策略则可能在用户的不同操作时IP地址发生变更。这两种IP策略按照需求同时可用于共有和私有网络。
OpenStack必须使用固定IP地址,而动态IP地址则不是必须的。常见的2种动态IP的应用场景是:对于公网IP地址有限的私有云环境,可提供外网对于私有云的访问;或对于公有云用户可以有一个静态IP来访问云资源,而在云系统中实际对应的实例已迁移或升级。
固定IP地址可以是私有云中的内网IP,也可以是公有云中的公网IP。当虚拟机实例终止后,对应的固定IP地址就被系统回收。需要注意的是刚开始使用云系统的用户可能会对固定IP地址的消失产生困惑。
IP地址规划
OpenStack环境可能会需要很多子网,且每个子网间运行不同的服务。IP地址规划可以对于网络分隔和扩展提供更好的帮助。控制类服务同时需要公网和私网IP地址,可参见之前提到的虚拟机公网配置的选项。
IP地址规划可以分解成以下部分:
子网路由:子网数据包通过专用路由或nova-network服务进行通讯
控制服务的公开接口:swift-proxy, nova-api, glance-api和horizon的公用访问,可以指向单台服务器也可在负载均衡之后。
对象存储集群内部通讯:在对象/账号/容器的服务之间的通讯和代理服务的内部接口使用的私有网络上的通讯。
计算和存储通讯:临时存储和对象存储对于计算节点来说是外部服务,需要网络进行连接通讯。
外部远程管理:如果专用的外部远程控制器用于管理服务器,通常采用分隔的网络。
内部远程管理:通常计算或存储节点需要额外的网络接口(如 1G接口)用于系统管理或监控工具访问服务器。
未来扩展的预留空间:添加新的面向公开的控制服务,或是更多的虚拟机实例的IP需要在你的计划中。
比如:在私有IP段172.22.42.0/24 and 172.22.87.0/26上部署了OpenStack的计算和对象存储服务,可按照如下方式进行配置:
172.22.42.0/24 172.22.42.1 - 172.22.42.3 - 子网路由 172.22.42.4 - 172.22.42.20 - 预留 172.22.42.21 - 172.22.42.104 - 计算节点远程控制器 172.22.42.105 - 172.22.42.188 - 计算节点管理接口 172.22.42.189 - 172.22.42.208 - Swift proxy远程控制器 172.22.42.209 - 172.22.42.228 - Swift proxy管理接口 172.22.42.229 - 172.22.42.252 - Swift storage servers远程控制器 172.22.42.253 - 172.22.42.254 - 预留 172.22.87.0/26: 172.22.87.1 - 172.22.87.3 - 子网路由 172.22.87.4 - 172.22.87.24 - Swift proxy server内部接口 172.22.87.25 - 172.22.87.63 - Swift object server内部接口 |
也可以使用公网IP地址实现类似方式,建议使用较大范围段的IP地址。需要注意的是有些Openstack网络配置下,虚拟机实例的公网IP地址是分配给了nova-compute主机。
网络拓扑
OpenStack提供了几种网络管理方式,每种各自有自己的优缺点。选择不同的网络管理管理方式会影响到你网络拓扑,所以需要谨慎选择合适方式。 方式 Flat 优点:及其简单,不需要DHCP广播 缺点:需要在虚拟机实例中进行文件注入,仅限于有限的Linux发行版,配置困难,不推荐 FlatDHCP 优点:配置相对简单,标准网络协议,可用于任意操作系统 缺点:需要有自己的DHCP广播域 VlanManager 优点:每个租户可以隔离在自己的VLAn中 缺点:配置较复杂,需要有自己的DHCP广播域,需要需要许多VLAN配置传输端口,有VLAN数量限制,交换机需要支持802.1q VLAN tagging FlatDHCP Multi-host 优点:网络故障可按照虚拟机进行隔离 缺点:配置复杂 HA 优点:running on the hypervisor affected.(不知道什么意思?主机上运行,可迁移?),DHCP通讯可以隔离在单个主机,网络流量可以分布到不同的计算节点上 缺点:默认计算节点需要分配公网IP地址,在线扩展时在网络部分需要特别小心的修改配置
VLANs
VLAN的配置可以从简单到复杂。使用VLAN可以使每个项目有有自己的子网且网络广播可以同其他的项目分隔开。为了让OpenStack更好的使用VLAN,需要将VLAN进行划分(每个项目一个VLAN)且每个计算节点连接的交换机端口都需要绑定到VLAN的传输端口(trunck port)。
比如:你的云预计需要支持最多100个项目,选择一个当前网络架构中没有使用的VLAN范围(如:VLAN 200 - 299),然后配置OpenStack使用该VLAN范围且交换机端口允许该范围的VLAN进行通讯。
多个网络接口
OpenStack可以支持将多个网络接口分配给一个虚拟机实例。虽然这是一个不常用的高级特性,但通过简单配置就可支持。需要注意的是第二个网络接口使用整个子网或VLAN,对于可支持的项目数会减少。
多主机和单主机网络
nova-network服务可以运行在多主机或单主机模式下。多主机网络模式就是每个计算节点上都运行一份nova-network服务,该服务就作为相同节点上虚拟机实例连接Internet的网关。同时,计算节点也为本机的虚拟机实例提供了动态IP和安全组(Security Groups)。单主机网络模式是使用集中的服务器,如:云控制器,独立运行nova-network服务。所有计算节点都将虚拟机实例的网络通讯转发到云控制器,云控制器负责连接到Internet。云中的所有计算节点上所有的虚拟机实例使用的动态IP和安全组(Security Groups)都是由云控制器支持。
这两种模式各有优缺点。单主机网络模式有单点故障的缺点,当云控制器发生故障,所有虚拟机实例都无法进行网络通讯。而多主机网络模式则没有这个问题,但多主机模式下需要每个计算节点都有一个公网IP用于连接Internet。当没有足够的公网IP地址时,则无法使用多主机网络模式。
网络服务
OpenStack和其他网络应用一样会应用很多标准服务,比如:DNS和NTP
NTP
时间同步是确保OpenStack各个组件能正常工作的一个关键因素。虚拟机实例中的调度,对象存储中的对象复制和日志中的时间戳匹配都必须要有正确的时间。
所有运行OpenStack组件的服务器都需要能访问适合的NTP服务。你可以通过在本地搭建一个NTP服务或者是使用公用的NTP服务。通过访问http://www.pool.ntp.org/可以获得可用的公用NTP服务。
DNS
除了在安装nova-network服务器上有运行dnsmasq之外,OpenStack目前并不提供DNS服务。你可以考虑提供一个动态DNS服务用于虚拟机实例更新DNS记录指向新的IP地址,也可以提供正向或逆向的DNS同虚拟机实例IP地址的映射,如:vm-203-0-113-123.example.com。