OpenStack Q版部署-nova

前言

OpenStack项目是一个开源云计算平台,支持所有类型的云环境。该项目旨在实现简单的实现,大规模的可伸缩性和丰富的功能。来自世界各地的云计算专家为该项目做出了贡献。

OpenStack通过各种补充服务提供了基础架构即服务(IaaS)解决方案。每个服务都提供一个促进此集成的应用程序编程接口(API)。


一、简介

nova服务就是OpenStack service计算服务,计算服务就是云主机中所有计算服务都是由他进行调用的,
nova服务前期是需要keystone身份验证的,而且计算服务之前需要有glance镜像服务,有了image才可以为它分配计算资源,分配的时候还可以以实例为单位。

nova计算服务的组件:

  • nova-api ,用来响应客户api的调度;
    这里主要是接受客户端请求需要那些计算资源,nova服务将计算资源组成实例并且运行起来。
  • nova-api-metadata ,接受来自实例的元数据请求;
  • nova-compute , 计算服务都是通过虚拟化程序来完成的;
    Xen的api、kvm的api、Vmware的api,通过这些api来兼容Xen的镜像、kvm的镜像、Vmware的镜像。
  • nova-placement-api ,跟踪每一个供应程序的库存和使用情况;
  • nova-scheduler ,从队列中获取虚机请求并且确定在那台计算节点运行;
    当我们把镜像资源和计算资源组成一个实例之后,这个实例运行在那台计算节点上面的,有schedule来进行选择。
  • nova-conductor ,实现和数据库交互;
  • nova-consoleauth ,通过console方式连接实例;
  • nova-novncproxy ,通过vnc方式连接实例;
  • nova-spicehhtml5proxy ,通过html5的方式连接实例;
  • nova-xvpvncproxy ,通过java方式连接实例;
  • The queue ,队列,通过rabbitMQ来实现消息之间的共享;
  • SQL database ,通过mysql数据库,存储云实例构建运行时的状态;
    比如,里面的项目、可用网络、正在使用的实例、可用实例类型,这些信息都是要存储到数据库中去的,这里支持的数据库很多,我们今天的实验使用的是mysql数据库或者是mariadb,这两个都行。

总的来说,nova服务的组件分为以下几类:

  1. api接口,负责接收请求;
  2. scheduler调度,来请求确定实例在哪个物理机上创建;
  3. compute 虚拟化,通过虚机化的方式将实例启动;
  4. conductor 交互,和数据库进行交互数据;
  5. placement 监控,监控计算节点的资源使用情况;
  6. console、vnc、html5、java 连接方式,四种连接实例的方式;

二、安装

在部署nova服务的时候就比较麻烦了,我们需要在controller管理节点和compute计算节点上都进行部署的,不像是glance映像服务知识需要在controller管理节点上部署就可以了,而且修改的配置文件也比glance多很多,但是和neutron比起来又是少很多。

1、前提条件

首先还是创建数据库,创建访问用户并授权,这里我们创建的数据库是三个,

  • nova计算服务、
  • nova-api为计算服务接收api消息存储,
  • cell0,当我们在管理nova里面的资源的时候可以分为多个细胞,cell就是细胞,我们创建的cell0就是第一个,可以有第二个,第三个cell1、cell2。
mysql -u root -p
CREATE DATABASE nova_api;
CREATE DATABASE nova;
CREATE DATABASE nova_cell0;

GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'localhost' IDENTIFIED BY '123';
GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'%' IDENTIFIED BY '123';
    
GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost'  IDENTIFIED BY '123';
GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%'  IDENTIFIED BY '123';

GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'localhost' IDENTIFIED BY '123';
GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'%' IDENTIFIED BY '123';

在这里插入图片描述
创建nova用户并向nova用户添加admin角色:

source admin-openrc 
openstack user create --domain default --password-prompt nova
openstack role add --project service --user nova admin

在这里插入图片描述
创建一个计算服务,服务名叫nova,

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

在这里插入图片描述

创建nova计算服务的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

在这里插入图片描述
创建placement用户并将Placement用户添加admin管理员角色:

openstack user create --domain default --password-prompt placement
openstack role add --project service --user placement admin

在这里插入图片描述
创建一个服务,服务名叫Placement:

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

在这里插入图片描述
创建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

在这里插入图片描述

到现在为止,在keystone上面创建的用户、服务等操作就做完了,接着我们安装服务修改配置文件。

2、安装和配置-controller

安装nova计算服务所需要的软件,

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

在这里插入图片描述

修改配置文件

首先配置下nova组件,

nova.conf
vim /etc/nova/nova.conf 

注意:my_ip这里,写自己的IP地址,别复制我的,切记,切记,切记!!!

[DEFAULT]

enabled_apis = osapi_compute,metadata	
transport_url = rabbit://openstack:123@controller
my_ip = 192.168.144.10
use_neutron = True
firewall_driver = nova.virt.firewall.NoopFirewallDriver
参数解释
osapi_compute,metadata#仅启用计算和元数据的API:
transport_url#配置RabbitMQ消息队列的地址:
my_ip#指定nova服务的IP,就是本机的IP地址:
use_neutron#开启网络配置,一会安装neutron的时候配置,这里使用的是neutron:
firewall_driver#加载一个虚拟防火墙配置;

在这里插入图片描述
配置nova_api的数据库访问链接,

[api_database]

connection = mysql+pymysql://nova:123@controller/nova_api

在这里插入图片描述
配置nova的数据库访问链接,

[database]

connection = mysql+pymysql://nova:123@controller/nova

在这里插入图片描述
验证限制,强制指定为keystone,

[api]

auth_strategy = keystone

在这里插入图片描述
然后将keystone的配置写入,这里注意账号和密码都是nova服务的,

[keystone_authtoken]

auth_url = http://controller:5000/v3
memcached_servers = controller:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = nova
password = 123

在这里插入图片描述
设置VNC访问,配置VNC所监听的地址,

[vnc]

enabled = true
server_listen = $my_ip
server_proxyclient_address = $my_ip

在这里插入图片描述
指定glacne的api,计算节点还是需要使用到镜像的,那么就需要去访问glance了,

[glance]

api_servers = http://controller:9292

在这里插入图片描述
配置lock锁的临时存放目录,

[oslo_concurrency]

lock_path = /var/lib/nova/tmp

在这里插入图片描述
配置Placement相关信息,

[placement]

os_region_name = RegionOne
project_domain_name = Default
project_name = service
auth_type = password
user_domain_name = Default
auth_url = http://controller:5000/v3
username = placement
password = 123

在这里插入图片描述

00-nova-placement-api.conf

由于某些原因我们需要修改一个文件保证placement可以正常访问,

vim /etc/httpd/conf.d/00-nova-placement-api.conf 

这个文件中我们主要是进行一个授权,允许我们去访问他,直接顺序的将下面的内容复制文件中就可以了,

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

在这里插入图片描述

重启下http服务,保证修改正确

systemctl restart httpd

初始化数据库

修改完配置文件之后,我们就可以往创建的数据库中同步数据库了,

su -s /bin/sh -c "nova-manage api_db sync" nova
su -s /bin/sh -c "nova-manage cell_v2 map_cell0" nova
su -s /bin/sh -c "nova-manage cell_v2 create_cell --name=cell1 --verbose" nova
su -s /bin/sh -c "nova-manage db sync" nova

在这里插入图片描述

验证:

我们在controller管理节点上查看所拥有的细胞,就是cell,

nova-manage cell_v2 list_cells

在这里插入图片描述

查看下数据库中情况

mysql -uroot -pXylong_000
show databases;

在这里插入图片描述

use nova
show tables;

在这里插入图片描述

use nova_api
show tables;

在这里插入图片描述

use nova_cell0
show tables;

在这里插入图片描述

设置开机自启并启动:

systemctl enable openstack-nova-api.service   openstack-nova-consoleauth.service openstack-nova-scheduler.service   openstack-nova-conductor.service openstack-nova-novncproxy.service
systemctl start openstack-nova-api.service   openstack-nova-consoleauth.service openstack-nova-scheduler.service   openstack-nova-conductor.service openstack-nova-novncproxy.service
systemctl is-active openstack-nova-api.service   openstack-nova-consoleauth.service openstack-nova-scheduler.service   openstack-nova-conductor.service openstack-nova-novncproxy.service

在这里插入图片描述

3、安装和配置-compute

上面已经将controller节点的nova安装好了,接着我们安装compute节点的nova服务,

首先,安装nova的软件,

yum install openstack-nova-compute

在这里插入图片描述

修改配置文件

nova.conf
vim /etc/nova/nova.conf 

[DEFAULT]

enabled_apis = osapi_compute,metadata
transport_url = rabbit://openstack:123@controller
my_ip = 192.168.144.11
use_neutron = True
firewall_driver = nova.virt.firewall.NoopFirewallDriver
参数解释
osapi_compute,metadata#仅启用计算和元数据的API:
transport_url#配置RabbitMQ消息队列的地址:
my_ip#指定nova服务的IP,就是本机的IP地址:
use_neutron#开启网络配置,一会安装neutron的时候配置,这里使用的是neutron:
firewall_driver#加载一个虚拟防火墙配置;

在这里插入图片描述
验证限制,强制指定为keystone,

[api]

auth_strategy = keystone

在这里插入图片描述
然后将keystone的配置写入,这里注意账号和密码都是nova服务的,

[keystone_authtoken]

auth_url = http://controller:5000/v3
memcached_servers = controller:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = nova
password = 123

在这里插入图片描述
设置VNC访问,配置VNC所监听的地址,

[vnc]

enabled = True
server_listen = 0.0.0.0
server_proxyclient_address = $my_ip
novncproxy_base_url = http://controller:6080/vnc_auto.html

在这里插入图片描述
指定glacne的api,计算节点还是需要使用到镜像的,那么就需要去访问glance了,

[glance]

api_servers = http://controller:9292

在这里插入图片描述

配置lock锁的临时存放目录,

[oslo_concurrency]

lock_path = /var/lib/nova/tmp

在这里插入图片描述

配置Placement相关信息,

[placement]

os_region_name = RegionOne
project_domain_name = Default
project_name = service
auth_type = password
user_domain_name = Default
auth_url = http://controller:5000/v3
username = placement
password = 123

在这里插入图片描述

compute节点是要承载启动虚机的职责的,所以需要开启虚拟化,如果不想开启也是可以配置qemu方式的,我的是虚机已经开启了,

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

在这里插入图片描述

设置开机自启并启动服务

systemctl enable libvirtd.service openstack-nova-compute.service
systemctl start libvirtd.service openstack-nova-compute.service
systemctl is-active libvirtd.service openstack-nova-compute.service

在这里插入图片描述

4、手动添加节点-controller

source admin-openrc 
openstack compute service list --service nova-compute
su -s /bin/sh -c "nova-manage cell_v2 discover_hosts --verbose" nova

在这里插入图片描述
添加新的计算节点时,必须在控制器节点上运行以注册这些新的计算节点。另外,还可以在nova.conf中设置适当的间隔 :

vim /etc/nova/nova.conf 

[scheduler]

discover_hosts_in_cells_interval  =  300

在这里插入图片描述

5、服务验证

列出服务组件以验证每个进程的成功启动和注册:

source admin-openrc 
openstack compute service list

在这里插入图片描述
列出身份服务中的API端点以验证与身份服务的连接性:

openstack catalog list

在这里插入图片描述
列出图像服务中的图像以验证与图像服务的连接性:

openstack image list

在这里插入图片描述
检查单元格和展示位置API是否正常运行:

nova-status upgrade check

在这里插入图片描述

总结:

到现在为止nova计算服务就部署完成了,而且我们也已经验证过了,可以正常使用的,

nova服务可以说是OpenStack中组件最多的服务,因为他是负责实例的启动,所以他也是在面试的时候说起OpenStack的高频问题,

比如,nova服务下面有哪些组件啊?都是叫什么啊?启动一个实例的过程是什么样子的?

接下来我们部署neutron网络服务,部署完这个我们就可以启动实例了,

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值