云计算之openstack基础服务之一keystone服务最佳实践

  1. 1.openstack简介

Openstack是一个项目,该项目支持所有类型的云环境的一个开源云计算平台,该项目的目的是为了实现简单,大规模可扩展性,以及丰富功能集,来自世界各地的云计算专家项目作出贡献。Openstack提供了一个基础架构即服务(Iaas)并通过各种配套服务的解决方案,每个服务提供一个应用编程接口来完成整个openstack的结合。

架构图如下:

相关服务介绍:


服务名称


项目名称


描述


Dashboard


Horizon


基于openstackAPI接口使用Django开发的web管理


Compute


Nova


通过虚拟化技术提供计算资源池


Networking


Neutron


实现了虚拟机的网络资源管理


Storage(存储)


Object Storage


Swift


对象存储,适用于“一次写入、多次读取”


Block Storage


Cinder


块存储,提供存储资源池


Share Service(共享服务)


Identity Service


Keystone


认证服务


Image Service


Glance


提供虚拟镜像的注册和存储管理


Telemetry


Ceilometer


提供监控和数据采集、计算服务


Higher-level services(高层服务)


Orchestration


Heat


自动化部署的组件


DatabaseService


Trove


提供数据库应用服务

部署服务示例图如下:

  1. 2.openstack的搭建部署
  2. 2.1部署环境说明
  3. 2.1.1基础实验环境:

软硬件:VMware 12pro  CentOS7.2 ;

两台虚拟机分别作为控制节点和计算节点;

控制节点:2核处理器,4GB内存,50G硬盘

计算节点:1核处理器,2GB内存,50G硬盘

计算节点开启虚拟机化功能以便创建虚拟机。

服务的部署架构图如下:

  1. 2.1.2网络时间协议(NTP)

确保两台主机的时间同步:ntpdatetime1.aliyun.com

  1. 2.1.3两个节点需要安装的包

启用OpenStack库

yum installcentos-release-openstack-newton –y

安装openstack客户端

yum install python-openstackclient  –y

RHEL和 CentOS 默认启用 SELinux 。安装 openstack-selinux 包实现对OpenStack服务的安全策略进行自动管理:

yum install openstack-selinux –y

注意:测试证明,不要升级包,由于更新了一个新的内核会导致后面无法虚拟机创建失败。

  1. 2.2基础服务的部署
  2. 2.2.1基础服务介绍

基础服务:MySQL、RabbitMQ和Memcached

MySQL的使用主要是openstack各个组件存储,生产环境需要做集群;RabbitMQ为分布式消息队列,用于组件之间的通信,支持集群;

RabbitMQ为分布式消息队列,用于组件之间的通信,支持集群,除了Horizon和KeyStone,其它组件需要连接RabbitMQ;

Memcached:各类服务的身份认证机制使用Memcached缓存令牌。缓存服务memecached通常运行在控制节点。在生产部署中,我们推荐联合启用防火墙、认证和加密保证它的安全。

都是部署在控制节点上。

  1. 2.2.2MySQL部署

a软件包安装

yum install -ymariadb mariadb-server python2-PyMySQL

b.创建并编辑/etc/my.cnf.d/openstack.cnf

[mysqld]

bind-address =192.168.56.11

default-storage-engine= innodb

innodb_file_per_table

max_connections =4096

collation-server =utf8_general_ci

character-set-server= utf8

c.完成安装

  • 启动数据库服务,并将配置设置为开机自启

systemctl enablemariadb.service

systemctl startmariadb.service

  • 为了保证数据库服务的安全性,运行``mysql_secure_installation``脚本。特别需要说明的是,为数据库的root用户设置一个适当的密码。

mysql_secure_installation

  1. 2.2.3Rabbitmq部署

a.软件包的安装

yum install -y rabbitmq-server

b.启动消息队列服务并将其配置为随系统启动

systemctl enablerabbitmq-server.service

systemctl startrabbitmq-server.service

c.添加openstack用户

rabbitmqctladd_user openstack openstack(密码)

d.给``openstack``用户配置写和读权限

rabbitmqctlset_permissions openstack ".*" ".*" ".*"

e.启动RabbitMQ_Web插件,管理界面监听15672端口

rabbitmq-pluginsenable rabbitmq_management

2.2.4memcached的部署

a.软件包安装

yum installmemcached python-memcached -y

b.修改配置

vim/etc/sysconfig/memcached

PORT="11211"

USER="memcached"

MAXCONN="1024"

CACHESIZE="64"

OPTIONS="-l192.168.56.11,::1"

c.启动Memcached服务,并且配置它随机启动。

systemctl enablememcached.service

systemctl startmemcached.service

2.3认证服务

2.3.1keystone概况

Keystone包含用户认证和服务目录。

a.用户与认证:用户权限与用户行为跟踪;

User:用户 ,它是用一个数字代表使用openstack云服务的一个人,系统或服务。身份验证服务将会验证传入的由用户声明将调用的请求。

Project(tenant):项目,早期称为租户,它是各个服务中的一些可以访问的资源集合或者说叫资源组,它是一个容器,用于组织和隔离资源,或标示对象。

一个租户可以有多个用户。

一个用户可以属于一个或多个租户

用户对租户和操作权限由租户中担任的角色来决定。

Token:令牌

Role:角色,roles代表一组用户可以访问的资源权限,例如Nova中的虚拟机、glance中的镜像。Users可以被添加到任意一个全局的或项目内的角色中,在全局的role中,用户的role权限作用于所有的租户,即可以对所有的租户执行role规定的权限;在租户内的role中,用户仅能在当前租户内执行role规定的权限。

b服务目录:提供一个服务目录,包含所有服务项目与相关API端点

Service:服务 如Nova、glance、swift根据前三个概念(user,tenant,role)一个服务可以确认当前用户是否具有访问其资源的权限。但是当一个user尝试着访问其租户内的service时,他必须知道这个service是否存在以及如何访问这个service

Endpoint:端点,我们可以理解它是一个服务暴露出来的访问点,如果需要访问一个服务,则必须知道他的endpoint。Endpoint的每个URL都对应一个服务实例的访问地址,并且具有public、private和admin这三种权限。Public URL可以被全局访问,private URL只能被局域网访问,admin URL被从常规的访问中分离。

2.3.2keystone的配置与安装

a.创建相关数据库并授权

create database keystone;

grant all on keystone.* to ‘keystone‘@‘localhost‘ identified by ‘keystone‘;

grant all on keystone.* to ‘keystone‘@‘%‘ identified by ‘keystone‘;

 

b.keystone相关软件包安装

yum install–y openstack-keystone httpd mod_wsgi

c. 编辑文件 /etc/keystone/keystone.conf

[database]#配置数据库访问

connection =mysql+pymysql://keystone:[email protected]/keystone

[memcache]#缓存的连接

servers =192.168.56.11:11211

[token]#配置Fernet UUID令牌的提供者

provider = fernet

driver = memcache

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

su -s /bin/sh -c"keystone-manage db_sync" keystone

验证

mysql -h192.168.56.11 -ukeystone -pkeystone -e "use keystone;show tables;"

e初始化Fernet key

keystone-managefernet_setup --keystone-user keystone --keystone-group keystone

keystone-managecredential_setup --keystone-user keystone --keystone-group keystone

f引导标识服务

keystone-managebootstrap --bootstrap-password admin \

--bootstrap-admin-urlhttp://192.168.56.11:35357/v3/ \

--bootstrap-internal-urlhttp://192.168.56.11:35357/v3/ \

--bootstrap-public-urlhttp://192.168.56.11:5000/v3/ \

--bootstrap-region-idRegionOne

2.3.3配置Apache http服务器

a配置http;配置``ServerName`` 选项为控制节点

vim/etc/httpd/conf/httpd.conf

ServerName192.168.56.11:80

b创建一个链接到``/usr/share/keystone/wsgi-keystone.conf``文件

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

c启动 Apache HTTP 服务并配置其随系统启动

systemctl enablehttpd.service

systemctl starthttpd.service

d配置admin账户

exportOS_USERNAME=admin

exportOS_PASSWORD=admin

exportOS_PROJECT_NAME=admin

exportOS_USER_DOMAIN_NAME=default

exportOS_PROJECT_DOMAIN_NAME=default

exportOS_AUTH_URL=http://192.168.56.11:35357/v3

exportOS_IDENTITY_API_VERSION=3

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

使用一个你添加到你的环境中每个服务包含独有用户的service 项目。创建``service``项目:

openstack projectcreate --domain default \

--description"Service Project" service

常规(非管理)任务应该使用无特权的项目和用户。作为例子,本指南创建demo 项目和用户。

创建``demo`` 项目:

openstack projectcreate --domain default \

--description"Demo Project" demo

创建``demo`` 用户:

openstack usercreate --domain default \

--password-promptdemo

创建 user 角色:

openstack rolecreate user

把demo用户加到demo项目授予user用户

openstack role add--project demo --user demo user

2.3.5验证

a撤销临时环境变量``OS_AUTH_URL``和``OS_PASSWORD``

unset OS_AUTH_URLOS_PASSWORD

 

b作为 admin 用户,请求认证令牌

openstack--os-auth-url http://192.168.56.11:35357/v3 --os-project-domain-name default--os-user-domain-name default --os-project-name admin --os-username admin tokenissue

c作为``demo`` 用户,请求认证令牌

openstack--os-auth-url http://192.168.56.11:5000/v3 --os-project-domain-name default--os-user-domain-name default --os-project-name demo --os-username demo tokenissue

2.3.6创建 OpenStack 客户端环境脚本

创建 admin 和``demo``项目和用户创建客户端环境变量脚本。本实验的接下来的部分会引用这些脚本,为客户端操作加载合适的的凭证。

a.编辑`` admin-openstack ``文件并且增加以下内容

exportOS_PROJECT_DOMAIN_NAME=default

exportOS_USER_DOMAIN_NAME=default

export OS_PROJECT_NAME=admin

exportOS_USERNAME=admin

exportOS_PASSWORD=admin

exportOS_AUTH_URL=http://192.168.56.11:35357/v3

exportOS_IDENTITY_API_VERSION=3

exportOS_IMAGE_API_VERSION=2

b编辑文件 demo-openstack 并添加如下内容

exportOS_PROJECT_DOMAIN_NAME=default

exportOS_USER_DOMAIN_NAME=default

exportOS_PROJECT_NAME=demo

exportOS_USERNAME=demo

exportOS_PASSWORD=demo

exportOS_AUTH_URL=http://192.168.56.11:5000/v3

exportOS_IDENTITY_API_VERSION=3

exportOS_IMAGE_API_VERSION=2

c使用脚本

1)加载``admin-openrc``文件来身份认证服务的环境变量位置和``admin``项目和用户证书

sourceadmin-openstack

2)请求认证令牌:

openstack tokenissue

+------------+----------------------------------------------------------------------------------------------------------------------------------------------+

| Field | Value |

+------------+----------------------------------------------------------------------------------------------------------------------------------------------+

| expires |2016-12-20 06:36:58+00:00 |

| id |gAAAAABYWMN6VL02m9TtQtV0DxmaFtZqWD142fi7ggLdT_bcQXfs395O2T9q- |

| |UElJZPk_5y7QttNNpiaUb7Ant90C1w8Dnm7D7aE8ILD0DLnexqAgJD0HXQYrk9g6ajGq_sZMZixOdwK_yhR7-m3kIlbPeh_qvVtHHY9QjIh2RzkO79wFZ-uTvg|

| project_id |98e702c0165641d5b8833dce373373b2 |

| user_id |37a18975b18f484c8861d2ed4de048cb |

+------------+----------------------------------------------------------------------------------------------------------------------------------------------+

以上图片版权以及内容为赵班长授课以及官网。

时间: 2024-12-24 06:28:05

云计算之openstack基础服务之一keystone服务最佳实践的相关文章

OpenStack基础学习及keystone服务配置

一.openstack基础学习 OpenStack是一个由NASA(美国国家航空航天局)和Rackspace合作研发并发起的,以Apache许可证授权的自由软件和开放源代码项目. OpenStack是一个开源的云计算管理平台项目,由几个主要的组件组合起来完成具体工作.OpenStack支持几乎所有类型的云环境,项目目标是提供实施简单.可大规模扩展.丰富.标准统一的云计算管理平台.OpenStack通过各种互补的服务提供了基础设施即服务(IaaS)的解决方案,每个服务提供API以进行集成. 二.环

基于AWS的云服务架构最佳实践

ZZ from: http://blog.csdn.net/wireless_com/article/details/43305701 近年来,对于打造高度可扩展的应用程序,软件架构师们挖掘了若干相关理念,并以最佳实践的方式加以实施.在今天的"信息时代",这些理念更加适用于不断增长的数据集,不可预知的流量模式,以及快速响应时间的需求.本文将强调并重申其中的一些传统观念,并讨论他们如何在融合云计算的发展,还将讨论由于云计算的动态性而产生的一些前所未有的概念(如弹性). 本文的目标是面向云

Openstack 安装部署指南翻译系列 之 Keystone服务安装(Identity)

OpenStack系统由分开安装的几个关键服务组成.这些服务可根据其他云需求一起工作,包括计算(Compute),身份(Identity),网络(Networking),镜像(Image),块存储(Block Storage),对象存储(Object Storage),计量(Telemetry),编排(Orchestration)和数据库(Database)服务.可以单独安装任何这些项目,并将其配置为独立的或连接的实体. 本节介绍如何在控制器节点上安装和配置OpenStack Identity服

OpenStack 认证服务 KeyStone 服务注册(五)

创建服务实体和API端点 创建服务 openstack service create --name keystone --description "OpenStack Identity" identity 创建endpoint OpenStack使用三个API端点变种代表每种服务:admin,internal和public.默认情况下,管理API端点允许修改用户和租户而公共和内部APIs不允许这些操作.在生产环境中,处于安全原因,变种为了服务不同类型的用户可能驻留在单独的网络上.对实例

云计算之openstack(N版)OpenStack-dashbord可视化服务

2.8OpenStack-dashbord可视化服务部署配置 2.8.1.安装OpenStack-dashbord可视化服务 yum install -yopenstack-dashboard 2.8.2.编辑/etc/openstack-dashboard/local_settings文件,并完成以下操作 配置仪表板使用OpenStack的服务,Keystone认证服务IP地址. OPENSTACK_HOST ="192.168.56.11" 启用认证服务API版本3 OPENSTA

CentOS 7部署OpenStack(2)—安装keystone服务

1.创建数据库 [[email protected] ~]# mysql -u root -p -e "CREATE DATABASEkeystone;" Enter password: [[email protected] ~]# mysql -uroot -p -e "GRANT ALL PRIVILEGES ONkeystone.* TO 'keystone'@'localhost' IDENTIFIED BY 'keystone';" Enter passw

OpenStack主要逻辑模块–Keystone身份验证服务

Keystone作为Openstack的核心模块,为Nova(计算),Glance(镜像),Swift(对象存储),Cinder(块存储),Neutron(网络)以及Horizon(Dashboard)提供认证服务 Keystone基本概念介绍之一 User User即用户,他们代表可以通过keystone进行访问的人或程序.Users通过认证信息(credentials,如密码.API Keys等)进行验证. Tenant Tenant即租户,它是各个服务中的一些可以访问的资源集合.例如,在N

第五十六课 云计算模型 openstack架构、keystone基础及部署

虚拟机及云计算模型介绍 OpenStack  Overview OpenStack  演示架构.Keystone基础及部署 Glance基础原理及部署应用

OpenStack 学习笔记(三):OpenStack keystone服务搭建

--先决条件 1.)创建数据库 MariaDB [(none)]> CREATE DATABASE keystone; Query OK, 1 row affected (0.00 sec) MariaDB [(none)]> GRANT ALL ON keystone.* TO 'keystone'@'%' IDENTIFIED BY 'keystone'; Query OK, 0 rows affected (0.01 sec) MariaDB [(none)]> GRANT ALL