openstack安装(四)keystone服务的安装上

一   认证服务

keystone是一个'授权中心','openstack每个服务'要使用keystone进行'管理认证',需要'在每个服务都配置',表明'支持keystone做认证'

'认证表明:' 是系统上的一个'合法用户',但是'权限不确定'

##############分割线##############

在keystone创建的'用户',我都可以授权,'授权可以访问哪些资源',每一个'服务'都变成了'资源'

服务"=="资源

##############分割线##############

认证--->'合不合法',是不是'有效用户,能不能登陆'-->'qq登陆'

授权--->有没有'权限',登陆之后可以'做什么'

#################分割线

三大功能:'认证管理','授权管理','服务目录'

#################分割线

一个中心化的服务器使用'RESTful 接口'来提供认证和授权服务-->'接口的规范'

keystone服务目录

keystone是openstack'独立的服务'(业务拆分),有自己独立的ip和端口

35357'(admin用户访问)'和5000'(普通用户-->guster)',对外提供是http服务

##########分割线##########

'假设':如果keystone不能'做服务目录'的话,使用nova创建虚拟机,需要'其地址';使用glance服务中镜像,需要知道glance地址,才能使用镜像;

'现实':用户'使用'某个opensatck的服务,需要知道它的地址,但用户'记不住'每个服务的地址,'keystone的作用'体现出来了,'只需要记住'keystone地址就可以了

keystone'提供服务目录'的功能-->只要你来访问我'openstack的某个服务'keystone,我就告诉你它'服务'的地址

openstack部分服务的API 表现形式

'name'  'port'     'Resultful Api'

glance: 9292    http://x.x.x.x:9292

nova:   8774    http://x.x.x.x:8774

neutron:9696    http://x.x.x.x:9696

cinder

swift

keystone的交互过程

openstack各个服务'在创建的时候'就在keystone上做'注册',keystone就有'相关服务的记录信息'('有了每个服务的Resultful Api记录');用户后续使用某个服务'例如:glance',keystone就直接告诉其该服务的api地址

#############类比

keystone有点像'大公司的前台('公司的架构很复杂),前台'keystone'知道就可以,告诉我'运维保障部在哪?''负责人是谁?'

'所有的一切设计源自生活'

keystone的功能

(1)  '认证管理'

(2)  '权限管理'

(3)  '服务目录服务管理'

服务安装小技巧

openstack每个服务'安装的小套路',掌握套路!

############'openstack服务的安装步骤'

1)mysql'创库并授权'-->因为'OpenStack每个服务'都是独立的-->在mysql体现为'一个服务'对应一个'独立的数据库'

2)在keystone上'创建用户',并关联角色('授权');角色就是'一堆权限的集合'

3)openstack的'某服务'在keystone上注册API;如果是nova,注册nova API

4)yum安装'该服务'的软件包

5)'修改'服务的'配置文件'

6)'同步数据库'

7)启动服务

############注意

keystone'不遵守'上面的规则;原因:keystone都没有'基础',其它的服务就无法完成

二   安装keystone服务

--  在配置 OpenStack 身份认证服务前,你必须创建一个'数据库'和'管理员令牌'

--  数据库进行操作

--  (1)用数据库连接客户端以 root 用户连接到数据库服务器

mysql -u root -p

--  (2)创建 keystone 数据库

CREATE DATABASE keystone;

--  (3)对"keystone"数据库授予恰当的权限:

GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' \
  IDENTIFIED BY 'KEYSTONE_DBPASS';

GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' \
  IDENTIFIED BY 'KEYSTONE_DBPASS';

-- 用合适的密码替换 KEYSTONE_DBPASS,退出数据库客户端

继续

-- 生成一个'随机值'在'初始的配置中'作为'管理员的令牌'-->过度的'权限不较大,不安全,keystone启动后,不用了'

keystone不能正常工作之前'没有配置好之前',可以设置一个管理员token,用管理员token实现'上面2)和3)'的操作,用'管理员令牌来实现'

# 产生随即token

openssl rand -hex 10

这里'不用随机数值',用'固定的数值,作为管理员token',上面的'可以不用操作'

wsgi说明

网关协议

http,nginx    php    fastcgi

http,nginx    python wsgi

支持某种语言,需要'安装对应的模块'

安装keystone服务相关的软件包

yum install openstack-keystone httpd mod_wsgi -y

# 全部都是python包

报错解决

Error: Package: python2-oslo-middleware-3.8.1-1.el7.noarch (openstack-mitaka)
           Requires: python-jinja2
Error: Package: python2-pysaml2-3.0.2-2.el7.noarch (openstack-mitaka)
           Requires: python-zope-interface
Error: Package: python-repoze-who-2.1-1.el7.noarch (epel)
           Requires: python-zope-interface

#####################解决策略#####################

'找不到相关的依赖包':https://centos.pkgs.org/

yum install http://mirror.centos.org/centos/7/os/x86_64/Packages/python-jinja2-2.7.2-4.el7.noarch.rpm -y

yum install http://mirror.centos.org/centos/7/os/x86_64/Packages/python-zope-interface-4.0.5-4.el7.x86_64.rpm -y

修改配置文件

'编辑文件' /etc/keystone/keystone.conf 并完成如下动作

配置文件有2000多行-->把'注释(深入研究)'和'空行'过滤

grep -Ev '^$|#' /etc/keystone/keystone.conf 

注意该文件的'权限'--> root keystone('用户组')-->'配置文件备份'

################分割线

cp /etc/keystone/keystone.conf{,.bak}
'll /etc/keystone/keystone.conf*'
-rw-r----- 1 root keystone 73101 May 24  2017 /etc/keystone/keystone.conf
-rw-r----- 1 root root     73101 May  3 20:28 /etc/keystone/keystone.conf.bak

# 备份下

grep -Ev '#|^$' /etc/keystone/keystone.conf.bak > /etc/keystone/keystone.conf

################按区域划分,一定要配置在'对应的区域'下面

在"[DEFAULT]"部分,定义'初始管理令牌'的值

[DEFAULT]
...
admin_token = ADMIN_TOKEN

使用前面步骤生成的'随机数替换'ADMIN_TOKEN 值,这里采用上面固定'没有使用随即字符串'

################数据库

在 "[database]" 部分,配置数据库访问

[database]
...
connection = mysql+pymysql://keystone:KEYSTONE_DBPASS@controller/keystone

# 将"KEYSTONE_DBPASS"替换为你为数据库选择的密码-->mysql+pymysql://协议连接mysql

# 告诉-->如何连接数据库-->用什么协议,用户名和密码连接controller主机的keystone数据库

#################令牌

早期的令牌是'pki和uuid' --->'只是随机数生成的方法'而已-->https://www.cnblogs.com/omgasw/p/12157160.html

在"[token]"部分,配置Fernet UUID令牌的提供者'新版本'

[token]
...
provider = fernet

工具包的安装

yum install openstack-utils.noarch -y

工具来改keystone的配置文件

openstack-config --set /etc/keystone/keystone.conf DEFAULT admin_token ADMIN_TOKEN
openstack-config --set /etc/keystone/keystone.conf database connection mysql+pymysql://keystone:KEYSTONE_DBPASS@controller/keystone
openstack-config --set /etc/keystone/keystone.conf token provider fernet

'语法':openstack-config --set 修改配置文件 那个区域  键 值

openstack-config支持'重复执行'

 手动修改工具修改的md5sum数值对比

[root@controller keystone]# md5sum keystone.conf.bak
'd5acb3db852fe3f247f4f872b051b7a9'  keystone.conf.bak
[root@controller keystone]# md5sum keystone.conf
'd5acb3db852fe3f247f4f872b051b7a9'  keystone.conf
结果:'手动'和'工具自动化修改'是一样的--->'md5sum 校验 配置文件来看'

提高'自动化效率'和'错误出现'的概率

同步数据库 

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

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

切换'keystone用户',用sh环境;'-c执行该命令'

'说明:' 如果使用root身份,会产生一些root用户身份的文件,keystone用户无法使用

检测数据库

# 观察是否有输出结果

mysql -u keystone -pKEYSTONE_DBPASS  -e  'use keystone;show tables;'

# 如果没有输出结果,看keystone.log的日志

vim /var/log/keystone/keystone.log

-rw-r--r-- 1 keystone keystone 4402 May  3 20:54 /var/log/keystone/keystone.log

通过'该文件的日期'可以看到是su - 执行命令生成的

#########################

报错:'账户和密码不对(数据库无法同步)'  --->没有进行mysql_secure'安全初始化'的原因!

初始化Fernet keys

前面的'token区域'指定了'令牌得提供者是fernet',这里要对fernet'进行初始化'

# 执行下面命令之前,对比-->ll /etc/keystone文件前后的变化-->多了一个目录

keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone

配置及启动httpd服务

编辑"/etc/httpd/conf/httpd.conf" 文件,配置'ServerName' 选项为控制节点

ServerName controller

# 等价形式--> echo "ServerName controller" >> /etc/httpd/conf/httpd.conf

# sed -i '/#ServerName www.example.com:80/a ServerName controller' /etc/httpd/conf/httpd.conf

##############分割线##############

vim '/etc/httpd/conf.d/wsgi-keystone.conf'

# apache-->多站点-->多虚拟主机

Listen 5000
Listen 35357

<VirtualHost *:5000>
    WSGIDaemonProcess keystone-public processes=5 threads=1 user=keystone group=keystone display-name=%{GROUP}
    WSGIProcessGroup keystone-public
    WSGIScriptAlias / /usr/bin/keystone-wsgi-public
    WSGIApplicationGroup %{GLOBAL}
    WSGIPassAuthorization On
    ErrorLogFormat "%{cu}t %M"
    ErrorLog /var/log/httpd/keystone-error.log
    CustomLog /var/log/httpd/keystone-access.log combined

    <Directory /usr/bin>
        Require all granted
    </Directory>
</VirtualHost>

<VirtualHost *:35357>
    WSGIDaemonProcess keystone-admin processes=5 threads=1 user=keystone group=keystone display-name=%{GROUP}
    WSGIProcessGroup keystone-admin
    WSGIScriptAlias / /usr/bin/keystone-wsgi-admin
    WSGIApplicationGroup %{GLOBAL}
    WSGIPassAuthorization On
    ErrorLogFormat "%{cu}t %M"
    ErrorLog /var/log/httpd/keystone-error.log
    CustomLog /var/log/httpd/keystone-access.log combined

    <Directory /usr/bin>
        Require all granted
    </Directory>
</VirtualHost>
# 启动 Apache HTTP 服务并配置其随系统启动:

systemctl enable httpd.service

systemctl start httpd.service

nginx+uwsgi 上搭建keystone

端口检查

80 5000 35357 -->'端口'

创建服务实体注册API

创建服务实体--->'给服务创建一个名字'

(1)先决条件 

######## 配置认证令牌

export OS_TOKEN=ADMIN_TOKEN

将"ADMIN_TOKEN"替换为你在 :doc:`keystone-install`章节中生成的认证令牌'最好固定'

例如:export OS_TOKEN=294a4c8a8a475f9b9836

由于之前固定,不用随机字符串,所以就是'ADMIN_TOKEN'

######## 配置端点URL

export OS_URL=http://controller:35357/v3

######## 配置认证 API 版本

export OS_IDENTITY_API_VERSION=3

######## 检验

'env | grep ^OS'

OS_IDENTITY_API_VERSION=3
OS_TOKEN=ADMIN_TOKEN
OS_URL=http://controller:35357/v3

(2)创建服务实体

'创建服务实体'

openstack service create \
  --name keystone --description "OpenStack Identity" identity

# 创建一个服务;服务的名字是 keystone;description是备注描述信息;identity进行认证

(3)注册三条API

'注册API' -->public

openstack endpoint create --region RegionOne \
  identity public http://controller:5000/v3

'注册了三条API','注册的域'是 RegionOne;和identify认证服务管理,'类型'是public;'v{number}'可以进行'版本兼容'-->openstack升级,旧的API调用

公共,游客'guest'用的

'服务和服务之间'API的调用地址 -->'internal'

openstack endpoint create --region RegionOne \
  identity internal http://controller:5000/v3

'管理员通道' -->'admin'

openstack endpoint create --region RegionOne \
  identity admin http://controller:35357/v3

########### 说明

'不同的通道实现不同的权限'

每个添加到OpenStack环境中的服务要求一个多个服务实体三个认证服务中的API 注册

查看服务

openstack service list

查看API地址

openstack endpoint list

相关博客

相关博客

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
安装Keystone之前,您需要确保已经安装并配置好了OpenStack Identity服务所需的依赖项。这些依赖项包括Python、MySQL数据库、Apache HTTP服务器、以及其他一些Python库。如果您还没有安装这些依赖项,请先安装它们。 以下是在Ubuntu 18.04操作系统上安装Keystone的步骤: 1.安装Keystone软件包: ``` sudo apt-get update sudo apt-get install keystone ``` 2.编辑Keystone配置文件/etc/keystone/keystone.conf,将[database]部分中的连接信息修改为您的MySQL数据库连接信息,例如: ``` [database] connection = mysql+pymysql://keystone:PASSWORD@controller/keystone ``` 3.编辑/etc/apache2/sites-available/wsgi-keystone.conf文件,将WSGIScriptAlias行中的/var/www/cgi-bin/keystone修改为/usr/bin/keystone-wsgi-public: ``` WSGIScriptAlias / /usr/bin/keystone-wsgi-public ``` 4.创建一个新的数据库并将权限授予Keystone: ``` sudo mysql -u root -p CREATE DATABASE keystone; GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY 'PASSWORD'; GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY 'PASSWORD'; exit ``` 5.初始化Keystone数据库: ``` sudo su -s /bin/sh -c "keystone-manage db_sync" keystone ``` 6.为管理员创建一个新的OpenStack Identity服务用户: ``` 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://controller:5000/v3 export OS_IDENTITY_API_VERSION=3 export OS_IMAGE_API_VERSION=2 ``` 7.创建管理员用户、服务、终端节点和角色: ``` openstack user create --domain default --password-prompt admin openstack role create admin openstack role add --project admin --user admin admin openstack service create --name keystone --description "OpenStack Identity" identity openstack endpoint create --region RegionOne identity public http://controller:5000/v3 openstack endpoint create --region RegionOne identity internal http://controller:5000/v3 openstack endpoint create --region RegionOne identity admin http://controller:35357/v3 ``` 8.重新启动Apache HTTP服务器: ``` sudo service apache2 restart ``` 现在,您已经成功地安装和配置了Keystone服务。您可以使用OpenStack命令行工具或其他OpenStack服务来验证Keystone是否正常工作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值