这一部分是关于在controller节点如何安装和配置nova计算服务

一、前提准备

  1、创建数据库,完成以下步骤:

①  作为root用户使用数据库访问客户端连接数据库服务器:

openstack的mysql的密码 openstack数据库_openstack的mysql的密码

②  创建nova_api, nova, nova_cell0 数据库


 

MariaDB [(none)]> CREATE DATABASE nova_api;

MariaDB [(none)]> CREATE DATABASE nova;

MariaDB [(none)]> CREATE DATABASE nova_cell0;

MariaDB [(none)]> CREATE DATABASE placement;

openstack的mysql的密码 openstack数据库_配置文件_02

③  对创建的数据库属于合适的权限:


 


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

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

 

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

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

 

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

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

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

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

openstack的mysql的密码 openstack数据库_数据库_03

openstack的mysql的密码 openstack数据库_配置文件_04

  2、引入admin凭证以获得仅admin可使用的的CLI命令

openstack的mysql的密码 openstack数据库_openstack的mysql的密码_05

  3、创建Compute服务凭证:

①  创建nova用户

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

openstack的mysql的密码 openstack数据库_API_06

②  添加admin角色到nova用户:

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

openstack的mysql的密码 openstack数据库_配置文件_07

③  创建nova服务实体

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

openstack的mysql的密码 openstack数据库_配置文件_08

  4、创建Compute API 服务节点:

①  

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

openstack的mysql的密码 openstack数据库_API_09

②  

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

openstack的mysql的密码 openstack数据库_配置文件_10

③  

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

openstack的mysql的密码 openstack数据库_数据库_11

  5、使用合适的密码创建一个Placement服务

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

openstack的mysql的密码 openstack数据库_配置文件_12

  6、使用admin角色添加Placement用户到service项目

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

openstack的mysql的密码 openstack数据库_配置文件_13

  7、在service目录中创建Placement API条目

# openstack service create --name placement --description "Placement API" placement

openstack的mysql的密码 openstack数据库_openstack的mysql的密码_14

  8、创建Placement API服务端点:

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

openstack的mysql的密码 openstack数据库_openstack的mysql的密码_15

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

openstack的mysql的密码 openstack数据库_配置文件_16

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

openstack的mysql的密码 openstack数据库_配置文件_17

二、安装配置nova组件

  1、安装软件包

# yum install openstack-nova-api openstack-nova-conductor openstack-nova-console openstack-nova-novncproxy openstack-nova-scheduler openstack-nova-placement-api

openstack的mysql的密码 openstack数据库_数据库_18

  2、编辑/etc/nova/nova.conf文件,完成以下部分:

openstack的mysql的密码 openstack数据库_配置文件_19

①  在[DEFAULT]部分,仅启用计算和元数据APIS:

openstack的mysql的密码 openstack数据库_API_20

②  在[api_database]、[placement_database]、[database]部分,配置数据库权限:

openstack的mysql的密码 openstack数据库_openstack的mysql的密码_21

openstack的mysql的密码 openstack数据库_openstack的mysql的密码_22

openstack的mysql的密码 openstack数据库_API_23

③  在[DEFAULT]部分,配置RabbitMQ消息队列权限:

openstack的mysql的密码 openstack数据库_openstack的mysql的密码_24

④  在[api] 和[keystone_authtoken]部分,配置Identity服务权限:

openstack的mysql的密码 openstack数据库_数据库_25

openstack的mysql的密码 openstack数据库_openstack的mysql的密码_26

⑤  在[DEFAULT]部分,配置my_ip选项为controller节点的管理接口IP地址:

openstack的mysql的密码 openstack数据库_openstack的mysql的密码_27

 

⑥  在[DEFAULT]部分,开启Networking服务的支持:

openstack的mysql的密码 openstack数据库_API_28

⑦  在[vnc]部分,配置VNC 代理使用controller节点的管理接口IP地址:

openstack的mysql的密码 openstack数据库_数据库_29

⑧  在[glance]部分,配置Image服务API的位置:

openstack的mysql的密码 openstack数据库_openstack的mysql的密码_30

⑨  在[oslo_concurrency]部分,配置lock path:

openstack的mysql的密码 openstack数据库_数据库_31

⑩  在[placement]部分,配置Placement服务的权限:

openstack的mysql的密码 openstack数据库_配置文件_32

⑪  你必须通过将以下配置添加到/etc/httpd/conf.d/00-nova-placement-api.conf来启用对Placement API的访问

openstack的mysql的密码 openstack数据库_openstack的mysql的密码_33

openstack的mysql的密码 openstack数据库_openstack的mysql的密码_34

⑫  重启httpd服务

openstack的mysql的密码 openstack数据库_配置文件_35

 3、填充nova-api数据库

# su -s /bin/sh -c "nova-manage api_db sync" nova

openstack的mysql的密码 openstack数据库_数据库_36

  4、注册cell0数据库:

# su -s /bin/sh -c "nova-manage cell_v2 map_cell0" nova

openstack的mysql的密码 openstack数据库_API_37

  5、创建cell1 cell:

# su -s /bin/sh -c "nova-manage cell_v2 create_cell --name=cell1 --verbose" nova

openstack的mysql的密码 openstack数据库_配置文件_38

  6、填充nova数据库:

# su -s /bin/sh -c "nova-manage db sync" nova

openstack的mysql的密码 openstack数据库_配置文件_39

  7、验证nova cell0 和 cell1 已经正确的创建:

# su -s /bin/sh -c "nova-manage cell_v2 list_cells" nova

openstack的mysql的密码 openstack数据库_配置文件_40

三、启动Compute服务,配置开机自启动


 

openstack的mysql的密码 openstack数据库_数据库_41

openstack的mysql的密码 openstack数据库_openstack的mysql的密码_42

 

这一部分是关于在compute节点如何安装和配置nova计算服务

  1、安装配置nova组件

# yum -y install openstack-nova-compute

openstack的mysql的密码 openstack数据库_数据库_43

openstack的mysql的密码 openstack数据库_数据库_44

  2、编辑/etc/nova/nova.conf配置文件并完成以下部分

①  在[DEFAULT] 部分,仅启用计算和元数据APIS:

openstack的mysql的密码 openstack数据库_数据库_45

②  在[DEFAULT]部分,配置RabbitMQ消息队列权限:

openstack的mysql的密码 openstack数据库_数据库_46

③  在[api] 和 [keystone_authtoken]部分,配置Identity 服务权限:

openstack的mysql的密码 openstack数据库_配置文件_47

openstack的mysql的密码 openstack数据库_openstack的mysql的密码_48

④  在[DEFAULT]部分,配置my_ip选项:

openstack的mysql的密码 openstack数据库_API_49

⑤  在[DEFAULT]部分,启用网络服务支持

openstack的mysql的密码 openstack数据库_配置文件_50

⑥  在 [vnc]部分,启用、配置远程控制台权限:

openstack的mysql的密码 openstack数据库_数据库_51

⑦  在[glance]部分,配置Image 服务API的位置:

openstack的mysql的密码 openstack数据库_数据库_52

⑧  在 [oslo_concurrency]部分,配置lock_path

openstack的mysql的密码 openstack数据库_配置文件_53

⑨  在[placement]部分,配置Placement的API

openstack的mysql的密码 openstack数据库_API_54

 3、最终确定安装

①  确认是否计算节点支持虚拟机器的硬件加速

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

如果返回0,你的compute node节点不支持虚拟机器的硬件加速,则你必须配置libvirt去使用QEMU去安装KVM

编辑文件/etc/nova/nova.conf 的[libvirt]部分,如下( 返回大于等于的值则跳过这步 )

openstack的mysql的密码 openstack数据库_数据库_55

②  启动Compute服务及其相关性,并将其配置为在系统启动时自动启动:


 

# systemctl enable libvirtd.service openstack-nova-compute.service

# systemctl start libvirtd.service openstack-nova-compute.service

openstack的mysql的密码 openstack数据库_配置文件_56

openstack的mysql的密码 openstack数据库_配置文件_57

以下需要在controller节点上操作

  4、把compute节点加入cell 数据库

①  引入admin凭证以获得仅admin可使用的的CLI命令

openstack的mysql的密码 openstack数据库_数据库_58

  设置适当的时间间隔在控制器节点上运行以注册这些新的计算节点

openstack的mysql的密码 openstack数据库_数据库_59

②  发现compute节点

# su -s /bin/sh -c "nova-manage cell_v2 discover_hosts --verbose" nova

openstack的mysql的密码 openstack数据库_API_60

  5、在controller-ZJB节点上验证

①  #. admin-openrc

openstack的mysql的密码 openstack数据库_openstack的mysql的密码_61

②  #openstack compute service list

openstack的mysql的密码 openstack数据库_数据库_62

③  #openstack catalog list

openstack的mysql的密码 openstack数据库_配置文件_63

 

④  #openstack image list

openstack的mysql的密码 openstack数据库_openstack的mysql的密码_64

 

⑤  #nova-status upgrade check

openstack的mysql的密码 openstack数据库_API_65

 

搭建过程出现placement_API未启动问题尝试解决:

openstack的mysql的密码 openstack数据库_API_66

 

发现问题:

        经过排查发现controller-ZJB节点的nova.conf的placement_database部分未配置数据库权限,遂补上,如下:

openstack的mysql的密码 openstack数据库_openstack的mysql的密码_67

尝试解决问题:

    ① 补上配置

    ② 重新修改配置文件,尝试填充数据库 ( 失败 )

# su -s /bin/sh -c "nova-manage api_db sync" nova

openstack的mysql的密码 openstack数据库_openstack的mysql的密码_68

失败原因:

    由于数据库同步不完善导致无法成功,尝试删除数据库表,重新创建nova的几张表

再次尝试解决问题:

    ① 删除数据库

openstack的mysql的密码 openstack数据库_API_69

    ② 重新创建数据库并授权

openstack的mysql的密码 openstack数据库_配置文件_70

    ③ 完事后再次尝试同步数据库( 依然失败 )

openstack的mysql的密码 openstack数据库_数据库_71

openstack的mysql的密码 openstack数据库_数据库_72

    ④ 劝退,准备恢复未安装nova之前的快照 ( 以后修改配置文件一定要小心 )

最终解决:

推倒重来可算是成功了

openstack的mysql的密码 openstack数据库_openstack的mysql的密码_73