OpenStack 安装 Keystone的过程详解

目录
  • OpenStack 安装 Keystone
    • 1.OpenStack 官网
    • 2.KeyStone 概述
    • 3.安装 OpenStack packages
    • 4.Network Time Protocol (NTP ) (必须)
      • 4.1 安装 chrony
      • 4.2 编辑/etc/chrony.conf
      • 4.3 启动 chrony
      • 4.4 执行同步 chronyc sources -v
      • 4.5 其他nodes 节点也需要安装 chrony
    • 5. 安装 mariadb
      • 5.1 Install the packages: 安装 mariadb 包
      • 5.2 编辑 /etc/my.cnf.d/openstack.cnf
      • 5.3 启动 mariadb 服务
      • 5.4 安全设置向导
    • 6.安装 rabbitmq (本篇可选,由于本篇只是安装keystone)
      • 6.1 安装 rabbitmq-server
      • 6.2 启动
      • 6.3 配置 openstack rabiitmq 用户
      • 6.4 Permit configuration, write, and read access for the openstack user:
    • 7. 安装 Keystone 和 必要配置
      • 7.1 配置 mysql
      • 7.2 安装 keystone 组件
      • 7.3 配置 Apache Http 服务
    • 8.创建域 项目、用户、角色 等
      • 8.1 创建 域
      • 8.2 创建项目
      • 8.3 创建角色 关联用户
    • 9.验证 KeyStone 服务
      • 9.1 验证 admin 用户
      • 9.2 验证 myuser 用户
    • 总结

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 系统

1.Upgrade the packages on all nodes:

yum upgrade

注意:If the upgrade process includes a new kernel, reboot your host to activate it.

2.Install the appropriate OpenStack client for your version.

# yum install python-openstackclient

For CentOS 7 and RHEL 7

# yum install python-openstackclient

For CentOS 8 and RHEL 8

# yum install python3-openstackclient

3.RHEL and CentOS enable SELinuxby default. Install the openstack-selinux package 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 the bind-address key 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

创建 keystone database:

MariaDB [(none)]> CREATE DATABASE keystone;

Grant proper access to the keystone database:

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 我也很无奈。

到此这篇关于OpenStack 安装 Keystone的文章就介绍到这了,更多相关OpenStack 安装 Keystone内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • openstack云计算keystone组件工作流程及服务关系

    目录 一 什么是keystone 二 为何要有keystone 三 keystone的功能 四 keystone概念详解 第一部分 endpoint举例 V3新增的概念: 第二部分 第三部分 五 keystone内包含的组件 六 keystone与openstack其他服务的关系 七 keystone与其他组件协同工作流程 八 keystone工作流程详解 一 什么是keystone keystone是OpenStack的身份服务,暂且可以理解为一个'与权限有关'的组件. 二 为何要有keyst

  • openstack云计算keystone架构源码分析

    目录 keystone架构 Keystone API Router Services (1) Identity Service (2) Resource Service (3) Assignment Service (4) Token Service (5) Catalog Service (6) Policy ServicePolicy Service Backend Driver keystone管理这些概念的方法 keystone-10.0.0代码结构展示 keystone服务启动 key

  • OpenStack Identity(Keystone)身份服务、体系结构与中间件讲解

    OpenStack Identity(Keystone)服务为运行OpenStack Compute上的OpenStack云提供了认证和管理用户.帐号和角色信息服务,并为OpenStack Object Storage提供授权服务. Keystone体系结构 Keystone 有两个主要部件:验证和服务目录 验证:提供了一个基于令牌的验证服务,主要有以下几个概念: 租户(Tenant) 使用OpenStack相关服务的一个组织.一个租户映射到一个Nova的"project-id",在对

  • OpenStack Keystone的基本概念详细介绍

    OpenStack Keystone的基本概念理解 Keystone简介 Keystone(OpenStack Identity Service)是OpenStack框架中,负责身份验证.服务规则和服务令牌的功能, 它实现了OpenStack的Identity API.Keystone类似一个服务总线, 或者说是整个Openstack框架的注册表, 其他服务通过keystone来注册其服务的Endpoint(服务访问的URL),任何服务之间相互的调用, 需要经过Keystone的身份验证, 来获

  • openstack云计算组件keystone部署及操作使用技巧

    目录 一 前言 二 版本信息 三 部署keystone step 1:准备阶段 step 2:部署mariadb step 3:部署keystone step 4:配置web server整合keystone 四 keystone操作 part 1:创建keystone的catalog part 2:创建域,租户,用户,角色,把四个元素关联到一起 part 3:使用Bootstrap完成part1和part2二者的工作 part 4:创建用于后期测试用的项目,用户,租户,建立关联 part 5:

  • OpenStack 安装 Keystone的过程详解

    目录 OpenStack 安装 Keystone 1.OpenStack 官网 2.KeyStone 概述 3.安装 OpenStack packages 4.Network Time Protocol (NTP ) (必须) 4.1 安装 chrony 4.2 编辑/etc/chrony.conf 4.3 启动 chrony 4.4 执行同步 chronyc sources -v 4.5 其他nodes 节点也需要安装 chrony 5. 安装 mariadb 5.1 Install the

  • Redis3.2.11在centos9安装与卸载过程详解

    首先更新yum环境 yum -y update 1.安装gcc环境 yum -y install gcc 2.首先下载redis安装包 cd /home/apps wget http://download.redis.io/releases/redis-3.2.11.tar.gz 3.解压 tar xzvf redis-3.2.11.tar.gz mv redis-3.2.11 /home/software/ 4.编译 cd /home/software/redis-3.2.11 make 5.

  • Win10安装dlib GPU过程详解

    安装cmake,命令: pip install cmake 安装VS 选择C++的桌面开发和python开发 给cl.exe配置环境变量. 我的cl.exe目录是:C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.16.27023\bin\Hostx64\x64. 安装dlib git clone https://github.com/davisking/dlib.git cd dlib

  • Ubuntu 18.04.4安装mysql的过程详解 亲测可用

    1 sudo apt-get update 2 sudo apt-get install mysql-server 3 sudo mysql_secure_installation # 初始化配置 #1 VALIDATE PASSWORD PLUGIN can be used to test passwords... Press y|Y for Yes, any other key for No: N (我的选项) #2 Please set the password for root here

  • Ubuntu 18.04.4安装mysql的过程详解 亲测可用

    下面看下Ubuntu 18.04.4安装mysql的过程,内容如下所示: 1 sudo apt-get update 2 sudo apt-get install mysql-server 3 sudo mysql_secure_installation # 初始化配置 #1 VALIDATE PASSWORD PLUGIN can be used to test passwords... Press y|Y for Yes, any other key for No: N (我的选项) #2

  • Ubuntu 16.04下安装PHP 7过程详解

    前言 最近由于换了硬盘重装了(升级)系统到Ubuntu16.04之后,开发环境也要重新安装,其实16.04源里面默认的PHP版本就是7.x,但是有个问题就是没有OCI扩展,有项目需要使用到Oracle数据库. 准备编译环境 由于全部编译太过于繁琐,而且很多依赖会有问题,所以我们选择另外一种方案,能使用apt-get安装都使用apt-get安装.不能使用apt-get才自己编译,这样可以节省大量的时间.因为有的依赖真的是很头疼. 由于在Ubuntu16.04上,默认的PHP版本就是7.x.由于我们

  • vue.js从安装到搭建过程详解

    最初的时候用vue是直接下载相关文件 按照以前的方法来操作的 后来发现安装好以后似乎用起来更便利,然后就开始琢磨着怎么搭起框架来,下面是过程: 安装 1. 安装nodejs 直接网上找下载就好 2.安装淘宝镜像 打开命令行 输入 npm install -g cnpm --registry= https://registry.npm.taobao.org 3.安装webpack cnpm install webpack -g 4.在你想要新建项目的路径下新建文件夹 用于存放项目文件 cd 进入你

  • CentOS系统下安装Tomcat7的过程详解

    1.检查java版本信息 #java -version java version "1.7.0_65" OpenJDK Runtime Environment (rhel-2.5.1.2.el6_5-x86_64 u65-b17) OpenJDK 64-Bit Server VM (build 24.65-b04, mixed mode) 如果没有则安装,则安装jdk 1.1.(以下方式强烈不建议,因为有时候会缺少jar包,导致tomcat启动不成功): yum -y install

  • Python命令行参数解析工具 docopt 安装和应用过程详解

    什么是 docopt? 1.docopt 是一种 Python 编写的命令行执行脚本的交互语言. 它是一种语言! 它是一种语言! 它是一种语言! 2.使用这种语言可以在自己的脚本中,添加一些规则限制.这样脚本在执行的时候就必须按照这样格式来执行,同时,也可以很方便的编写一些帮助信息(其实很多软件在输入 -h 的时候显示信息 .例如 python -h ,会显示所有的 python 指令,并且页通过 docopt 限制了 python 指令的格式),下面是一些简单的例子: docopt 的安装 d

  • Python sublime安装及配置过程详解

    Sublime Text 3 纯文本编辑器 Package Control(Sublime的包管理器) Sublime Text3中的插件,通过该插件可以向Sublime中安装新的包 Sublime Text 3的安装 下载链接 添加到右侧菜单(傻瓜试安装) Sublime Text 3的设置①Package Control(Sublime的包管理器) 按ctrl+shift+p 出现一个菜单:输入install Package Control 稍微等一下,联网下载的 ② 打开首选项:安装包(C

随机推荐