OpenStack云计算(二)镜像和计算
镜像服务
描述如何在控制节点上安装和配置镜像服务,即 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 来实现的。用途与功能:
- 实例生命周期管理
- 管理计算资源
- 网络和认证管理
- REST 风格的 API
- 异步的一致性通信
- 虚拟化环境: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请求会做如下处理:
- 检查客户端传入的参数是否合法有效
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)
- 通过权重计算选择最优(权重值最大)的计算节点创建虚拟机,空闲内存越多,权重越大,instance将被部署当前空闲内存最多的计算节点上
lova允许使用第三方的过滤器,配置 scheduler driver即可 这又一次体现了OpenStack的开放性。scheduler可以使用多个过滤器依次进行过滤,过滤之后的节点再通过计算权重选出最适合的节点。
- nova-conductor:nova-compute经常需要更新数据库,比如更新和获取虚机的状态。出于安全性和伸缩性的考虑, nova-compute并不会直接访问数据库,而是将这个任务委托给 nova-conductor。
这样做有两个显著好处:
- 更高的系统安全性
- 更好的系统伸缩性
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?,nova,nova证书?数据库:
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
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!