OpenStack云计算(二)镜像和计算

发布时间:2024年01月03日

镜像服务

描述如何在控制节点上安装和配置镜像服务,即 glance。简单来说,这个配置将镜像保存在本地文件系统中。

先决条件

安装和配置镜像服务之前,你必须创建创建一个数据库、服务凭证和API端点。

完成下面的步骤以创建数据库:

用数据库连接客户端以?root?用户连接到数据库服务器:

$?mysql -u root -p

创建?glance?数据库:

CREATE DATABASE glance;

对``glance``数据库授予恰当的权限:设置本地和网络都可以登录

GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' \ ?IDENTIFIED BY 'GLANCE_DBPASS';

退出数据库客户端

exit

创建?glance?用户:prompt可以进行替换任意用户名

openstack user create --domain default --password-prompt glance

添加?admin?角色到?glance?用户和?service?项目上。

$?openstack role add --project service --user glance admin

创建``glance``服务实体

$?openstack service create --name glance \

??--description "OpenStack Image"?image

创建镜像服务的 API 端点:

openstack endpoint create --region RegionOne \

??image public http://controller:9292

查询服务端点

openstack endpoint list

创建镜像服务的 API 端点:通过查询上面的服务端点 将controller 替换为端点

?openstack endpoint create --region RegionOne \

??image public http://controller:9292

$?openstack endpoint create --region RegionOne \

??image internal http://controller:9292

$?openstack endpoint create --region RegionOne \

??image admin http://controller:9292

删除服务端点

openstack endpoint delete 服务端点id

安全并配置组件

#?yum install openstack-glance

编辑文件?/etc/glance/glance-api.conf?并完成如下动作:

在?[database]?部分,配置数据库访问:

[database]
...
connection?=?mysql+pymysql://glance:GLANCE_DBPASS@controller/glance

将``GLANCE_DBPASS`` 替换为你为镜像服务选择的密码。?controller改为服务端点

?[keystone_authtoken]?和?[paste_deploy]?部分,配置认证服务访问:?controller改为服务端点

?GLANCE_PASS?替换为你为认证服务中你为?glance?用户选择的密码。

[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?=?glance
password?=?GLANCE_PASS

[paste_deploy]
...
flavor?=?keystone

?[glance_store]?部分,配置本地文件系统存储和镜像文件位置:

[glance_store]
...
stores?=?file,http
default_store?=?file
filesystem_store_datadir?=?/var/lib/glance/images/

编辑文件?``/etc/glance/glance-registry.conf``并完成如下动作:

在?[database]?部分,配置数据库访问:

[database]
...
connection?=?mysql+pymysql://glance:GLANCE_DBPASS@controller/glance

将``GLANCE_DBPASS`` 替换为你为镜像服务选择的密码。

在?[keystone_authtoken]?和?[paste_deploy]?部分,配置认证服务访问:

[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?=?glancepassword?=?GLANCE_PASS

[paste_deploy]
...
flavor?=?keystone

?GLANCE_PASS?替换为你为认证服务中你为?glance?用户选择的密码。

写入镜像服务数据库:将镜像表格导入数据库

#?su -s /bin/sh -c "glance-manage db_sync"?glance

完成安装?

启动镜像服务、配置他们随机启动:

#?systemctl enable?openstack-glance-api.service \

??openstack-glance-registry.service

#?systemctl start openstack-glance-api.service \

??openstack-glance-registry.service

验证操作

在控制节点上执行这些命令。

下载源镜像:

$?wget http://download.cirros-cloud.net/0.3.4/cirros-0.3.4-x86_64-disk.img

查看镜像列表

openstack image list 或

glance image list

使用?QCOW2?磁盘格式,?bare?容器格式上传镜像到镜像服务并设置公共可见,这样所有的项目都可以访问它:

创建镜像名 ?/ ?镜像来自哪个文件 ?/ ?镜像格式和镜像类型 ?/ ?公共镜像

$?openstack image create "cirros"?\

??--file /root/openstack-ocata cirros-0.3.4-x86_64-disk.img \

??--disk-format qcow2 --container-format bare \

??--public

删除镜像名称

Openstack image delete 镜像id

Nova-计算服务

Nova是OpenStack最核心的服务,负责维护和管理云环境的计算资源。OpenStack 作为laaS的云操作系统,虚拟机生命期管理也就是通过 Nova 来实现的。用途与功能:

  1. 实例生命周期管理
  2. 管理计算资源
  3. 网络和认证管理
  4. REST 风格的 API
  5. 异步的一致性通信
  6. 虚拟化环境:XenServer/XCP、KVM、UML、VMware vSphere和Hyper-V

nova-api是整个Nova组件的门户,接收和响应客户酌API调用。所有对Nova的请求都首先由nova-api处理。nova-api外界暴露若干HTTP REST API接口在keystone中我们可以查询nova-api的endponits

客户端就可以将请求发送到endponits指定的地址,向nova-api请求操作。当然,作为最终用户的我们不会直接发送Rest AP 1请求。OpenStack CLI , Dashboard和其他需要跟Nova交换的组件会使用这些API。

Nova-api对接收到的HTTP API请求会做如下处理:

  1. 检查客户端传入的参数是否合法有效

2.调用Nova其他子服务的处理客户端HTTP请求

3.格式化 Nova 其他子服务返回的结果并返回给客户端

nova-scheduler:虚机调度服务,负责决定在哪个计算节点上运行虚机。创建Instance时,用户会提出资源需求,例如CPU、内存、磁盘各需要多少。OpenStack将这些需求定义在flavor中,用户只需要指定用哪个flavor就可以了。

可用的 flavor 在 System->Flavors 中管理。

nova-scheduler如何实现调度

在/ etc /新星nova.conf中,nova通过司机= filter_scheduler这个参数来配置nova-scheduler。

driver= filter_scheduler

?Filter?scheduler是nova-scheduler默认的调度器调度过程分两步

1,通过过滤器(过滤器)选择满足条件的计算节点(运行nova-compute)

  1. 通过权重计算选择最优(权重值最大)的计算节点创建虚拟机,空闲内存越多,权重越大,instance将被部署当前空闲内存最多的计算节点上

lova允许使用第三方的过滤器,配置 scheduler driver即可 这又一次体现了OpenStack的开放性。scheduler可以使用多个过滤器依次进行过滤,过滤之后的节点再通过计算权重选出最适合的节点。

  • nova-conductor:nova-compute经常需要更新数据库,比如更新和获取虚机的状态。出于安全性和伸缩性的考虑, nova-compute并不会直接访问数据库,而是将这个任务委托给 nova-conductor。

这样做有两个显著好处:

  1. 更高的系统安全性
  2. 更好的系统伸缩性

Nova其他组件

nova-console:用户可以通过多种方式访问虚机的控制台

nova-novncproxy :基于Web 浏览器的VNC 访问

nova-spicehtml5proxy :基于 HTML5 浏览器的 SPICE 访问nova-xvpnvncproxy :基于 Java 客户端的 VNC 访问

nova-consoleauth :负责对访问虚机控制台请求提供Token认证

nova-cert :提供 x509 证书支持

nova流程图

计算服务安装并配置控制节点

描述如何在控制节点上安装和配置 Compute 服务,即 nova。

先决条件?

在安装和配置 Compute 服务前,你必须创建数据库服务的凭据以及 API endpoints。

为了创建数据库,必须完成这些步骤:

用数据库连接客户端以?root?用户连接到数据库服务器:

$?mysql -u root -p

创建?nova_api?novanova证书?数据库:

CREATE DATABASE nova_api;

CREATE DATABASE nova;

CREATE DATABASE nova_cell0;

对数据库进行正确的授权

GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'localhost' \ ?

IDENTIFIED BY 'NOVA_DBPASS';

GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'%' \

?IDENTIFIED BY 'NOVA_DBPASS';

GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' \

?IDENTIFIED BY 'NOVA_DBPASS';

GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' \

?IDENTIFIED BY 'NOVA_DBPASS';

GRANT ALL PRIVILEGES ON ?nova_cell0.* TO 'nova'@'localhost' \

?IDENTIFIED BY 'NOVA_DBPASS';

GRANT ALL PRIVILEGES ON ?nova_cell0.* TO 'nova'@'%' \

?IDENTIFIED BY 'NOVA_DBPASS';

用合适的密码代替?NOVA_DBPASS。

退出数据库客户端。

exit

获得?admin?凭证来获取只有管理员能执行的命令的访问权限:

admin-openrc

要创建服务证书,完成这些步骤:

创建?nova?用户:prompt可以替换成其他的密码

$?openstack user create --domain default \

??--password-prompt nova

?nova?用户添加?admin?角色:

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

创建?nova?服务实体:

$?openstack service create --name nova \

??--description "OpenStack Compute"?compute

创建 Compute 服务 API 端点 :将controller改为端点名称

$?openstack endpoint create --region RegionOne \

??compute public http://controller:8774/v2.1/%\(tenant_id\)s

$?openstack endpoint create --region RegionOne \

??compute internal http://controller:8774/v2.1/%\(tenant_id\)s

$?openstack endpoint create --region RegionOne \

??compute admin http://controller:8774/v2.1/%\(tenant_id\)s

创建一个服务追踪统计服务

openstack user create --domain default --password=placement placement

将placement 设置为admin

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

给placement 创建服务

openstack service create --name placement --description “placement API”?placement

给placement设置服务端点

$?openstack endpoint create --region RegionOne \

??placement?public http://controller:8778

$?openstack endpoint create --region RegionOne \

???placement?internal http://controller:controller:8778

$?openstack endpoint create --region RegionOne \

???placement?admin http://controller:controller:8778

安全并配置组件

安装软件包

#?yum install openstack-nova-api openstack-nova-conductor \

??openstack-nova-console openstack-nova-novncproxy \

??openstack-nova-scheduler?-y

编辑``/etc/nova/nova.conf``文件并完成下面的操作:

在``[DEFAULT]``部分,只启用计算和元数据API:

[DEFAULT]

...

enabled_apis?=?osapi_compute,metadata

在``[api_database]``和``[database]``部分,配置数据库的连接:controller需要替换相应的服务端点

[api_database]

...

connection?=?mysql+pymysql://nova:NOVA_DBPASS@controller/nova_api

[database]

...

connection?=?mysql+pymysql://nova:NOVA_DBPASS@controller/nova

用你为 Compute 数据库选择的密码来代替?NOVA_DBPASS

在 “[DEFAULT]” 和 “[oslo_messaging_rabbit]”部分,配置 “RabbitMQ” 消息队列访问:

[DEFAULT]

...

rpc_backend?=?rabbit

[oslo_messaging_rabbit]

...

rabbit_host?=?controllerrabbit_userid?=?openstackrabbit_password?=?RABBIT_PASS

用你在 “RabbitMQ” 中为 “openstack” 选择的密码替换 “RABBIT_PASS”。controller需要替换相应的服务端点

在 “[DEFAULT]” 和 “[keystone_authtoken]” 部分,配置认证服务访问:

[DEFAULT]
...
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?=?novapassword?=?NOVA_PASS

使用你在身份认证服务中设置的``nova`` 用户的密码替换``NOVA_PASS``。controller需要替换相应的服务端点

?[DEFAULT?部分,配置``my_ip`` 来使用控制节点的管理接口的IP 地址。

[DEFAULT]...my_ip?=?10.0.0.11

?[DEFAULT]?部分,使能 Networking 服务:

[DEFAULT]
...
use_neutron?=?Truefirewall_driver?=?nova.virt.firewall.NoopFirewallDriver

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

[vnc]
...
vncserver_listen?=?$my_ipvncserver_proxyclient_address?=?$my_ip

?[glance]?区域,配置镜像服务 API 的位置:controller需要替换相应的服务端点

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

?[oslo_concurrency]?部分,配置锁路径[placement]中进行配置controller需要替换相应的服务端点

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

[placement]

os_region_name = Regionone

auth_type = password

auth_url = httR://controller:35357/v3

project_name =serviceproject_domain_name = Default

username = placement

password = placement

user_domain_name = Default

同步Compute 数据库:

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

完成安装?

启动 Compute 服务并将其设置为随系统启动:

#?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

安装和配置计算节点

安全并配置组件

安装软件包:

#?yum install openstack-nova-compute

编辑``/etc/nova/nova.conf``文件并完成下面的操作:

在``[DEFAULT]`` 和 [oslo_messaging_rabbit]部分,配置``RabbitMQ``消息队列的连接:controller需要替换相应的服务端点

[DEFAULT]
...
rpc_backend?=?rabbit

[oslo_messaging_rabbit]
...
rabbit_host?=?controller
rabbit_userid?=?openstack
rabbit_password?=?RABBIT_PASS

用你在 “RabbitMQ” 中为 “openstack” 选择的密码替换 “RABBIT_PASS”。

在 “[DEFAULT]” 和 “[keystone_authtoken]” 部分,配置认证服务访问:controller需要替换相应的服务端点

[DEFAULT]
...
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?=?NOVA_PASS

使用你在身份认证服务中设置的``nova`` 用户的密码替换``NOVA_PASS``。

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

[DEFAULT]...my_ip?=?MANAGEMENT_INTERFACE_IP_ADDRESS

将其中的?MANAGEMENT_INTERFACE_IP_ADDRESS?替换为计算节点上的管理网络接口的IP 地址,例如 :ref:`example architecture <overview-example-architectures>`中所示的第一个节点 10.0.0.31 。

在?[DEFAULT]?部分,使能 Networking 服务:

[DEFAULT]...use_neutron?=?Truefirewall_driver?=?nova.virt.firewall.NoopFirewallDriver

在``[vnc]``部分,启用并配置远程控制台访问:

[vnc]
...
enabled?=?True
vncserver_listen?=?0.0.0.0
vncserver_proxyclient_address?=?$my_ip
novncproxy_base_url?=?http://controller:6080/vnc_auto.html

服务器组件监听所有的 IP 地址,而代理组件仅仅监听计算节点管理网络接口的 IP 地址。基本的 URL 指示您可以使用 web 浏览器访问位于该计算节点上实例的远程控制台的位置。

?[glance]?区域,配置镜像服务 API 的位置:

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

在?[oslo_concurrency]?部分,配置锁路径:

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

完成安装

确定您的计算节点是否支持虚拟机的硬件加速。

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

如果这个命令返回了?one?or?greater?的值,那么你的计算节点支持硬件加速且不需要额外的配置。

如果这个命令返回了?zero?值,那么你的计算节点不支持硬件加速。你必须配置?libvirt?来使用 QEMU 去代替 KVM

在?/etc/nova/nova.conf?文件的?[libvirt]?区域做出如下的编辑:

[libvirt]
...
virt_type?=?qemu

启动计算服务及其依赖,并将其配置为随系统自动启动:

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

验证操作

获得?admin?凭证来获取只有管理员能执行的命令的访问权限:

$?. admin-openrc

列出服务组件,以验证是否成功启动并注册了每个进程:

$?openstack compute service list

查看监督着

openstack hypervisor list

检查nova状态

nova-status upgrade check

文章来源:https://blog.csdn.net/wmd13164306712/article/details/135358005
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。