安装和配置 Compute Service(计算服务)

使用 OpenStack 计算服务托管和管理云计算系统。OpenStack 计算服务是基础架构即服务(IaaS)系统的重要组成部分。
先决条件
1. 创建数据库,完成下列步骤:
A. 使用数据库命令行客户端,以 root 身份登录数据库服务器。

# mysql -u root -p123456

B. 创建 nova_api,nova 和 nova_cell0 数据库:

MariaDB [(none)]> CREATE DATABASE nova_api;

    MariaDB [(none)]> CREATE DATABASE nova;

    MariaDB [(none)]> CREATE DATABASE nova_cell0;

C. 创建数据库用户 nova,并授予数据库用户 nova 访问 nova_api和 nova 数据库的权限。

MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'localhost' IDENTIFIED BY '123456';

    MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'%' IDENTIFIED BY '123456';

    MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' IDENTIFIED BY '123456';

    MariaDB [(none)]>GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' IDENTIFIED BY '123456';

    MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'localhost' IDENTIFIED BY '123456';

    MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'%' IDENTIFIED BY '123456';

openstack数据库查看密码 openstack 数据库服务_openstack数据库查看密码


openstack数据库查看密码 openstack 数据库服务_API_02


替换 NOVA_DBPASS 为一个合适的密码。

D. 退出数据库

exit

  1. 执行 admin 凭据脚本,以便以 admin 身份执行后续命令:
# . admin-openrc
  1. 创建服务凭据,并完成下列步骤:

A. 创建 nova 用户

# openstack user create --domain default --password-prompt nova

openstack数据库查看密码 openstack 数据库服务_API_03

B. 添加 admin 角色到 nova 用户和 service 项目

# openstack role add --project service --user nova admin

C. 创建 nova 服务实体:

# openstack service create --name nova --description "OpenStack Compute" compute

openstack数据库查看密码 openstack 数据库服务_openstack_04

  1. 创建计算服务的 API 端点:
# openstack endpoint create --region RegionOne compute public http://controller:8774/v2.1

    # openstack endpoint create --region RegionOne compute internal http://controller:8774/v2.1

    # openstack endpoint create --region RegionOne compute admin http://controller:8774/v2.1

openstack数据库查看密码 openstack 数据库服务_openstack_05


openstack数据库查看密码 openstack 数据库服务_openstack数据库查看密码_06


openstack数据库查看密码 openstack 数据库服务_openstack数据库查看密码_07


5. 创建 Placement 服务用户

# openstack user create --domain default --password-prompt placement

openstack数据库查看密码 openstack 数据库服务_openstack_08


6. 将 placement 用户以 admin 角色加入到 service 项目

# openstack role add --project service --user placement admin

openstack数据库查看密码 openstack 数据库服务_数据库_09

  1. 在身份服务的服务目录中,添加 placement 服务。
# openstack service create --name placement --description "Placement API" placement

openstack数据库查看密码 openstack 数据库服务_openstack数据库查看密码_10

  1. 创建 Placement API 服务端点
# openstack endpoint create --region RegionOne placement public http://controller:8778

    # openstack endpoint create --region RegionOne placement internal http://controller:8778

    # openstack endpoint create --region RegionOne placement admin http://controller:8778

openstack数据库查看密码 openstack 数据库服务_mysql_11


openstack数据库查看密码 openstack 数据库服务_数据库_12


openstack数据库查看密码 openstack 数据库服务_数据库_13

  1. 安装软件包
# yum install openstack-nova-api openstack-nova-conductor openstack-nova-console openstack-nova-novncproxy openstack-nova-scheduler openstack-nova-placement-api openstack-nova-compute –y

openstack数据库查看密码 openstack 数据库服务_openstack数据库查看密码_14

  1. 编辑/etc/nova/nova.conf 文件并完成下列操作:

(由于配置的较多,在这里不再给出截图。)

A. 在[DEFAULT]小节,只启用 compute 和 metadata 的 API。

[DEFAULT]
# ...
enabled_apis = osapi_compute,metadata

B. 在[api_database]和[database]小节,配置数据库访问:

[api_database]
# ...
connection = mysql+pymysql://nova:123456@controller/nova_api
[database]
# ...
connection = mysql+pymysql://nova:123456@controller/nova

替换 NOVA_DBPASS 为你的计算服务数据库用户 nova 的密码。
C. 在[DEFAULT]小节配置 RabbitMQ 消息队列访问:

[DEFAULT]
# ...
transport_url = rabbit://openstack:123456@controller

替换 RABBIT_PASS 为 RabbitMQ 用户 openstack 的密码。
D. 在[api]和[keystone_authtoken]小节配置身份服务访问信息:

[api]
# ...
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 = 123456

替换 NOVA_PASS 为身份服务中用户 nova 的密码。
E. 在[DEFAULT]小节,配置 my_ip 配置项为管理节点的管理接口 IP地址。

[DEFAULT]
# ...
my_ip = 192.168.1.104

这里是我的IP地址。

F. 在[DEFAULT]小节,启用支持 neutron 网络服务:

[DEFAULT]
# ...
use_neutron = True
firewall_driver = nova.virt.firewall.NoopFirewallDriver

G. 在[vnc]小节,配置 vnc 代理,使用管理节点的管理接口 IP 地
址:

[vnc]
enabled = true
# ...
vncserver_listen = $my_ip
vncserver_proxyclient_address = $my_ip
novncproxy_base_url = http://controller:6080/vnc_auto.html

H. 在[glance]小节,配置镜像服务 API 的位置:

[glance]
# ...
api_servers = http://controller:9292

I. 在[oslo_concurrency]小节,配置锁路径:

[oslo_concurrency]
# ...
lock_path = /var/lib/nova/tmp

J. 在[placement]小节,配置 placement API 信息:

[placement]
# ...
os_region_name = RegionOne
project_domain_name = Default
project_name = service
auth_type = password
user_domain_name = Default
auth_url = http://controller:35357/v3
username = placement
password = 123456

替换 PLACEMENT_PASS 为身份服务中用户 placement 的密码。
K. 由于软件包 bug,必须将下列配置添加到文件/etc/httpd/conf.d/00-nova-placement-api.conf 中,以启用对 Placement API的访问。

<Directory /usr/bin>
<IfVersion >= 2.4>
Require all granted
</IfVersion>
<IfVersion < 2.4>
Order allow,deny
Allow from all
</IfVersion>
</Directory>

L. 重启 httpd 服务:

# systemctl restart httpd

大家可以通过status命令来查看服务的状态,如图所示:

openstack数据库查看密码 openstack 数据库服务_openstack数据库查看密码_15

  1. 初始化 nova_api 数据库:
# su -s /bin/sh -c "nova-manage api_db sync" nova

openstack数据库查看密码 openstack 数据库服务_mysql_16

  1. 注册 cell0 数据库
# su -s /bin/sh -c "nova-manage cell_v2 map_cell0" nova

openstack数据库查看密码 openstack 数据库服务_mysql_17

  1. 创建 cell1 cell
# su -s /bin/sh -c "nova-manage cell_v2 create_cell --name=cell1 --verbose" nova

openstack数据库查看密码 openstack 数据库服务_openstack_18

  1. 初始化 nova 数据库
# su -s /bin/sh -c "nova-manage db sync" nova

openstack数据库查看密码 openstack 数据库服务_API_19

  1. 验证 nova cell0 和 cell1 已经注册
# nova-manage cell_v2 list_cells

 完成安装
1. 探测你的计算节点是否支持硬件虚拟机化:

# egrep -c '(vmx|svm)' /proc/cpuinfo

如果结果大于或等于 1,则表示你的计算节点支持硬件虚拟化。如果等于 0,则表示不支持,那么你必须配置 libvirt,用 QEMU 代替KVM。
编辑/etc/nova/nova.conf 文件中的[libvirt]小节:

[libvirt]
# ...
virt_type = qemu

openstack数据库查看密码 openstack 数据库服务_openstack_20


2. 启动计算服务并设置开机自动运行:

# systemctl enable openstack-nova-api.service openstack-nova-consoleauth.service openstack-nova-scheduler.service openstack-nova-conductor.service openstack-nova-novncproxy.service libvirtd.service openstack-nova-compute.service

    # systemctl start openstack-nova-api.service openstack-nova-consoleauth.service openstack-nova-scheduler.service openstack-nova-conductor.service openstack-nova-novncproxy.service libvirtd.service openstack-nova-compute.service

openstack数据库查看密码 openstack 数据库服务_API_21

openstack数据库查看密码 openstack 数据库服务_openstack数据库查看密码_22

一定要检查!!

openstack数据库查看密码 openstack 数据库服务_openstack数据库查看密码_23


 验证操作

在管理节点进行下列操作。

1. 执行 admin 凭据脚本,以便以 admin 身份执行后续命令:

# . admin-openrc
  1. 通过列出服务组件,确认每一个进程已经成功启动和注册:
# openstack compute service list

openstack数据库查看密码 openstack 数据库服务_数据库_24

  1. 列出在身份服务中的端点,以验证与身份服务的连接正常:
openstack catalog list

openstack数据库查看密码 openstack 数据库服务_mysql_25

  1. 列出镜像服务中的镜像,以验证与镜像服务连接正常:
openstack image list

openstack数据库查看密码 openstack 数据库服务_openstack_26

  1. 检查 cells 和 Placement API 工作是否正常
nova-status upgrade check

openstack数据库查看密码 openstack 数据库服务_数据库_27