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服务的组件分为以下几类:
- 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网络服务,部署完这个我们就可以启动实例了,