这个部分将描述如何在控制节点上安装和配置 Compute 服务,即 nova。
配置前的准备
在您安装和配置 Compute 服务之前,您必须创建数据库、服务证书和 API 入口点。
1、完成下面的步骤以创建数据库:
以 root 用户身份通过数据库客户端连接到数据库服务:
$ mysql -u root -p
创建 nova 数据库:
CREATE DATABASE nova;
为 nova 数据库赋予合适的访问权限:
GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' \ IDENTIFIED BY 'NOVA_DBPASS'; GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' \ IDENTIFIED BY 'NOVA_DBPASS';
将其中的 NOVA_DBPASS 替换为一个合适的密码。
退出数据库客户端。
2、导入 admin 身份凭证以执行管理员用户专有的命令:
$ source admin-openrc.sh
3、创建服务证书,完成如下步骤:
创建 nova 用户:
$ openstack user create --password-prompt nova User Password: Repeat User Password: +----------+----------------------------------+ | Field | Value | +----------+----------------------------------+ | email | None | | enabled | True | | id | c6598fe1adb44f89afdf28ebcdab201a | | name | nova | | username | nova | +----------+----------------------------------+
为 nova 用户添加 admin 角色:
$openstack role add --project service --user nova admin +-------+----------------------------------+ | Field | Value | +-------+----------------------------------+ | id | 161f5c2846524270b2125f709e3703d6 | | name | admin | +-------+----------------------------------+
建 nova 服务实体:
$openstack service create --name nova \ --description "OpenStack Compute" compute +-------------+----------------------------------+ | Field | Value | +-------------+----------------------------------+ | description | OpenStack Compute | | enabled | True | | id | 60d30efb58f442f6a9e5ccb90f7b30b7 | | name | nova | | type | compute | +-------------+----------------------------------+
创建计算服务API端点:
openstack endpoint create \ --publicurl http://controller:8774/v2.1/%\(tenant_id\)s \ --internalurl http://controller:8774/v2.1/%\(tenant_id\)s \ --adminurl http://controller:8774/v2.1/%\(tenant_id\)s \ --region RegionOne \ compute +--------------+-----------------------------------------+ | Field | Value | +--------------+-----------------------------------------+ | adminurl | http://controller:8774/v2.1/%(tenant_id)s | | id | 0fe938c9193e4d0e91342c56208ae072 | | internalurl | http://controller:8774/v2.1/%(tenant_id)s | | publicurl | http://controller:8774/v2.1/%(tenant_id)s | | region | RegionOne | | service_id | 60d30efb58f442f6a9e5ccb90f7b30b7 | | service_name | nova | | service_type | compute | +--------------+-----------------------------------------+
在controller节点上安装和配置计算节点组件
[注意]
默认的配置文件根据不同发行版本而不同。有可能需要增加这些部分或是选项,而不是修改现有的部分或是选项。另外,配置文件代码段中的省略号(…)表明这可能是你需要保留的默认配置选项。
1、安装软件包:
安装软件依赖
$yum -y install python-devel openssl-devel python-pip git gcc libxslt-devel mysql-devel postgresql-devel libffi-devel libvirt-devel graphviz sqlite-devel novnc $pip install tox
安装nova
git clone https://github.com/openstack/nova.git cd nova && pip install -r requirements.txt
python setup.py install
运行命令,生成配置文件./etc/nova/nova.conf.sample
tox -egenconfig
创建/etc/nova
mkdir -p /etc/nova
复制./etc/nova/中的配置文件到/etc/nova
cp -rn ./etc/nova/* /etc/nova
进入/etc/nova目录,进行一下操作
cd /etc/nova cp logging_sample.conf logging.conf cp nova.conf.sample nova.conf
2、修改配置文件 /etc/nova/nova.conf 并完成如下操作:
配置数据库的访问:
[database] ... connection = mysql://nova:NOVA_DBPASS@controller/nova
将其中的 NOVA_DBPASS 替换为您之前为 Compute 数据设置的密码。
在 [DEFAULT] 和 [oslo_messaging_rabbit] 部分,配置 RabbitMQ 消息队列的访问:
[DEFAULT] ... rpc_backend = rabbit [oslo_messaging_rabbit] ... rabbit_host = 控制器 rabbit_userid = openstack rabbit_password = RABBIT_PASS
在 [DEFAULT] 和 [keystone_authtoken] 部分,配置身份认证服务的访问:
[DEFAULT] ... auth_strategy = keystone [keystone_authtoken] ... auth_uri = http://控制器:5000 auth_url = http://控制器:35357 auth_plugin = password project_domain_id = default user_domain_id = default project_name = service username = nova password = NOVA_PASS
将其中的 NOVA_PASS 替换为您之前在身份认证服务中为 nova 用户设置的密码。
[注意]
注释掉或移除 [keystone_authtoken]段的任何其它选项.
在 [DEFAULT] 部分,配置 my_ip 选项以使用控制节点上的管理网络接口的 IP 地址:
[DEFAULT] ... my_ip = 10.0.0.11
在 [DEFAULT] 部分,配置 VNC 代理以使用控制节点的管理网络接口的 IP 地址。
[DEFAULT] ... vncserver_listen = 10.0.0.11 vncserver_proxyclient_address = 10.0.0.11
在[glance] 服务字段,配置镜像服务的位置:
[glance] ... host = 控制器
在[oslo_concurrency] 段,配置锁路径:
[oslo_concurrency] ... lock_path = /var/lib/nova/tmp
若没/var/lib/nova/tmp文件夹,则创建,并修改权限
mkdir -p /var/lib/nova/tmp && useradd nova chown nova:nova -R /var/lib/nova/tmp
(可选配置)可以在 [DEFAULT] 段中开启详细日志配置,为后期的故障排除提供帮助:
[DEFAULT] ... verbose = True ... log_file = /var/log/nova/nova.log
若没有/var/log/nova文件夹,则新建并修改器权限
mkdir -p /var/log/nova/ chown -R nova:nova /var/log/nova
同步Compute 数据库:
su -s /bin/sh -c "nova-manage db sync" nova
3、创建启动脚本
新建/usr/lib/systemd/system/nova-api.service文件,写入如下内容
[Unit] Description=OpenStack Nova API Server After=syslog.target network.target [Service] Type=notify NotifyAccess=all TimeoutStartSec=0 Restart=always User=root ExecStart=/usr/bin/nova-api [Install] WantedBy=multi-user.target
新建/usr/lib/systemd/system/nova-cert.service文件,写入如下内容
[Unit] Description=OpenStack Nova Cert Server After=syslog.target network.target [Service] Type=notify NotifyAccess=all TimeoutStartSec=0 Restart=always User=nova ExecStart=/usr/bin/nova-cert [Install] WantedBy=multi-user.target
新建/usr/lib/systemd/system/nova-consoleauth.service文件,写入如下内容
[Unit] Description=OpenStack Nova VNC console auth Server After=syslog.target network.target [Service] Type=notify NotifyAccess=all TimeoutStartSec=0 Restart=always User=nova ExecStart=/usr/bin/nova-consoleauth [Install] WantedBy=multi-user.target
新建/usr/lib/systemd/system/nova-novncproxy.service文件,写入如下内容
[Unit] Description=OpenStack Nova NoVNC Proxy Server After=syslog.target network.target [Service] Type=simple User=nova EnvironmentFile=-/etc/sysconfig/openstack-nova-novncproxy ExecStart=/usr/bin/nova-novncproxy --web /usr/share/novnc/ $OPTIONS [Install] WantedBy=multi-user.target
新建/usr/lib/systemd/system/nova-conductor.service文件,写入如下内容
[Unit] Description=OpenStack Nova NoVNC Proxy Server After=syslog.target network.target [Service] Type=simple User=nova EnvironmentFile=-/etc/sysconfig/openstack-nova-novncproxy ExecStart=/usr/bin/nova-novncproxy --web /usr/share/novnc/ $OPTIONS [Install] WantedBy=multi-user.target
新建/usr/lib/systemd/system/nova-schedular.service文件,写入如下内容
[Unit] Description=OpenStack Nova Scheduler Server After=syslog.target network.target [Service] Type=notify NotifyAccess=all TimeoutStartSec=0 Restart=always User=nova ExecStart=/usr/bin/nova-scheduler [Install] WantedBy=multi-user.target
4、安装完成
启动 Compute 服务并将其设置为随系统启动:
$ systemctl enable nova-api.service nova-cert.service \ nova-consoleauth.service nova-scheduler.service \ nova-conductor.service nova-novncproxy.service $ systemctl start nova-api.service nova-cert.service \ nova-consoleauth.service nova-scheduler.service \ nova-conductor.service nova-novncproxy.service