OpenStack踩坑之路(2)

本文涉及的产品
对象存储 OSS,20GB 3个月
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
对象存储 OSS,恶意文件检测 1000次 1年
简介: 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服务搭建完成

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
消息中间件 机器学习/深度学习 关系型数据库
|
10月前
|
存储 Kubernetes 负载均衡
k8s学习之路【01.安装】
k8s学习之路【01.安装】
|
设计模式 JSON 前端开发
我的开源项目与开源经历分享
一位93年的前端开发者从一个开源门外汉变成了一个开源发起者,项目已经1K+ Star,分享一下自己的开源项目和开源历程,供大家参考。
|
Cloud Native 开发者
云原生应用插件扩展训练营上线,帮你开始开源社区贡献者之旅!
阿里云开发者学堂联合云原生开发平台推出了云原生应用插件扩展训练营,帮你开始开源社区贡献者之旅!
云原生应用插件扩展训练营上线,帮你开始开源社区贡献者之旅!
|
Arthas Kubernetes Cloud Native
开源小白到核心开发——我与 sealer 的成长故事
下面将以作者本人与 sealer 的一段成长故事来带领大家体验从小白到核心功能开发者的开源之旅,同时本文也作为一篇引领开源小白入门的文章供大家参考。
开源小白到核心开发——我与 sealer 的成长故事
|
消息中间件 Prometheus 监控
从零开始搭建创业公司全新技术栈
从零开始搭建创业公司全新技术栈
209 0
从零开始搭建创业公司全新技术栈
|
存储 安全 Shell
OpenStack踩坑之路(4)
OpenStack踩坑之路(4)
OpenStack踩坑之路(4)
|
存储 消息中间件 缓存
OpenStack踩坑之路(1)
OpenStack踩坑之路(1)
OpenStack踩坑之路(1)
|
消息中间件 SQL 移动开发
|
JSON Kubernetes Cloud Native
阿里巴巴DevOps实践指南(九)| 本地开发
开发一个需求,需要先进行代码的编写和个人验证,验证功能符合预期之后,再提交代码,并进入到集成环境,进行进一步的验证及验收。而这个编码和验证的过程占据了整个需求交付的大部分时间,因此提高这部分工作的效率就显得至关重要。
阿里巴巴DevOps实践指南(九)| 本地开发