目录

  • 一、OpenStack安装Keystore组件
    • Keystone认证流程
    • 1、OpenStack组件安装的顺序
    • 2、创建数据库实例和数据库用户
    • 3、安装、配置keystone、数据库、Apache
    • 4、创建OpenStack 域、项目、用户和角色
  • 二、总结

一、OpenStack安装Keystore组件

Keystone认证流程

1、OpenStack组件安装的顺序

1、Keystone (apache)
2、glance
3、nova
4、neutron

  • 部署openstack组件时,需先行安装认证服务(keystone),而认证服务是使用Apache运行的,安装完成后才可以创建、管理账号,然后安装镜像服务(glance)、计算服务(nova)、网络服务(neutron)
  • 其中计算服务和网络服务分为管理端和客户端,所以需要在openstack的管理端安装计算服务和网络服务的管理端,在创建虚拟机的node节点上安装计算服务和网络服务的客户端,最后安装dashboard服务,openstack各种组件的API都是通过apache运行的;
  • openstack的管理端负责创建、管理虚拟机过程的调度
  • 通过openstack管理端创建虚拟机的相关数据最终都会记录到mysql(mariadb)中;node节点没有权限往数据库中写数据,只有控制端有权限,并且node节点与控制端通讯是通过rabbitmq间接通讯,node节点会监听rabbitmq,控制端也会监听rabbitmq,控制端把创建虚拟机的指令发送到rabbitmq,由监听rabbitmq指定队列的node节点接收消息并创建虚拟机;

接OpenStack 的部署(一)——基础环境配置继续配置,为openstack安装keystone组件,全部在控制节点上操作

2、创建数据库实例和数据库用户

mysql -u root -p
create database keystone;GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY 'KEYSTONE_DBPASS';
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY 'KEYSTONE_DBPASS';
flush privileges;
exit

3、安装、配置keystone、数据库、Apache

  • 安装keystone、httpd、mod_wsgi

mod_wsgi包的作用是让apache能够代理python程序的组件;openstack的各个组件,包括API都是用python写的,但访问的是apache,apache会把请求转发给python去处理,这些包只安装在controler节点

yum -y install openstack-keystone httpd mod_wsgicp -a /etc/keystone/keystone.conf{,.bak}
grep -Ev "^$|#" /etc/keystone/keystone.conf.bak > /etc/keystone/keystone.conf


通过pymysql模块访问mysql,指定用户名密码、数据库的域名、数据库名
openstack-config --set /etc/keystone/keystone.conf database connection mysql+pymysql://keystone:KEYSTONE_DBPASS@ct/keystone指定token的提供者;提供者就是keystone自己本身
openstack-config --set /etc/keystone/keystone.conf token provider fernet
Fernet:一种安全的消息传递格式


初始化认证服务数据库

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

初始化fernet 密钥存储库

(以下命令会生成两个密钥,生成的密钥放于/etc/keystone/目录下,用于加密数据)

keystone-manage fernet_setup --keystone-user keystone --keystone-group keystonekeystone-manage credential_setup --keystone-user keystone --keystone-group keystone

配置bootstrap身份认证服务

keystone-manage bootstrap --bootstrap-password ADMIN_PASS \
--bootstrap-admin-url http://ct:5000/v3/ \
--bootstrap-internal-url http://ct:5000/v3/ \
--bootstrap-public-url http://ct:5000/v3/ \
--bootstrap-region-id RegionOne

此步骤是初始化openstack,会把openstack的admin用户的信息写入到mysql的user表中,以及url等其他信息写入到mysql的相关表中;
admin-url是管理网(如公有云内部openstack管理网络),用于管理虚拟机的扩容或删除;如果共有网络和管理网是一个网络,则当业务量大时,会造成无法通过openstack的控制端扩容虚拟机,所以需要一个管理网;
internal-url是内部网络,进行数据传输,如虚拟机访问存储和数据库、zookeeper等中间件,这个网络是不能被外网访问的,只能用于企业内部访问
public-url是共有网络,可以给用户访问的(如公有云) #但是此环境没有这些网络,则公用同一个网络
5000端口是keystone提供认证的端口
以下部分指的是openstack多节点的配置
#需要在haproxy服务器上添加一条listen
#各种网络的url需要指定controler节点的域名,一般是haproxy的vip的域名(高可用模式)

配置Apache HTTP服务器

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

创建配置文件,开启服务

安装完mod_wsgi包后,会生成 wsgi-keystone.conf 这个文件,文件中配置了虚拟主机及监听了5000端口,mod_wsgi就是python的网关

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

配置管理员账户的环境变量

这些环境变量用于创建角色和项目使用,但是创建角色和项目需要有认证信息,所以通过环境变量声明用户名和密码等认证信息,欺骗openstack已经登录且通过认证,这样就可以创建项目和角色;也就是把admin用户的验证信息通过声明环境变量的方式传递给openstack进行验证,实现针对openstack的非交互式操作

cat >> ~/.bashrc << EOF
export OS_USERNAME=admin
export OS_PASSWORD=ADMIN_PASS
export OS_PROJECT_NAME=admin
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_DOMAIN_NAME=Default
export OS_AUTH_URL=http://ct:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
EOFsource ~/.bashrc#通过配置环境变量,可以使用openstack命令进行一些操作
openstack user list

4、创建OpenStack 域、项目、用户和角色

创建一个项目(project),创建在指定的domain(域)中,指定描述信息,project名称为service(可使用openstack domain list 查询)

openstack project create --domain default --description "Service Project" service#查看openstack 项目列表
openstack project list

创建角色(可使用openstack role list查看)

openstack role create user

查看openstack 角色列表

openstack role list# admin为管理员
# member为 租户
# user:用户

查看是否可以不指定密码就可以获取到token信息(验证认证服务)

openstack token issue

二、总结

Keystone认证流程

举例:比我们用户需要创建实例
1、登录进入(需要认证)
2、keystone指引到达控制台
3、web界面发出创建实例的请求
4、向nova发出请求(我要创建一台实例)
5、nova分别向glance、neutron发出调用资源的请求
6、nova拿到所需要的的资源后,创建实例,同时将结果返回给user
在每一步,加入keystone认证、授权(token)的过程
用户/组件,持着令牌(token)再去找其他组件

  • Keystone 组件是作为OpenStack 集群中统一认证、授权的模块,其核心功能就是针对于User(用户)、Tenant(租户)、Role(角色)、Token(令牌/凭证)的控制(手工编译部署即围绕此功能展开的)
  • User:使用 openstack 的用户。
  • Tenant:租户,可以理解为一个人、项目或者组织拥有的资源的合集。在一个租户中可以拥有很多个用户,这些用户可以根据权限的划分使用租户中的资源。
  • Role:角色,用于分配操作的权限。角色可以被指定给用户,使得该用户获得角色对应的操作权限。
  • Token:指的是一串比特值或者字符串,用来作为访问资源的记号。Token 中含有可访问资源的范围和有效时间,token 是用户的一种凭证,需要使用正确的用户名和密码向 Keystone 服务申请才能得到 token。

使用手动部署的模式搭建OpenStack——keystone的思路

  • 1、创建数据库实例和数据库用户
  • 2、安装、配置keystone、数据库、Apache
  • 3、创建OpenStack 域、项目、用户和角色

OpenStack 的部署T版(二)——Keystone组件相关推荐

  1. OpenStack的部署T版(六)——Neutron组件

    OpenStack的部署(六)--Neutron组件 一.CT控制节点 1.创建数据库neutron,并进行授权 2.创建用户.服务并赋权 3.注册API到neutron服务,给neutron服务关联 ...

  2. OpenStack的部署T版(五)——Nova组件

    目录 一.Nova计算服务概念 Nova系统架构 二.Nova组件介绍 1.API 2.Scheduler调度器 Nova调度器的类型 过滤器 权重(weight) 3.Compute组件 Compu ...

  3. OpenStack的部署T版(七)——cinder模块

    OpenStack的部署T版(七)--cinder模块 一.创建数据库实例和角色 二.创建用户.修改配置文件 三.在计算节点c2配置Cinder(存储节点) 四.ct节点查看卷列表 一.创建数据库实例 ...

  4. OpenStack的部署T版(八)——Dashboard

    OpenStack的部署T版(八)--Dashboard OpenStack-Dashboard组件部署 重启服务(c1节点) 重启 ct 节点的 memcache 服务 验证操作 OpenStack ...

  5. OpenStack 的部署T版(三)——Glance组件

    目录 一.glance概述 1.镜像服务 2.images API的版本 3.镜像格式 4.镜像文件容器格式 5.镜像状态 6.访问权限 7.Glance架构图 8.Glance 工作流程 二.Ope ...

  6. OpenStack的部署T版(四)——Placement组件

    OpenStack的部署(四)--Placement项目 OpenStack-Placement组件部署 1.创建数据库实例和数据库用户 2.创建Placement服务用户和API的endpoint ...

  7. OpenStack的部署T版(六)——Neutron组件(概念)

    目录 相关概念 一.Neutron网络项目 二.Linux虚拟网络 三.openstack网络基础服务 1.Neutron网络结构 2.网络子网和端口 3.网络拓扑类型 4.网络基本架构 5.Neut ...

  8. OpenStack 的部署T版(一)——基础环境配置

    目录 一.资源规划 二.基础环境配置 1.修改添加NAT网卡配置 2.防火墙.核心防护.主机名 3.配置在线源 4.基础环境依赖包 5.VMnet1网卡配置参数 6.配置映射 7.免交互 8.时间同步 ...

  9. OpenStack的部署T版(九)——控制台部署

    传统公司部署OpenStack(t版)简易介绍(九)--控制台部署 一.创建flat外部网络.创建内部交换网络.创建项目路由 二.上传cirros镜像 三.创建实例类型 四.创建实例.打通内外网 一. ...

最新文章

  1. Flutter开发之实现沉浸式状态栏的效果
  2. ThreadLocal原理机制
  3. quartus仿真系列2:74193功能
  4. linux系统下sed切割日志
  5. linkedin客户开发_10个LinkedIn WordPress插件赢得新客户
  6. vray渲染里服务器信息,Vray使用手册——设置V-Ray渲染服务器
  7. tracert/traceroute原理
  8. eleme接口测试01(C#)
  9. 如何在云服务器上自动运行.py文件
  10. 通过域名解析对应的IP地址
  11. 微信小程序实现朋友圈图片展现形式
  12. STM8 8位基本型定时器 TIM4
  13. 在哪里下载Linux
  14. grub 2.0安装linux,grub2引导安装kali2.0及安装ibus拼音输入法
  15. UPC2020寒假训练第一场
  16. vue put 提交 400 Bad Request(有时候可以提交成功)
  17. JavaFX仿QQ2016
  18. Windows 自动化补丁管理
  19. 龙之气息服务器维护,【龙之气息:从入坑到肝硬化】
  20. PHP 作业2.2 商品价格计算

热门文章

  1. 只会使用 WaitGroup?你应该学习下 ErrGroup!
  2. 【线上分享】如何使用开源SFU构建RTC云服务
  3. ​如何实现简单高效的移动剪辑框架
  4. Twitch 沈悦时:国内外互联网直播生态差异
  5. 官方首次披露,TDSQL十年自主可控之路(附PDF)
  6. 分支管理---创建与合并分支
  7. 简单的combineByKey算子【看完就懂系列】
  8. Error: java.lang.RuntimeException: java.lang.NoSuchMethodException: com.henu.WC $WCMapper.init()
  9. leetcode 665. Non-decreasing Array | 665. 非递减数列(Java)
  10. leetcode 677. Map Sum Pairs | 677. 键值映射(Trie前缀树,BFS)