OpenStack踩坑之路(3)(上)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: OpenStack踩坑之路(3)

OpenStack计算服务搭建


nova服务概述


使用OpenStack Compute来托管和管理云计算系统。OpenStack Compute是基础架构即服务(IaaS)系统的重要组成部分。主要模块是用Python实现的。


OpenStack Compute与OpenStack Identity进行交互以进行身份验证; 用于磁盘和服务器映像的OpenStack映像服务; 和用于用户和管理界面的OpenStack Dashboard。图像访问受到项目和用户的限制; 每个项目的限额是有限的(例如,实例的数量)。OpenStack Compute可以在标准硬件上水平扩展,并下载映像以启动实例。


OpenStack Compute包含以下区域及其组件:


nova-api 服务


接受并响应最终用户计算API调用。该服务支持OpenStack Compute API,Amazon EC2 API以及特殊用户执行管理操作的特殊管理API。它执行一些策略并启动大多数编排活动,例如运行实例。


nova-api-metadata 服务


接受来自实例的元数据请求。nova-api-metadata通常在nova-network 安装多主机模式下运行时使用该服务。有关详细信息,请参阅 计算管理员指南中的元数据服务。


nova-compute 服务


通过管理程序API创建和终止虚拟机实例的工作守护程序。例如:


处理相当复杂。基本上,守护进程接受来自队列的动作并执行一系列系统命令,例如启动KVM实例并更新其在数据库中的状态。


用于XenServer / XCP的XenAPI


KVM或QEMU的libvirt


适用于VMware的VMwareAPI


nova-placement-api 服务


跟踪每个提供商的库存和使用情况。有关详情,请参阅Placement API。


nova-scheduler 服务


从队列中获取虚拟机实例请求,并确定它在哪个计算服务器主机上运行。


nova-conductor 模


调解nova-compute服务和数据库之间的交互。它消除了由nova-compute服务直接访问云数据库的情况 。该nova-conductor模块水平缩放。但是,请勿将其部署到nova-compute运行服务的节点上。有关更多信息,请参阅配置选项中的conductor部分 。


nova-consoleauth 守护进程


为控制台代理提供的用户授权令牌。见 nova-novncproxy和nova-xvpvncproxy。此服务必须运行以使控制台代理正常工作。您可以在群集配置中针对单个nova-consoleauth服务运行任一类型的代理。有关信息,请参阅关于nova-consoleauth。


nova-novncproxy 守护进程


提供通过VNC连接访问正在运行的实例的代理。支持基于浏览器的novnc客户端。


nova-spicehtml5proxy 守护进程


提供通过SPICE连接访问正在运行的实例的代理。支持基于浏览器的HTML5客户端。


nova-xvpvncproxy 守护进程


提供通过VNC连接访问正在运行的实例的代理。支持OpenStack特定的Java客户端。


队列


守护进程之间传递消息的中心集线器。通常用RabbitMQ实现 ,也可以用另一个AMQP消息队列实现,例如ZeroMQ。


SQL数据库


存储云基础架构的大部分构建时间和运行时状态,其中包括:


理论上,OpenStack Compute可以支持SQLAlchemy支持的任何数据库。通用数据库是

用于测试和开发工作的SQLite3,MySQL,MariaDB和PostgreSQL。


可用的实例类型


正在使用的实例


可用的网络


项目


A.在控制节点安装nova服务


1.创建数据库并授权


进入数据库


[root@controller ~]# mysql -uroot -p  
创建nova_api数据库
MariaDB [(none)]> CREATE DATABASE nova_api; 
创建nova数据库
MariaDB [(none)]> CREATE DATABASE nova;  
创建nova_ce110数据库
MariaDB [(none)]> CREATE DATABASE nova_cell0; 


640.png


对nova_api数据库进行用户授权
MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_api.*TO 'nova'@'localhost' IDENTIFIED BY 'nova'
MariaDB [mysql]> GRANT ALL PRIVILEGES ON nova_api.*TO 'nova'@'%' IDENTIFIED BY 'nova';
对nova数据库进行用户授权
MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova.* TO'nova'@'localhost' IDENTIFIED BY 'nova'; 
MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova.* TO'nova'@'%' IDENTIFIED BY 'nova';
对nova_ce110数据库进行用户授权
MariaDB [mysql]> GRANT ALL PRIVILEGES ON nova_ce110.*TO 'nova'@'localhost' IDENTIFIED BY 'nova'; 
MariaDB [(none)]> GRANT ALL PRIVILEGES ONnova_ce110.* TO 'nova'@'%' IDENTIFIED BY 'nova';


640.jpg


2.加载环境变量


[root@controller ~]# . admin-openrc


3.创建计算服务凭据


创建nova用户
[root@controller ~]# openstack user create --domaindefault --password-prompt nova   
将admin角色添加到nova用户
[root@controller ~]# openstack role add --projectservice --user nova admin   


640.jpg


创建服务实体


[root@controller ~]# openstack service create --namenova --description "OpenStack Compute" compute 


640.png


4. 创建计算服务API端点


[root@controller ~]# openstack endpoint create --regionRegionOne compute public http://controller:8774/v2.1 
[root@controller ~]# openstack endpoint create --regionRegionOne compute internal http://controller:8774/v2.1
[root@controller ~]# openstack endpoint create --regionRegionOne compute admin http://controller:8774/v2.1


640.jpg


5.创建位置服务用户


[root@controller ~]# openstack user create --domaindefault --password-prompt placement


将位置用户添加到具有管理员角色的服务项目中


[root@controller ~]# openstack role add --projectservice --user placement admin  


640.png


6.在服务目录中创建Placement API条目


[root@controller ~]# openstack service create --nameplacement --description "Placement API" placement


640.png


7.创建Placement API服务端点


[root@controller ~]# openstack endpoint create --regionRegionOne placement public http://controller:8778
[root@controller ~]# openstack endpoint create --regionRegionOne placement internal http://controller:8778
[root@controller ~]# openstack endpoint create --regionRegionOne placement admin http://controller:8778


640.jpg


8.安装并配置nova软件


安装nova相关组件


yum install openstack-nova-api openstack-nova-conductoropenstack-nova-console openstack-nova-novncproxy openstack-nova-scheduleropenstack-nova-placement-api -y  


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


在该[DEFAULT]部分中,仅启用计算API和元数据API:


enable_apis = osapi_compute,metadata


在[api_database]和[database]部分中,配置数据库访问:


[api_database]
connection = mysql+pymysql://nova:nova@controller/nova_api
[database]
connection = mysql+pymysql://nova:nova@controller/nova


在该[DEFAULT]部分中,配置RabbitMQ消息队列访问


transport_url = rabbit://openstack:openstack@controller


在[api]和[keystone_authtoken]部分中,配置身份服务访问


[api]
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


在该[DEFAULT]部分中,将该my_ip选项配置为使用控制器节点的管理接口IP地址:


my_ip = 173.168.16.224


在本[DEFAULT]节中,启用对网络服务的支持:


use_neutron = True
firewall_driver = nova.virt.firewall.NoopFirewallDriver


在本[vnc]节中,将VNC代理配置为使用控制器节点的管理接口IP地址:


[vnc]
enabled = true
vncserver_listen = $my_ip
vncserver_proxyclient_address = $my_ip


在该[glance]部分中,配置ImageService API的位置:


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


在该[oslo_concurrency]部分中,配置锁定路径


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


在该[placement]部分中,配置PlacementAPI:


[placement]
os_region_name = RegionOne
project_domain_name = Default
project_name = service
auth_type = password
user_domain_name = Default
auth_url = http://controller:35357/v3
username = placement
password = placement


完整配置如下图所示:


640.jpg


由于软件包bug,您必须启用对PlacementAPI的访问权限,方法是将以下配置添加到


/etc/httpd/conf.d/00-nova-placement-api.conf:
<Directory /usr/bin>
   <IfVersion>= 2.4>
      Require allgranted
  </IfVersion>
   <IfVersion< 2.4>
      Orderallow,deny
      Allow fromall
  </IfVersion>
</Directory>


配置如下图所示:


640.png


重启httpd服务


[root@controller ~]#systemctl restart httpd


9.初始化nova数据库


初始化nova_api数据库


[root@controller ~]# su -s /bin/sh -c "nova-manageapi_db sync" nova


640.jpg



注册ce110数据库


[root@controller ~]# su -s /bin/sh -c "nova-managecell_v2 map_cell0" nova


创建ce110的单元格


[root@controller ~]# su -s /bin/sh -c "nova-managecell_v2 create_cell --
name=cell1 --verbose" nova


初始化nova数据库,忽略其中的输出信息


[root@controller ~]# su -s /bin/sh -c "nova-managedb sync" nova


640.jpg


验证nova cell0和cell1是否正确注册


[root@controller ~]# nova-manage cell_v2 list_cells

 

640.jpg


启动计算服务并将其配置为在系统引导时启动


[root@controller ~]# systemctl enable openstack-nova-apiopenstack-nova-consoleauth openstack-nova-scheduler openstack-nova-conductoropenstack-nova-novncproxy
[root@controller ~]# systemctl start openstack-nova-apiopenstack-nova-consoleauth openstack-nova-scheduler openstack-nova-conductoropenstack-nova-novncproxy
相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
消息中间件 机器学习/深度学习 关系型数据库
|
5月前
|
搜索推荐 物联网 数据库
技术笔记:X+(xPlus)部署指南
技术笔记:X+(xPlus)部署指南
37 1
|
6月前
|
Kubernetes Cloud Native Go
《Go 简易速速上手小册》第10章:微服务与云原生应用(2024 最新版)(下)
《Go 简易速速上手小册》第10章:微服务与云原生应用(2024 最新版)
159 0
|
6月前
|
Cloud Native 算法 Go
《Go 简易速速上手小册》第10章:微服务与云原生应用(2024 最新版)(上)
《Go 简易速速上手小册》第10章:微服务与云原生应用(2024 最新版)
160 0
|
11月前
|
存储 cobar NoSQL
阿里进阶专用:Mycat权威指南,不怕从零开始,只怕从未启程
如今随着互联网的发展,数据的量级也是成指数式的增长,从GB到TB到PB。对数据的各种操作也是愈发娴熟加的困难,传统的关系性数据库已经无法满足快速查询与插入数据的需求,这个时候NoSQL的出现暂时解决了这一危机。
|
安全 Java Serverless
65w字!阿里分布式开发小册Github新开源!原理实践双飞
我们都知道传统的集中式系统已无法满足当今的互联网三高需求,所以现在的系统架构都是向着分布式系统不断演进。同时,越来越多的企业选择通过云的方式发布和部署应用,这也大大促进了分布式系统的发展。未来将是分布式系统“爆发”的时代。
|
运维 网络安全 数据安全/隐私保护
ansible学习之旅(入门篇)
ansible学习之旅(入门篇)
475 0
|
存储 Kubernetes 负载均衡
k8s学习之路【01.安装】
k8s学习之路【01.安装】
|
存储 SQL NoSQL
MongoDB从基础到实战的学习之路(万字总结值得一看)
🍅程序员小王的博客:程序员小王的博客 🍅 欢迎点赞 👍 收藏 ⭐留言 📝 🍅 如有编辑错误联系作者,如果有比较好的文章欢迎分享给我,我会取其精华去其糟粕 🍅java自学的学习路线:java自学的学习路线
269 0
MongoDB从基础到实战的学习之路(万字总结值得一看)
|
存储 中间件 API
OpenStack踩坑之路(2)
OpenStack踩坑之路(2)
OpenStack踩坑之路(2)
下一篇
无影云桌面