一、安装 Nova 前的准备

1. 为KeyStone配置数据库

提示:以下操作在控制节点完成,为计算服务创建数据库、服务认证和API端点

  1. 使用数据库客户端,以root用户连接到数据库中:mysql -u root -p
  2. 创建Nova数据库:CREATE DATABASE nova;
  3. 为Nova用户授予数据库权限:
    GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' IDENTIFIED BY 'NOVA_DBPASS';GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' IDENTIFIED BY 'NOVA_DBPASS';

2. 创建Nova的身份认证证书

  1. 加载admin用户的客户端脚本:source admin-openrc.sh
  2. 创建nova用户:openstack user create --password-prompt nova
  3. 将admin角色添加给nova用户:openstack role add --project service --user nova admin
  4. 创建nova的服务实体:
    openstack service create --name nova --description "OpenStack Compute" compute
  5. 创建计算服务的API endpoint:
    openstack endpoint create --publicurl http://controller:8774/v2/%\(tenant_id\)s --internalurl http://controller:8774/v2/%\(tenant_id\)s --adminurl http://controller:8774/v2/%\(tenant_id\)s --region RegionOne compute

二、在控制节点上安装和配置Nova

1. 安装Nova

  1. 安装Nova:apt-get install -y nova-api nova-cert nova-conductor nova-consoleauth nova-novncproxy nova-scheduler python-novaclient

2. 配置Nova

编辑文件/etc/nova/nova.conf
小助手:删除#和空格的命令:cat file | grep -v '^#' | grep -v '^$' > newfile

  1. 修改[database]部分,配置数据库的连接:connection = mysql://nova:NOVA_DBPASS@controller/nova 记得密码替换为自己设置密码,这是mysql的密码,并非nova用户的密码
  2. 修改[DEFAULT]和[oslo_messaging_rabbit]两部分, 配置RabbitMQ消息队列的访问:
rpc_backend = rabbit
复制代码
rabbit_host = controller
rabbit_userid = openstack
rabbit_password = RABBIT_PASS
复制代码
  1. 修改[DEFAULT]和[keystone_authtoken]两部分,配置身份认证服务的访问:
auth_strategy = keystone
复制代码

注意:修改[keystone_authtoken]部分要注释掉本部分其他的参数

auth_uri = http://controller:5000
auth_url = http://controller:35357
auth_plugin = password
project_domain_id = default
user_domain_id = default
project_name = service
username = nova
password = NOVA_PASS
复制代码
  1. 修改[DEFAULT]部分的my_ip参数,配置控制节点的管理IP地址:
my_ip = 10.0.0.11
复制代码
  1. 修改[DEFAULT]部分,配置VNC代理以使用控制节点的管理IP地址:
vncserver_listen = 10.0.0.11
vncserver_proxyclient_address = 10.0.0.11
复制代码
  1. 修改[glance]部分,配置镜像服务的位置:
host = controller
复制代码
  1. 修改[oslo_concurrency]部分,配置锁路径:
lock_path = /var/lock/nova
复制代码
  1. 可选:在[DEFAULT]部分启用日志信息详细记录:
verbose = True
复制代码

3. 配置Nova数据库

  1. 为计算服务数据库添加数据:su -s /bin/sh -c "nova-manage db_sync" nova
  2. 重启计算服务Nova:
service nova-api restart
service nova-cert restart
service nova-consoleauth restart
service nova-scheduler restart
service nova-conductor restart
service nova-novncproxy restart
复制代码
  1. 删除ubuntu默认创建的SQLite数据库:rm -f /var/lib/nova/nova.sqlite

三、在计算节点上安装和配置Nova

1. 安装Nova

  1. 安装Nova:apt-get install -y nova-compute sysfsutils

2. 配置Nova

编辑文件/etc/nova/nova.conf
小助手:删除#和空格的命令:cat file | grep -v '^#' | grep -v '^$' > newfile

  1. 修改[database]部分,配置数据库的连接:connection = mysql://nova:NOVA_DBPASS@controller/nova 记得密码替换为自己设置密码,这是mysql的密码,并非nova用户的密码
  2. 修改[DEFAULT]和[oslo_messaging_rabbit]两部分, 配置RabbitMQ消息队列的访问:
rpc_backend = rabbit
复制代码
rabbit_host = controller
rabbit_userid = openstack
rabbit_password = RABBIT_PASS
复制代码
  1. 修改[DEFAULT]和[keystone_authtoken]两部分,配置身份认证服务的访问:
auth_strategy = keystone
复制代码

注意:修改[keystone_authtoken]部分要注释掉本部分其他的参数

auth_uri = http://controller:5000
auth_url = http://controller:35357
auth_plugin = password
project_domain_id = default
user_domain_id = default
project_name = service
username = nova
password = NOVA_PASS
复制代码
  1. 修改[DEFAULT]部分的my_ip参数,配置控制节点的管理IP地址:
my_ip = MANAGEMENT_INTERFACE_IP_ADDRESS
复制代码
  1. 修改[DEFAULT]部分,配置VNC代理以启用远程终端的访问:
vnc_enabled = True
vncserver_listen = 0.0.0.0
vncserver_proxyclient_address = MANAGEMENT_INTERFACE_IP_ADDRESS
novncproxy_base_url = http://controller:6080/vnc_auto.html
复制代码
  1. 修改[glance]部分,配置镜像服务的位置:
host = controller
复制代码
  1. 修改[oslo_concurrency]部分,配置锁路径:
lock_path = /var/lock/nova
复制代码
  1. 可选:在[DEFAULT]部分启用日志信息详细记录:
verbose = True
复制代码

3. 完成在计算节点上安装和配置Nova

  1. 检查计算节点是否支持虚拟机的硬件加速:egrep -c '(vmx|svm)' /proc/cpuinfo 如果输出值是1或则比这更大,则不需要额外配置
    如果是0,计算节点不支持硬件加速,你必须配置libvirt为QEMU,代替KVM
  2. 修改文件/etc/nova/nova-compute.conf下的[libvirt]部分:
virt_type = qemu
复制代码
  1. 重启计算服务nova:service nova-compute restart
  2. 删除ubuntu默认创建的SQLite数据库:rm -f /var/lib/nova/nova.sqlite

四、校验安装

提示:在控制节点上进行校验

  1. 加载admin客户端脚本:source admin-openrc.sh
  2. 检查计算服务的服务组件是否成功地启动和注册:nova service-list
+----+------------------+------------+----------+---------+-------+----------------------------+-----------------+
| Id | Binary           | Host       | Zone     | Status  | State | Updated_at                 | Disabled Reason |
+----+------------------+------------+----------+---------+-------+----------------------------+-----------------+
| 1  | nova-conductor   | controller | internal | enabled | up    | 2014-09-16T23:54:02.000000 | -               |
| 2  | nova-consoleauth | controller | internal | enabled | up    | 2014-09-16T23:54:04.000000 | -               |
| 3  | nova-scheduler   | controller | internal | enabled | up    | 2014-09-16T23:54:07.000000 | -               |
| 4  | nova-cert        | controller | internal | enabled | up    | 2014-09-16T23:54:00.000000 | -               |
| 5  | nova-compute     | compute1   | nova     | enabled | up    | 2014-09-16T23:54:06.000000 | -               |
+----+------------------+------------+----------+---------+-------+----------------------------+-----------------+
复制代码
  1. 在身份认证服务中查看API端点信息以验证是否能够连接到OpenStack的认证服务:nova endpoints
  2. 通过在镜像服务中查看镜像信息以验证是否能够连接镜像服务:nova image-list