OpenStack 安装 Keystone
OpenStack 安装 Keystone
本篇主要记录一下 如何安装 openstack的 第一个组件 keystone 认证授权组件
openstack 版本 我选的是queens 版本

1.OpenStack 官网
看了一下官网 文档还是蛮全的,我采用 centos7 来做实验
https://docs.openstack.org/keystone/queens/install/

2.KeyStone 概述
Keystone 是openstack 体系下面的认证、授权、和 目录服务管理 的一个重要的组件,keystone 通常是我们接触openstack 的第一个组件,它可以管理其他openstack service ,每个服务都可以有一个或者多个endpoints,并且 endpoint 被分为 3种类型: admin 、internal、public, 通过名称我们也能大概知道 就是其他服务所暴露的终端地址 给不通场景使用,public 一般是对外的 internal 一般是服务之间的通信地址,admin 一般管理员操作的地址,并且 endpoint 具有 region 类型,既可以对 endpoint 进行局域划分 ,我们默认使用RegionOne
具体看 https://docs.openstack.org/keystone/queens/install/
3.安装 OpenStack packages
前置 需要准备一个 centos7 系统
Upgrade the packages on all nodes:
yum upgrade
注意:If the upgrade process includes a new kernel, reboot your host to activate it.
Install the appropriate OpenStack client for your version.
For CentOS 7 and RHEL 7
# yum install python-openstackclient
For CentOS 8 and RHEL 8
# yum install python3-openstackclient
RHEL and CentOS enable SELinux by default. Install the
openstack-selinuxpackage to automatically manage security policies for OpenStack services:# yum install openstack-selinux
或者通过手动关闭selnux
4.Network Time Protocol (NTP ) (必须)
openstack 各个组件之间 需要进行频繁的调用,所以他们的 时间一点要保持一致,所以这个 NTP 必须要进行处理
centos7 已经推荐使用 chrony 了 ,我看 openstack 官方文档也是这样操作的
4.1 安装 chrony
yum -y install chrony
4.2 编辑/etc/chrony.conf
#注释 这4个
#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst
#添加阿里云 ntp 服务器
server ntp1.aliyun.com iburst
#允许同步的网段 我的是这个,根据情况自己配置
allow 192.168.56.0/24
4.3 启动 chrony
注意是 chronyd.service
systemctl enable chronyd.service
systemctl start chronyd.service
4.4 执行同步 chronyc sources -v

4.5 其他nodes 节点也需要安装 chrony
nodes 其他节点 直接同步 上面的 controller节点即可
server 192.168.56.30

注意: 由于chrony 使用 udp 端口 123 和 323 ,所以 注意关闭 防火墙,或者把端口打开!
5. 安装 mariadb
由于 keystone 中相关的 services 信息 都需要存储的地方 ,所以 需要安装 mariadb ,不过也支持其他
5.1 Install the packages: 安装 mariadb 包
# yum install mariadb mariadb-server python2-PyMySQL
5.2 编辑 /etc/my.cnf.d/openstack.cnf
Create and edit the /etc/my.cnf.d/openstack.cnf file (backup existing configuration files in /etc/my.cnf.d/ if needed) and complete the following actions:
Create a
[mysqld]section, and set thebind-addresskey to the management IP address of the controller node to enable access by other nodes via the management network. Set additional keys to enable useful options and the UTF-8 character set:[mysqld]
bind-address = 192.168.56.30 default-storage-engine = innodb
innodb_file_per_table = on
max_connections = 4096
collation-server = utf8_general_ci
character-set-server = utf8
注意 在 /etc/my.cnf.d/openstack.cnf 下面进行编辑 然后 bind-address 可以指定为 controller 节点ip
5.3 启动 mariadb 服务
systemctl enable mariadb.service
systemctl start mariadb.service
5.4 安全设置向导
mysql_secure_installation #一步步配置即可

6.安装 rabbitmq (本篇可选,由于本篇只是安装keystone)
OpenStack 使用消息队列来协调服务之间的操作和状态信息。消息队列服务通常在控制器节点上运行。OpenStack支持多种消息队列服务,包括RabbitMQ,Qpid和ZeroMQ。
6.1 安装 rabbitmq-server
yum install rabbitmq-server
6.2 启动
systemctl enable rabbitmq-server.service
systemctl start rabbitmq-server.service
6.3 配置 openstack rabiitmq 用户
rabbitmqctl add_user openstack RABBIT_PASS #注意替换 RABBIT_PASS 密码
6.4 Permit configuration, write, and read access for the openstack user:
rabbitmqctl set_permissions openstack ".*" ".*" ".*"
7. 安装 Keystone 和 必要配置
官网地址:https://docs.openstack.org/keystone/queens/install/index-rdo.html

7.1 配置 mysql
上面已经安装了 mariadb 服务,这里需要开始对它进行配置
Before you install and configure the Identity service, you must create a database.
使用root用户登录 mysql :
$ mysql -u root -p
创建
keystonedatabase:MariaDB [(none)]> CREATE DATABASE keystone;
Grant proper access to the
keystonedatabase:MariaDB [(none)]> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' \
IDENTIFIED BY 'KEYSTONE_DBPASS';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' \
IDENTIFIED BY 'KEYSTONE_DBPASS';
Replace KEYSTONE_DBPASS with a suitable password.

7.2 安装 keystone 组件
7.2.1 安装 keystone
yum install openstack-keystone httpd mod_wsgi
安装过程中的报错:
Error: Package: python2-qpid-proton-0.22.0-1.el7.x86_64 (centos-openstack-queens)
Requires: qpid-proton-c(x86-64) = 0.22.0-1.el7
Available: qpid-proton-c-0.14.0-2.el7.x86_64 (extras)
qpid-proton-c(x86-64) = 0.14.0-2.el7
Available: qpid-proton-c-0.17.0-4.el7.x86_64 (centos-openstack-queens)
qpid-proton-c(x86-64) = 0.17.0-4.el7
Available: qpid-proton-c-0.22.0-1.el7.x86_64 (centos-openstack-queens)
qpid-proton-c(x86-64) = 0.22.0-1.el7
Installing: qpid-proton-c-0.35.0-1.el7.x86_64 (epel)
qpid-proton-c(x86-64) = 0.35.0-1.el7
You could try using --skip-broken to work around the problem
You could try running: rpm -Va --nofiles --nodigest
包冲突导致的兼容错误单独选定需要的版本进行安装即可
`解决方案:yum install -y python2-qpid-proton-0.22.0-1.el7.x86_64
安装完成后 /etc/keyston 就存在了

7.2.2 编辑 /etc/keystone/keystone.conf 连接 mysql
[database]
# ...
connection = mysql+pymysql://keystone:KEYSTONE_DBPASS@controller/keystone
注意 controller 是你的 本机ip 可以配置掉 /etc/hosts中
7.2.3 token provider
[token]
# ...
provider = fernet
7.2.4 同步 keystone db
su -s /bin/sh -c "keystone-manage db_sync" keystone
7.2.5 初始化 fernet key
keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
keystone-manage credential_setup --keystone-user keystone --keystone-group keystone
7.2.6 Bootstrap the Identity service:
注意替换 ADMIN_PASS
keystone-manage bootstrap --bootstrap-password ADMIN_PASS \
--bootstrap-admin-url http://controller:5000/v3/ \
--bootstrap-internal-url http://controller:5000/v3/ \
--bootstrap-public-url http://controller:5000/v3/ \
--bootstrap-region-id RegionOne
7.3 配置 Apache Http 服务
7.3.1 编辑 /etc/httpd/conf/httpd.conf
ServerName controller
7.3.2 创建 ln -s
Create a link to the /usr/share/keystone/wsgi-keystone.conf file:
ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/
7.3.3 启动 httpd
systemctl enable httpd.service
systemctl start httpd.service
7.3.4 暴露账号到环境变量中
为了可以执行 openstack 命令
export OS_USERNAME=admin
export OS_PASSWORD=ADMIN_PASS #这个是上面 keystone-manage bootstrap 指定的
export OS_PROJECT_NAME=admin
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_DOMAIN_NAME=Default
export OS_AUTH_URL=http://controller:5000/v3
export OS_IDENTITY_API_VERSION=3
8.创建域 项目、用户、角色 等
8.1 创建 域
openstack domain create --description "An Example Domain" example
8.2 创建项目
openstack project create --domain default --description "Service Project" myservice
8.3 创建角色 关联用户
#创建 用户
openstack user create --domain default --password ADMIN_PASS myuser
#创建 角色
openstack role create myrole
#为servce 项目指定用户角色
openstack role add --project service --user myuser myrole #为service项目指定用户角色

9.验证 KeyStone 服务
9.1 验证 admin 用户
unset OS_AUTH_URL OS_PASSWORD
openstack --os-auth-url http://controller:5000/v3 --os-project-domain-name Default --os-user-domain-name Default --os-project-name admin --os-username admin token issue

9.2 验证 myuser 用户
openstack --os-auth-url http://controller:5000/v3 \
--os-project-domain-name Default --os-user-domain-name Default \
--os-project-name myservice --os-username myuser token issue

至此 openstack keystone 组件已经安装完成了。。
总结
本篇主要记录一下 openstack queens 版本 keystone 组件的安装过程 被领导催促要学习openstack 我也很无奈。

欢迎大家访问 个人博客 Johnny小屋
OpenStack 安装 Keystone的更多相关文章
- OpenStack:安装Keystone
>安装Keystone1. 安装# apt-get install keystone2. 创建dbcreate database keystone;grant all privileges on ...
- CentOS 7部署OpenStack(二)—安装keystone服务
1.创建数据库 [root@controller ~]# mysql -u root -p [root@controller ~]# CREATE DATABASE keystone; [root@c ...
- OpenStack 安装:keystone服务
在前面的章节里面,我们配置了基本环境,也安装keystone服务,并且创建了keystone的数据库,在这一篇里面,我们说怎么配置keystone. 首先编辑keystone服务,需要修改如下数据 编 ...
- openstack学习-KeyStone安装(二)
一.安装keystone # yum install -y openstack-keystone httpd mod_wsgi memcached python-memcached 二.设置Memca ...
- 003-官网安装openstack之-keystone身份认证服务
以下操作均在控制节点进行 1.控制节点安装keystone服务 概念理解: Keystone是OpenStack框架中,负责身份验证.服务规则和服务令牌的功能, 它实现了OpenStack的Ident ...
- OpenStack Train版-2.安装keystone身份认证服务
安装 keystone 认证 mysql -uroot create database keystone; grant all privileges on keystone.* to 'keyston ...
- 在安装Openstack的keystone认证服务时,出现The request you have made requires authentication. (HTTP 401) (Request-ID: req-f94bebba-f0c5-4a92-85问题的处理
创建openstack的keystone认证服务器报错: The request you have made requires authentication. (HTTP 401) (Reques ...
- OpenStack云计算快速入门之二:OpenStack安装与配置
原文:http://blog.chinaunix.net/uid-22414998-id-3265685.html OpenStack云计算----快速入门(2) 该教程基于Ubuntu12.04版, ...
- OpenStack中Keystone的基本概念理解
原文http://www.kankanews.com/ICkengine/archives/10788.shtml Keystone简介 Keystone(OpenStack Identity Ser ...
随机推荐
- 学习MFS(二)
MooseFS,是一个具备冗余容错功能的分布式网络文件系统,它将数据分别存放在多个物理server或单独disk或partition上,确保一份数据有多个备份副本,对于访问MFS的client或use ...
- hanoi(汉诺塔)递归实现
汉诺塔:汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具.大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘.大梵天命令婆罗门把圆盘从下面开始按大小顺序 ...
- Python函数-导入模块的顺序及原理
引入 当python导入模块,执行import语句时,到底进行了什么操作?按照python的文档,她执行了如下的操作: 第一步,创建一个新的module对象(它可能包含多个module) 第二步,把这 ...
- 在原生CSS中使用变量
本文首发于我的博客 一直以来,CSS作为一种申明式的样式标记语言,很难像如javascript等命令式编程语言一样通过定义和使用变量的方式来维护和追踪某些状态.后来随着scss,less等CSS预处理 ...
- 什么是CSS Modules ?我们为什么需要他们
原文地址:https://css-tricks.com/css-mo...最近我对CSS Modules比较好奇.如果你曾经听说过他们,那么这篇博客正适合你.我们将去探索它的目的和主旨.如果你同样很好 ...
- 《深入理解ES6》笔记—— Promise与异步编程(11)
为什么要异步编程 我们在写前端代码时,经常会对dom做事件处理操作,比如点击.激活焦点.失去焦点等:再比如我们用ajax请求数据,使用回调函数获取返回值.这些都属于异步编程. 也许你已经大概知道Jav ...
- Leetcode1/242/383-HashMap常用方法以及遍历排序方式
HashMap常用方法以及遍历排序方式 常用方法 map.containsKey() map.put() map1.equals(map2) 遍历方式 Iterator<Map.Entry< ...
- css如何实现图片响应式等比例缩放,裁剪
<div class="bg_picWrapper" :style="{backgroundImage:'url('+img+')'}">---- ...
- ZXing Blazor 扫码组件 , ssr/wasm通用
项目介绍 本项目是利用 ZXing 进行封装的 Blazor 组件库 直接调用手机或者桌面电脑摄像头进行扫码 项目截图 项目地址 https://github.com/den ...
- spring-Bean依赖注入-》普通数据类型
1.创建UserDao接口以及UserDaoImpl实现类(接口代码省略) public class UserDaoImpl implements UserDao { private String u ...