OpenStack踩坑之路(2)

本文涉及的产品
对象存储 OSS,20GB 3个月
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: OpenStack踩坑之路(2)

OpenStack认证服务搭建


keystone服务概述


OpenStack身份识别服务为管理身份验证,授权和服务目录提供了单点集成。


身份服务通常是用户与之交互的第一个服务。一旦通过身份验证,最终用户就可以使用他们的身份访问其他OpenStack服务。同样,其他OpenStack服务利用身份服务来确保用户是他们所说的人,并发现部署中其他服务的位置。身份识别服务还可以与一些外部用户管理系统(如LDAP)集成。


用户和服务可以通过使用由身份服务管理的服务目录来定位其他服务。顾名思义,服务目录是OpenStack部署中可用服务的集合。每个服务可以有一个或多个端点,每个端点可以是以下三种类型之一:admin,internal或public。在生产环境中,出于安全原因,不同类型的终端类型可能会驻留在暴露给不同类型用户的单独网络中。例如,公共API网络可能从互联网上可见,因此客户可以管理他们的云。管理API网络可能仅限于管理云基础架构的组织中的运营商。内部API网络可能仅限于包含OpenStack服务的主机。另外,OpenStack支持多个区域的可伸缩性。RegionOne地区。在身份服务中创建的区域,服务和端点一起构成部署的服务目录。部署中的每个OpenStack服务都需要一个服务条目,并在Identity服务中存储相应的端点。这可以在Identity Service安装和配置完成后完成。

身份服务包含以下组件:


服务器


集中式服务器使用RESTful接口提供认证和授权服务。


驱动程序


驱动程序或服务后端集成到中央服务器。它们用于访问OpenStack外部的存储库中的身份信息,并且可能已经存在于部署OpenStack的基础架构(例如SQL数据库或LDAP服务器)中。


模块


中间件模块运行在使用Identity服务的OpenStack组件的地址空间中。这些模块拦截服务请求,提取用户凭据并将其发送到中央服务器进行授权。中间件模块和OpenStack组件之间的集成使用Python Web服务器网关接口。


1.创建keystone数据库并进行配置


OpenStack认证服务搭建
keystone服务概述
OpenStack身份识别服务为管理身份验证,授权和服务目录提供了单点集成。
身份服务通常是用户与之交互的第一个服务。一旦通过身份验证,最终用户就可以使用他们的身份访问其他OpenStack服务。同样,其他OpenStack服务利用身份服务来确保用户是他们所说的人,并发现部署中其他服务的位置。身份识别服务还可以与一些外部用户管理系统(如LDAP)集成。
用户和服务可以通过使用由身份服务管理的服务目录来定位其他服务。顾名思义,服务目录是OpenStack部署中可用服务的集合。每个服务可以有一个或多个端点,每个端点可以是以下三种类型之一:admin,internal或public。在生产环境中,出于安全原因,不同类型的终端类型可能会驻留在暴露给不同类型用户的单独网络中。例如,公共API网络可能从互联网上可见,因此客户可以管理他们的云。管理API网络可能仅限于管理云基础架构的组织中的运营商。内部API网络可能仅限于包含OpenStack服务的主机。另外,OpenStack支持多个区域的可伸缩性。RegionOne地区。在身份服务中创建的区域,服务和端点一起构成部署的服务目录。部署中的每个OpenStack服务都需要一个服务条目,并在Identity服务中存储相应的端点。这可以在Identity Service安装和配置完成后完成。
身份服务包含以下组件:
服务
集中式服务器使用RESTful接口提供认证和授权服务。
驱动程序
驱动程序或服务后端集成到中央服务器。它们用于访问OpenStack外部的存储库中的身份信息,并且可能已经存在于部署OpenStack的基础架构(例如SQL数据库或LDAP服务器)中。
模块
中间件模块运行在使用Identity服务的OpenStack组件的地址空间中。这些模块拦截服务请求,提取用户凭据并将其发送到中央服务器进行授权。中间件模块和OpenStack组件之间的集成使用Python Web服务器网关接口。
1.创建keystone数据库并进行配置


640.jpg


2.安装并配置keystone服务


[root@controller/]# yum install openstack-keystone httpd mod_wsgi


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


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

[database]
connection = mysql+pymysql://keystone:keystone@173.168.16.224/keystone


在该[token]部分中,配置Fernet令牌提供程序


[token]
provider =fernet


完整配置如下图所示:


640.png


初始化身份认证服务数据库

[root@controller/]# su -s /bin/sh -c "keystone-manage db_sync" keystone


640.png


注意:这里配置文件的database的格式一定要配置正确,否则会报错或者同步失败


初始化Fernet密钥存储库


[root@controller/]# keystone-manage fernet_setup --keystone-user keystone --keystone-groupkeystone
[root@controller/]# keystone-manage credential_setup --keystone-user keystone --keystone-groupkeystone


创建身份服务api端点

[root@controller/]# keystone-manage bootstrap --bootstrap-password admin --bootstrap-admin-urlhttp://controller:35357/v3/ --bootstrap-internal-url http://controller:5000/v3/--bootstrap-public-url http://controller.5500/v3/ --bootstrap-region-idRegionOne


3.配置Apache HTTP服务器


编辑该/etc/httpd/conf/httpd.conf文件并配置该ServerName选项以引用控制器节点


echo ServerName controller >> /etc/httpd/conf/httpd.conf


为mod_wsgi模块添加配置文件,创建一个软连接到/etc/httpd/conf.d/


ln -s/usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/


4.启动httpd服务且设置开机自启


[root@controller/]# systemctl enable httpd
[root@controller/]# systemctl start httpd


5.配置管理账户


exportOS_USERNAME=admin
exportOS_PASSWORD=admin
exportOS_PROJECT_NAME=admin
exportOS_USER_DOMAIN_NAME=Default
exportOS_PROJECT_DOMAIN_NAME=Default
export OS_AUTH_URL=http://controller:35357/v3
exportOS_IDENTITY_API_VERSION=3


6.创建一个域,项目,用户和角色


身份服务为每个OpenStack服务提供身份验证服务。身份验证服务使用域,项目,用户和角色的组合。


创建服务项目


[root@controller~]# openstack project create --domain default --description "ServiceProject" service


640.png


注意:这里可能会出现‘Missing value auth-url required for auth

pluginpassword’的报错,翻译报错之后尝试重新执行第五步,创建成功

创建demo项目


[root@controller~]# openstack project create --domain default --description "DemoProject" demo


640.png


创建demo用户


[root@controller~]# openstack user create --domain default --password-prompt demo


640.png


创建user角色


[root@controller~]# openstack role create user


640.png


将user角色添加到demo项目和demo用户中


openstackrole add --project demo --user demo user


查看当前项目列表


[root@controller ~]# openstack project list


查看当前用户列表


[root@controller ~]# openstack user list


640.png


7.验证keystone操作


取消设置临时 变量OS_AUTH_URL和OS_PASSWORD环境变量


[root@controller~]# unset OS_AUTH_URL OS_PASSWORD
作为admin用户,请求身份验证令牌
[root@controller~]# openstack --os-auth-url http://controller:35357/v3 \
> --os-project-domain-name Default--os-user-domain-name Default \
> --os-project-name admin --os-username admintoken issue


640.jpg


作为demo用户,请求身份验证令牌


[root@controller~]# openstack --os-auth-url http://controller:5000/v3 \
> --os-project-domain-name Default--os-user-domain-name Default \
> --os-project-name demo --os-username demotoken issue


640.jpg


8.创建OpenStack客户端环境脚本


创建客户端环境的脚本admin和demo项目和用户


创建并编辑admin-openrc文件并添加以下内容:


640.png


创建并编辑demon-openrc文件并添加以下内容:


640.png


9.使用脚本


要以特定项目和用户身份运行客户端,只需在运行客户端环境脚本之前加载相关的客户端环境脚本即可。例如:


加载admin-openrc文件以使用Identity服务的位置以及admin项目和用户凭据填充环境变量:


[root@controller~]# . admin-openrc


请求身份验证令牌:


[root@controller~]# openstack token issue


640.jpg


至此OpenStack的keystone服务搭建完成


OpenStack图像服务搭建


glance服务概述


Image服务(glance)使用户能够发现,注册和检索虚拟机映像。它提供了一个 REST API,使您可以查询虚拟机图像元数据并检索实际图像。您可以将通过映像服务提供的虚拟机映像存储在各种位置,从简单的文件系统到对象存储系统(如OpenStack对象存储)。


OpenStack Image服务是基础架构即服务(IaaS)的核心。它接受磁盘或服务器映像的API请求,以及来自最终用户或OpenStack Compute组件的元数据定义。它还支持在各种存储库类型(包括OpenStack对象存储)上存储磁盘或服务器映像。

许多定期进程在OpenStack Image服务上运行以支持缓存。复制服务通过集群确保一致性和可用性。其他定期流程包括审计员,更新者和收割者。


OpenStack Image服务包含以下组件:


glance-api


接受图像API调用以进行图像发现,检索和存储。


glance-registry


存储,处理和检索有关图像的元数据。元数据包括大小和类型等项目。


数据库


存储图像元数据,您可以根据自己的喜好选择数据库。大多数部署使用MySQL或SQLite。


图像文件的存储库


支持各种存储库类型,包括常规文件系统(或安装在glance-api控制器节点上的任何文件系统),Object Storage,RADOS块设备,VMware数据存储和HTTP。请注意,某些存储库仅支持只读用法。


元数据定义服务


用于供应商,管理员,服务和用户的通用API来有意义地定义他们自己的定制元数据。此元数据可用于不同类型的资源,如图像,工件,卷,风味和聚合。定义包括新属性的关键字,描述,约束和它可以关联的资源类型。


1.创建glance数据库并授权


进入数据库


[root@controller ~]# mysql -uroot -p


创建glance数据库


MariaDB [(none)]> create database glance;


创建glance数据库授权用户


MariaDB[(none)]> grant all privileges on glance.* to 'glance'@'localhost'identified by 'glance';
MariaDB[(none)]> grant all privileges on glance.* to 'glance'@'%' identified by'glance';


640.jpg


2.创建glance用户和服务


加载环境变量


[root@controller ~]# . admin-openrc


创建glance用户


[root@controller~]# openstack
create--domain default --password-prompt glance


640.png


将admin角色添加到glance用户和service项目中


[root@controller ~]# openstack role add --project service --user glanceadmin


创建glance服务实体


[root@controller ~]# openstack service create --name glance--description "OpenStack Image" image


640.png


3.创建图像服务api端点


[root@controller~]# openstack endpoint create --region RegionOne image public http://controller:9292
[root@controller~]# openstack endpoint create --region RegionOne image internal http://controller:9292
[root@controller~]# openstack endpoint create --region RegionOne image admin http://controller:9292


图片4.安装和配置glance部件


安装软件包


[root@controller ~]# yum install openstack-glance


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


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


[database]
connection = mysql+pymysql://glance:glance@173.168.16.224/glance


在[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 = glance  
password = glance
[paste_deploy]
flavor = keystone



在该[glance_store]部分中,配置本地文件系统存储和映像文件的位置


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


完整配置如下图所示:


640.jpg


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


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


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


在[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_nam = default  
project_name= service  
username = glance  
password = glance
[paste_deploy]
flavor = keystone


完整配置如下图所示:


图片


5.初始化glance数据库


[root@controller~]# su -s /bin/sh -c "glance-manage db_sync" glance    //忽略输出的任何信息


验证是否同步成功


[root@controller ~]# mysql -uglance -pglance -e "use glance;showtables;"|wc -l


640.png


6.启动映像服务并将其配置为在系统引导时启动


[root@controller~]# systemctl enable openstack-glance-api openstack-glance-registry
[root@controller~]# systemctl start openstack-glance-api openstack-glance-registry


7.验证glance服务


使用 CirrOS 镜像确认镜像服务是否安装正常。CirrOS 是一个小型Linux 镜像,可以用来测试你的 OpenStack 环境。


加载环境变量


[root@controller ~]# . admin-openrc


下载源镜像


[root@controller ~]# wget http://download.cirros-cloud.net/0.3.4/cirros-0.3.4-x86_64-disk.img


上传镜像文件到镜像服务,使用 QCOW2 磁盘格式,bare 容器格式,添加公共可见选项,使所有项目可以访问该镜像


[root@controller ~]# openstack image create "cirros" --filecirros-0.3.4-x86_64-disk.img --disk-format qcow2 --container-format bare --public

640.jpg


注意:这里我一直报500http内部错误,后来从谷歌上看到有人和我有一样的报错,原来是hosts文件里controller少了一个’l’


查看镜像列表


[root@controller~]# openstack image list

640.png


至此glance服务搭建完成

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
Windows
修改Windows服务的配置
修改Windows服务的配置
|
存储 消息中间件 数据库
云计算|OpenStack|社区版OpenStack安装部署文档(八--- 存储服务cinder的安装部署---Rocky版)
云计算|OpenStack|社区版OpenStack安装部署文档(八--- 存储服务cinder的安装部署---Rocky版)
535 0
|
关系型数据库 MySQL Linux
Navicat15连接本地虚拟机的Mysql(Centos7)
Navicat15连接本地虚拟机的Mysql(Centos7)
964 0
Navicat15连接本地虚拟机的Mysql(Centos7)
|
9月前
|
安全 搜索推荐 数据挖掘
虾皮店铺商品API接口的开发、运用与收益
虾皮(Shopee)作为东南亚领先的电商平台,通过开放API接口为商家和开发者提供了全面的数据支持。本文详细介绍虾皮店铺商品API的开发与运用,涵盖注册认证、API文档解读、请求参数设置、签名生成、HTTP请求发送及响应解析等步骤,并提供Python代码示例。API接口广泛应用于电商导购、价格比较、商品推荐、数据分析等场景,带来提升用户体验、增加流量、提高运营效率等收益。开发者需注意API密钥安全、请求频率控制及遵守使用规则,确保接口稳定可靠。虾皮API推动了电商行业的创新与发展。
533 31
|
10月前
|
存储 人工智能 数据库
Codel:AI代理工具,支持在终端、浏览器、编辑器执行复杂任务和项目
Codel是一款全自主AI代理工具,支持在终端、浏览器和编辑器中执行复杂任务和项目。它运行在沙盒化的Docker环境中,具备自主操作能力,内置浏览器和文本编辑器,所有操作记录存储于PostgreSQL数据库。Codel能够自动完成复杂任务,如创建项目结构、进行网络搜索等,适用于自动化编程、研究与开发、教育与培训以及数据科学与分析等多个领域。
283 11
Codel:AI代理工具,支持在终端、浏览器、编辑器执行复杂任务和项目
|
11月前
|
负载均衡 监控 Dubbo
Dubbo 实现原理详解,一文吃透!
本文深入解析Dubbo的底层实现原理,涵盖远程方法调用、智能容错和负载均衡、服务注册和发现三大核心功能,详解其架构设计和调用流程。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
Dubbo 实现原理详解,一文吃透!
|
存储 API 持续交付
OpenStack组件Keystone
【8月更文挑战第20天】
275 3
|
存储 负载均衡 API
OpenStack核心组件Keystone
【8月更文挑战第3天】
812 8
|
存储 NoSQL Cloud Native
数据库技术前沿:探索、挑战与未来趋势
一、引言 数据库技术作为信息技术领域的核心,随着数字化和智能化的发展,正经历着前所未有的变革
|
开发工具 数据安全/隐私保护
The request you have made requires authentication. (HTTP 401)
The request you have made requires authentication. (HTTP 401)
1638 0
The request you have made requires authentication. (HTTP 401)