OpenStack踩坑之路(3)(上)

本文涉及的产品
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
RDS AI 助手,专业版
RDS DuckDB + QuickBI 企业套餐,8核32GB + QuickBI 专业版
简介: 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
相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
相关文章
|
存储 消息中间件 SQL
Flink 必知必会经典课程8:Flink Connector 详解
关于Flink Connector的详解,本文将通过四部分展开介绍:1. 连接器;2. Source API;3. Sink API;4. Collector的未来发展。
Flink 必知必会经典课程8:Flink Connector 详解
|
缓存 运维 Kubernetes
NVIDIA GPU Operator分析一:NVIDIA驱动安装
背景我们知道,如果在Kubernetes中支持GPU设备调度,需要做如下的工作:节点上安装nvidia驱动节点上安装nvidia-docker集群部署gpu device plugin,用于为调度到该节点的pod分配GPU设备。除此之外,如果你需要监控集群GPU资源使用情况,你可能还需要安装DCCM exporter结合Prometheus输出GPU资源监控信息。要安装和管理这么多的组件,对于运维
6064 0
NVIDIA GPU Operator分析一:NVIDIA驱动安装
|
Kubernetes 搜索推荐 Docker
K8S容器运行时弃用Docker转型Containerd
K8S容器运行时弃用Docker转型Containerd
2875 0
|
Kubernetes 数据安全/隐私保护 Docker
|
消息中间件 机器学习/深度学习 关系型数据库
|
4月前
|
人工智能 运维 API
AI Agent 职业路线全解析:从技能图谱到进阶路径
本文系统解析AI Agent工程师的职业发展路径:从角色定位(系统中心化)、四大核心技能(推理框架、记忆系统、API集成、多Agent协作),到应用层→系统层→基础层的进阶路径,并揭示其作为下一代人机交互入口、工程化溢价载体与认知自动化核心的长期价值。(239字)
803 2
|
运维 应用服务中间件 Linux
自动化运维的利器:Ansible在配置管理中的应用
【10月更文挑战第39天】本文旨在通过深入浅出的方式,向读者展示如何利用Ansible这一强大的自动化工具来优化日常的运维工作。我们将从基础概念讲起,逐步深入到实战操作,不仅涵盖Ansible的核心功能,还会分享一些高级技巧和最佳实践。无论你是初学者还是有经验的运维人员,这篇文章都会为你提供有价值的信息,帮助你提升工作效率。
|
Ubuntu NoSQL Linux
MongoDB安装教程(二进制文件方式安装)—Ubuntu
MongoDB安装教程(二进制文件方式安装)—Ubuntu
888 0
|
Kubernetes 网络协议 Cloud Native
kubernetes networkpolicy网络策略详解
kubernetes networkpolicy网络策略详解
kubernetes networkpolicy网络策略详解