浓墨重彩之OpenStack-06-nova计算服务

来源:互联网 发布:电脑怎么检查网络 编辑:程序博客网 时间:2024/05/21 08:35


1、计算服务概览

使用OpenStack计算服务来托管和管理云计算系统。OpenStack计算服务是基础设施即服务(IaaS)系统的主要部分,模块主要由Python实现。
OpenStack计算组件请求OpenStack Identity服务进行认证;请求OpenStack Image服务提供磁盘镜像;为OpenStack dashboard提供用户与管理员接口。磁盘镜像访问限制在项目与用户上;配额以每个项目进行设定(例如,每个项目下可以创建多少实例)。OpenStack组件可以在标准硬件上水平大规模扩展,并且下载磁盘镜像启动虚拟机实例。
OpenStack计算服务由下列组件所构成:

nova-api 服务
接收和响应来自最终用户的计算API请求。此服务支持OpenStack计算服务API,Amazon EC2 API,以及特殊的管理API用于赋予用户做一些管理的操作。它会强制实施一些规则,发起多数的编排活动,例如运行一个实例。

nova-api-metadata 服务
接受来自虚拟机发送的元数据请求。``nova-api-metadata``服务一般在安装``nova-network``服务的多主机模式下使用.
``nova-compute``服务
一个持续工作的守护进程,通过Hypervior的API来创建和销毁虚拟机实例。例如:
  • XenServer/XCP 的 XenAPI
  • KVM 或 QEMU 的 libvirt
  • VMware 的 VMwareAPI
过程是蛮复杂的。最为基本的,守护进程同意了来自队列的动作请求,转换为一系列的系统命令如启动一个KVM实例,然后,到数据库中更新它的状态。

``nova-scheduler``服务
拿到一个来自队列请求虚拟机实例,然后决定那台计算服务器主机来运行它。

``nova-conductor``模块
媒介作用于``nova-compute``服务与数据库之间。它排除了由``nova-compute``服务对云数据库的直接访问。nova-conductor模块可以水平扩展。但是,不要将它部署在运行``nova-compute``服务的主机节点上。

``nova-cert``模块
服务器守护进程向Nova Cert服务提供X509证书。用来为``euca-bundle-image``生成证书。仅仅是在EC2 API的请求中使用

nova-networkworker 守护进程
与``nova-compute``服务类似,从队列中接受网络任务,并且操作网络。执行任务例如创建桥接的接口或者改变IPtables的规则。

nova-consoleauth 守护进程
授权控制台代理所提供的用户令牌。详情可查看``nova-novncproxy``和 nova-xvpvncproxy。该服务必须为控制台代理运行才可奏效。

nova-novncproxy 守护进程
提供一个代理,用于访问正在运行的实例,通过VNC协议,支持基于浏览器的novnc客户端。

nova-spicehtml5proxy 守护进程
提供一个代理,用于访问正在运行的实例,通过 SPICE 协议,支持基于浏览器的 HTML5 客户端。

nova-xvpvncproxy 守护进程
提供一个代理,用于访问正在运行的实例,通过VNC协议,支持OpenStack特定的Java客户端。

nova-cert 守护进程
X509 证书。

``nova``客户端
用于用户作为租户管理员或最终用户来提交命令。

队列
一个在守护进程间传递消息的中央集线器。

SQL数据库
存储构建时和运行时的状态,为云基础设施,包括有:
  • 可用实例类型
  • 使用中的实例
  • 可用网络
  • 项目
理论上,OpenStack计算可以支持任何和SQL-Alchemy所支持的后端数据库,通常使用SQLite3来做测试可开发工作,MySQL和PostgreSQL 作生产环境。

2、安装并配置控制节点

先决条件

在安装和配置 Compute 服务前,你必须创建数据库服务的凭据以及 API endpoints。
  1. 为了创建数据库,必须完成这些步骤:
  • 用数据库连接客户端以 root 用户连接到数据库服务器:
$ mysql -u root -p

    • 创建 nova_apinova 数据库:
CREATE DATABASE nova_api;CREATE DATABASE nova;

    • 对数据库进行正确的授权:
GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'localhost' IDENTIFIED BY '000000';
GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'%' IDENTIFIED BY '000000';
GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' IDENTIFIED BY '000000';
GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' IDENTIFIED BY '000000';

    • 退出数据库客户端。
  1. 获得 admin 凭证来获取只有管理员能执行的命令的访问权限:
$ . admin-openrc

  1. 要创建服务证书,完成这些步骤:
  • 创建 nova 用户:
$ openstack user create --domain default --password-prompt novaUser
Password:
Repeat User Password:

    • nova 用户添加admin 角色:
$ openstack role add --project service --user nova admin

    • 创建 nova 服务实体:
$ openstack service create --name nova --description "OpenStack Compute" compute

  1. 创建 Compute 服务 API 端点 :
$ openstack endpoint create --region RegionOne compute public http://controller:8774/v2.1/%\(tenant_id\)s
$ openstack endpoint create --region RegionOne compute internal http://controller:8774/v2.1/%\(tenant_id\)s
$ openstack endpoint create --region RegionOne compute admin http://controller:8774/v2.1/%\(tenant_id\)s

安全并配置组件

  1. 安装软件包:
# yum install openstack-nova-api openstack-nova-conductor
openstack-nova-console openstack-nova-novncproxy
openstack-nova-scheduler

  1. 编辑``/etc/nova/nova.conf``文件并完成下面的操作:
  • 在``[DEFAULT]``部分,只启用计算和元数据API:
[DEFAULT]
...
enabled_apis=osapi_compute,metadata


  • 在``[api_database]``和``[database]``部分,配置数据库的连接:
[api_database]
...
connection=mysql+pymysql://nova:NOVA_DBPASS@controller/nova_api
[database]
...
connection=mysql+pymysql://nova:NOVA_DBPASS@controller/nova


用你为 Compute 数据库选择的密码来代替 NOVA_DBPASS
    • 在 “[DEFAULT]” 和 “[oslo_messaging_rabbit]”部分,配置 “RabbitMQ” 消息队列访问:
[DEFAULT]
...
rpc_backend=rabbit
[oslo_messaging_rabbit]
...
rabbit_host=controller
rabbit_userid=openstack
rabbit_password=RABBIT_PASS


用你在 “RabbitMQ” 中为 “openstack” 选择的密码替换 “RABBIT_PASS”。
    • 在 “[DEFAULT]” 和 “[keystone_authtoken]” 部分,配置认证服务访问:
[DEFAULT]
...
auth_strategy=keystone
[keystone_authtoken]
...
auth_uri=http://controller:5000
auth_url=http://controller:35357
memcached_servers=controller:11211
auth_type=password
project_domain_name=default
user_domain_name=default
project_name=service
username=nova
password=NOVA_PASS
使用你在身份认证服务中设置的``nova`` 用户的密码替换``NOVA_PASS``。
    • [DEFAULT 部分,配置``my_ip`` 来使用控制节点的管理接口的IP 地址。
[DEFAULT]
...
my_ip=10.0.0.11

  • [DEFAULT] 部分,使能 Networking 服务:
[DEFAULT]
...
use_neutron=True
firewall_driver=nova.virt.firewall.NoopFirewallDriver


    • 在``[vnc]``部分,配置VNC代理使用控制节点的管理接口IP地址 :
[vnc]
...
vncserver_listen=$my_ip
vncserver_proxyclient_address=$my_ip


    • [glance] 区域,配置镜像服务 API 的位置:
[glance]
...
api_servers=http://controller:9292


  • [oslo_concurrency] 部分,配置锁路径:
[oslo_concurrency]
...
lock_path=/var/lib/nova/tmp

  1. 同步Compute 数据库:
# su -s /bin/sh -c "nova-manage api_db sync" nova# su -s /bin/sh -c "nova-manage db sync" nova

完成安装

3、安装和配置计算节点

安全并配置组件

  1. 安装软件包:
# yum install openstack-nova-compute
  1. 编辑``/etc/nova/nova.conf``文件并完成下面的操作:
  • 在``[DEFAULT]`` 和 [oslo_messaging_rabbit]部分,配置``RabbitMQ``消息队列的连接:
[DEFAULT]
...
rpc_backend=rabbit
[oslo_messaging_rabbit]
...
rabbit_host=controller
rabbit_userid=openstack
rabbit_password=RABBIT_PASS
用你在 “RabbitMQ” 中为 “openstack” 选择的密码替换 “RABBIT_PASS”。
    • 在 “[DEFAULT]” 和 “[keystone_authtoken]” 部分,配置认证服务访问:
[DEFAULT]
...
auth_strategy=keystone
[keystone_authtoken]
...
auth_uri=http://controller:5000
auth_url=http://controller:35357
memcached_servers=controller:11211
auth_type=password
project_domain_name=default
user_domain_name=default
project_name=service
username=nova
password=NOVA_PASS
使用你在身份认证服务中设置的``nova`` 用户的密码替换``NOVA_PASS``。

  • [DEFAULT] 部分,配置my_ip 选项:
[DEFAULT]
...
my_ip=X.X.X.X(计算节点IP地址)
  • [DEFAULT] 部分,使能 Networking 服务:
[DEFAULT]
...
use_neutron=True
firewall_driver=nova.virt.firewall.NoopFirewallDriver

注解
缺省情况下,Compute 使用内置的防火墙服务。由于 Networking 包含了防火墙服务,所以你必须通过使用nova.virt.firewall.NoopFirewallDriver 来去除 Compute 内置的防火墙服务。

    • 在``[vnc]``部分,启用并配置远程控制台访问:
[vnc]
...
enabled=True
vncserver_listen=0.0.0.0
vncserver_proxyclient_address=$my_ip
novncproxy_base_url=http://controller:6080/vnc_auto.html
服务器组件监听所有的 IP 地址,而代理组件仅仅监听计算节点管理网络接口的 IP 地址。基 本的 URL 指示您可以使用 web 浏览器访问位于该计算节点上实例的远程控制台的位置。
注解
如果你运行浏览器的主机无法解析``controller`` 主机名,你可以将 ``controller``替换为你控制节点管理网络的IP地址。

    • [glance] 区域,配置镜像服务 API 的位置:
[glance]
...
api_servers=http://controller:9292
  • 在 [oslo_concurrency] 部分,配置锁路径:
[oslo_concurrency]
...
lock_path=/var/lib/nova/tmp

完成安装

4、验证操作