OpenStack Q版部署-nova

it2023-05-22  74

Q版 nova安装

前言一、简介二、安装1、前提条件2、安装和配置-controller修改配置文件nova.conf00-nova-placement-api.conf 初始化数据库验证: 设置开机自启并启动: 3、安装和配置-compute修改配置文件nova.conf 设置开机自启并启动服务 4、手动添加节点-controller5、服务验证

前言

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服务的组件分为以下几类:

api接口,负责接收请求;scheduler调度,来请求确定实例在哪个物理机上创建;compute 虚拟化,通过虚机化的方式将实例启动;conductor 交互,和数据库进行交互数据;placement 监控,监控计算节点的资源使用情况;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网络服务,部署完这个我们就可以启动实例了,

neutron服务
最新回复(0)