OpenStack Hands on lab 4(2)

Nova中有Fixed IPs和Floating IPs的概念。 Fixed IP是虚拟机实例在创建的时候, 分配到虚拟机的系统中的, 并且一直维持这个地址直到虚拟机实例被终止。 Floating IPs是可以被动态加载到已经在运行的虚拟机实例上的, 并且Floating IP是可以随时分配到其他虚拟机实例上的。

在Nova中可以通过下面三种网络模式来实现Fixed IPs:

Flat – 一种简单的网络模式, 虚拟机通过一个地址池(Pool)来获得IP地址。 所有的虚拟机通过搭载相同的桥接(Bridge)网卡(默认是br100)进行网络通信。 虚拟机的网络配置是在其启动之前被注入到interfaces文件中的。 所以它仅支持Linux风格的操作系统, 就是通过/etc/network/interfaces来配置网络的操作系统。

Flat DHCP – 类似Flat模式,虚拟机通过桥接的方式接入到网络, 通过这种模式Nova需要多做一些配置, 来尝试桥接到物理网卡(默认eth0)。 它还需要运行一个DHCP服务器监听在桥接网卡上。 虚拟机通过DHCP来获得Fixed IPs。

VLAN DHCP – 支持最多功能的模式。 一般用于多节点的部署。 它需要一个支持vlan的可管理的交换机, Nova会为每个项目创建一个vlan, 改项目会获得一个私有网段, 并只能通过该网段访问虚拟机。 用户如果需要访问该项目下的虚拟机, 需要创建一个特殊的VPN实例(), Nova会生成一对证书/Key用于连接VPN.

VLAN DHCP MODE

Binaries

Nova提供了一些可执行的文件用于手动运行各项服务。 这些文件可运行在同一台机器上, 或者单独运行在不同的机器上。

nova-api: 用于接收xml请求,并将请求发送给其他的服务。 它是一个wsgi的程序, 由paste实现。 并用来处理身份验证。 它也同时支持EC2和OpenStack的API.

nova-objectstore: 是一个简单的基于文件的存储系统, 用于兼容大多数Amazon S3的api. 根据OpenStack的开发计划, 这个服务很快会被Glance取代。 所以现在, 我们不需要开启这项服务。

nova-compute: 负责管理所有的虚拟机, 它将ComputeManager的服务的接口暴露出来, 通过RPC协议对外提供服务。

nova-volume: 负责管理加载block存储设备, 同样通过RPC协议提供VolumeManager服务.

nova-network: 用于管理fixed IPs、floating IPs、dhcp、网桥和vlan。 他提供对NetworkManager的服务。

nova-manage

nova-manage 是一个命令行程序, 用于执行一些内部的管理指令。 例如管理项目、管理用户、管理网络等等, 详细的使用方法可以参考 官方nova-manage手册

Flags

Nova使用python-gflags来处理命令系统, 它可以通过命令行参数或者一个flag文件来做为参数的输入。 例如nova-manage –flagname=flagvalue。 最新的Nova使用nova.conf作为flag文件,也就是我们后面会用到的nova配置文件。 根据不同的版本, 配置文件的风格也不一样, 有的配置是以–开头, 而后面都是以flag=value这种格式为准。

Plugins

Nova的一些服务/功能可以通过插件的形式提供, 例如身份验证、数据库、virt、网络、Volume等.

Managers/Drivers: utils.import_object from string flag

virt/Connections: 通过配置文件来设置

数据库

验证管理

Volumes: 可以通过插件替代默认的, 例如Nexenta、NetApp这些存储系统作为Volumes设备。

Network, 上面介绍过Nova的三种网络模式。

Compute, 可以通过插件来连接不同的计算节点。

IPC/RPC

Nova使用AMQP消息标准来处理各服务之间的通讯, 它默认支持RabbitMQ作为消息队列系统, RabbitMQ是一个基于Erlang程序的消息队列服务器, 使用非常简单。 一个消息队列可以提供本地服务之间的消息交换, 也可以提供多台服务器之间的消息交换。 你可以将RabbitMQ单独部署在一台服务器上, 为其他例如Glance, Nova提供消息服务。

Fakes

由于官方文档对Fakes的资料比较少, 这里我就写我自己对Fakes的理解。 因为我还没有完整的读Nova的代码, 只是大致过了一下。 所以这里Fakes可以理解为一个实现了接口但是却没有完整实现功能的用于测试的适配器。 例如fakeldap, 它实现了模拟python ldap模块对nova的支持。所以你可以通过这个模块来测试nova对ldap(非真实环境)的支持。

Scheduler

Nova的调度器(Scheduler)现在作为一个单独的服务, 可以通过nova-scheduler来启动。 它用于实现对Nova中的一些Task进行调度执行,你可以通过filter来筛选任务, 例如compute_filter, all_host_filter等。 目前Nova中自带了:

affinity_filter

all_hosts_filter

availability_zone_filter

compute_filter

core_filter

isolated_hosts_filter

json_filter

ram_filter

Security Groups

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/0b89dd40366e531011ae27d750da13b4.html