现在的位置: 首页 > 综合 > 正文

nova网络模式

2014年01月09日 ⁄ 综合 ⁄ 共 2282字 ⁄ 字号 评论关闭

网络控制器(network controller)提供了虚拟网络,使得Compute服务器和其他的Compute服务器以及外网进行交互。

网络控制器管理在宿主机上的网络资源。API服务器通过消息队列分发命令。这些命令之后会被网络控制器处理,特定的操作有:

•        分配固定IP地址

•        为项目配置VLAN

•        为计算节点配置网络

目前为止,Nova只支持Linux网桥网络使得虚拟接口可以通过物理接口链接到外部网络。网络控制器提供了虚拟网络来使得计算服务器之间互相交互以及和公共网络交互。

Nova支持3种类型的网络,实现成3种相对应的“网络管理”类型:

•        Flat网络管理模式

•        Flat DHCP网络管理模式

•        VLAN网络管理模式

这3种类型的网络管理模式可以在一个云系统里面共存。然而,如果没有为一个给定的项目选择它的网络管理类型,就不能在一个给定的Compute安装中配置多于一种类型的网络模式。

Nova有固定IP和浮动IP的概念。固定IP被分发到创建的实例,然后实例持有固定IP直到实例被显式地停机。浮动IP是一些可以和实例动态相连的IP地址。这些地址在任何时刻可以断开连接或者连接到另外的实例。用户可以为他们的项目保留一个浮动的IP地址。

•Flat模式

网络管理员指定一个子网。为虚拟机实例分配的IP地址都是从这个子网内面获取,然后在虚拟机启动时候注入虚拟机镜像。每个实例从有效地址池接收到一个固定的IP地址。网络管理员必须要配置好Linux网桥(名为br100),包括拥有网络的网络控制器还有拥有实例的云控制器。所有的系统实例都是和同一个网桥所相关的,网络管理员需要手动配置相连关系。注意:目前为止配置注入只能够Linux类型的操作系统正常工作,网络配置保存在/etc/network/interfaces路径。

•Flat DHCP模式

启动一个DHCP服务器,把从一个指定的子网中获得的IP地址传递到虚拟机实例,此外网络管理员还需手动配置网桥。为虚拟机实例所分配的IP地址都是从网络管理员指定的子网中所获得的。就像Flat模式一样,所有的实例都在计算节点中和一个网桥相关。除此以外需要一个DHCP服务器运行来配置实例。在这个模式里面,Compute做了更多一些的配置,尝试和以太网设备(默认为eth0)建立网桥。Compute也会运行dusmasq作为DHCP服务器监听这个网桥。之后实例做一次dhcpdiscover操作来接收他们的固定IP。

在两个Flat模式里面,网络节点没有扮演默认网关的角色。实例都被分配了公共的IP地址。Compute节点持有每个项目和实例都会创建的iptables/ebtalbes实体,来抵抗IP/MAC地址欺骗或者是ARP欺骗。

•VLAN网络模式

OpenStack Compute的默认模式。在这个模式里面,Compute为每个项目创建了VLAN和网桥。为了实现多台机器的安装,VLAN网络模式需要一个支持VLAN标签(IEEE 802.1Q)的路由器。每个项目获得一些只能从VLAN内部访问的私有IP地址。为了实现用户获得项目的实例,需要创建一个特殊的VPN实例(代码名为cloudpipe)。Compute为用户生成了证明书和key,使得用户可以访问VPN,同时Compute自动启动VPN。它为每个项目的所有实例提供一个私有网络段,这个私有网络段都是可以通过因特网的VPN访问的。在这个模式里面,每个项目获得它自己的VLAN,Linux网桥还有子网。被网络管理员所指定的子网都会在需要的时候动态地分配给一个项目。DHCP服务器为所有的VLAN所启动,从被分配到项目的子网中获取IP地址并传输到虚拟机实例。所有属于某个项目的实例都会连接到同一个VLAN。OpenStack
Compute在必要的时候会创建Linux网桥和VLAN。

调度器(scheduler)选择最合适的Compute控制器来放置一个实例,实现负载均衡。

消息机制 OpenStack Compute 是建立在无共享(shared-nothing)的,基于消息(messaging-based)架构上的。在多服务器上运行所有的主要组件包括Compute 控制器,卷控制器,网络控制器以及对象存储。云控制器通过HTTP协议和内部对象存储通信。但是云控制器和调度器,网络控制器以及卷控制器是通过AMQP协议(Advanced Message Queue protocol),即高级消息队列协议来通信。为了避免在等待响应的时候造成每个组件阻塞,OpenStack Compute使用了异步调用,当响应被接收时候会触发回调。为了取得同样组件的多份拷贝的无共享属性,OpenStack
Compute 在分布式数据存储上保存了整个云系统的状态。对系统的更新会被写入到存储里面,必要时会使用原子性的事务来进行这个操作。对状态的请求会从存储里面读出。在有限的例子,读取的结果在很短的时间之内缓存到控制器里面。

一个典型的消息传递事件从API服务器接受来自用户的请求开始。这个API服务器授权这个用户,保证用户是被允许发起相关的命令。在请求中所涉及到的对象的有效性被评估,如果评估有效,为了相关的工作处理器,这请求会被路由到消息引擎。工作处理器在它们各自角色或者主机名的基础上监听这个队列。当监听产生了工作请求,工作处理器接收这个任务并开始执行。完成之后,响应会分发到队列里面。队列会被API服务器接收和转述到发起请求的用户。在整个过程中数据库实体会根据需求被查询,增加或者消除。

抱歉!评论已关闭.