首页 > 代码库 > 云计算之openstack基础服务之一keystone服务最佳实践
云计算之openstack基础服务之一keystone服务最佳实践
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 | 提供数据库应用服务 |
部署服务示例图如下:
2.openstack的搭建部署
2.1部署环境说明
2.1.1基础实验环境:
软硬件:VMware 12pro CentOS7.2 ;
两台虚拟机分别作为控制节点和计算节点;
控制节点:2核处理器,4GB内存,50G硬盘
计算节点:1核处理器,2GB内存,50G硬盘
计算节点开启虚拟机化功能以便创建虚拟机。
服务的部署架构图如下:
2.1.2网络时间协议(NTP)
确保两台主机的时间同步:ntpdatetime1.aliyun.com
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
注意:测试证明,不要升级包,由于更新了一个新的内核会导致后面无法虚拟机创建失败。
2.2基础服务的部署
2.2.1基础服务介绍
基础服务:MySQL、RabbitMQ和Memcached
MySQL的使用主要是openstack各个组件存储,生产环境需要做集群;RabbitMQ为分布式消息队列,用于组件之间的通信,支持集群;
RabbitMQ为分布式消息队列,用于组件之间的通信,支持集群,除了Horizon和KeyStone,其它组件需要连接RabbitMQ;
Memcached:各类服务的身份认证机制使用Memcached缓存令牌。缓存服务memecached通常运行在控制节点。在生产部署中,我们推荐联合启用防火墙、认证和加密保证它的安全。
都是部署在控制节点上。
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
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:keystone@192.168.56.11/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 |
+------------+----------------------------------------------------------------------------------------------------------------------------------------------+
以上图片版权以及内容为赵班长授课以及官网。
本文出自 “追梦IT男” 博客,请务必保留此出处http://runningyongboy.blog.51cto.com/8234857/1888969
云计算之openstack基础服务之一keystone服务最佳实践