openstack之keystone部署

阅读: 评论:0

openstack之keystone部署
前⾔
  openstack更新频率是挺快的,每六个⽉更新⼀次(命名是是以A-Z的⽅式,Austin,Newton)。博主建议⼤家先可⼀种版本研究,等某⼀版本研究透彻了,在去研究新的版本。其实更新来说,也就是⽆⾮对于软件来说的⼀些优化。对于⽤户⾓度并没有多⼤的改变。切记不要追着新版本⾛,那样只会是丢了西⽠拣芝⿇!
  看⼀下官⽹的图
  我们按照Newton这个版本来部署。⼤家也可以上官⽹看下官⽅⽂档,写的也挺详细。
废话不多说,直接部署
openstack基于centos7 、redhat7 或者Ubuntu来部署的
系统信息:
1 [root@bodbayLi ~]# cat /etc/redhat-release
2 CentOS Linux release 7.2.1511 (Core)     #操作系统信息
3 [root@bodbayLi ~]# uname -r
43.10.0-327.22.2.el7.x86_64        #内核的版本信息
First Step:准备阶段
安装官⽅yum源。之前在部署这个openstack的时候还要考虑各种的安装包。后来官⽅直接出了⾃⼰的yum源。
yum安装(下载软件包到本地--->安装--->删除)修改f
修改keepcache=1
修改cachedir=/newton  #⽅便管理。并且所有的软件包都下载到本地,可以⾃⼰制作yum源
yum -y install centos-release-openstack-newton #安装官⽅的yum源
yum -y upgrade #更新
yum -y install python-openstackclient #安装⼯具
yum -y install openstack-selinux #安装openstack-selinux包⾃动管理openstack组件的安全策略
安装完上⾯的部分,接下来部署数据库
Second Step
  因为keystone是⼀个认证服务也属于⼀个web app,既然是认证服务就要在后端安装⼀个数据库。⽤来存放⽤户的相关数据
yum -y install mariadb mariadb-server python2-PyMySQL   
  #前⾯两个是属于centos7版本mysql数据库的名称,后⾯那个是⼀个Python模块。(在python当中操作mysql)
 安装好后在/f.d/⽬录下创建⼀个f⽂件。(什么名字都⾏但是要以f结尾)
1[mysqld]
2 bind-address = 182.92.84.106 #本机管理⽹络ip
3
4default-storage-engine = innodb
5innodb_file_per_table
6 max_connections = 4096
7 collation-server = utf8_general_ci
8 character-set-server = utf8
保存退出,启动mariadb
systemctl start mariadb.service #启动mariadb并设为开机启动。在centos6版本中启动管理服务由之前的init.d
systemctl enable mariadb.service #在centos7中则是systemctl来管理启动服务,千万要记住
查看mariadb.service运⾏状态
上⾯就是mariadb部署过程
Third Step
  部署keystone
keystone关于数据库的操作:
1 mysql -u root -p #登⼊数据库
2CREATE DATABASE keystone; #新建库keystone
3 GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' \
4  IDENTIFIED BY '123'; #新建本地访问keystone库的账号
5 GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' \
6  IDENTIFIED BY '123'; #新建远程访问keystone库的账号
keystone为什么要创建⼀个⾃⼰的数据库?
  应为keystone程序要访问数据库,⾸先⾃⼰要有⼀个数据库,就来访问⾃⼰的数据库
注意:以后每部署⼀个组件都要有⼀个⾃⼰的数据库,在数据库中。⽐如nova也要访问数据库,那么数据库中就存放⼀个nova的库,⾥⾯存放⼀些nova相关的信息 ,catalog等
安装软件包
1 #keystone软件包名openstack-keystone
2 #安装httpd和mod_wsgi的原因是,社区主推apache+keystone
3 #openstack-keystone本质就是⼀款基于wsgi协议的web app,⽽httpd本质就是⼀个兼容wsgi协议的web server,所以我们需要为httpd安装mod_wsgi模块
4 yum -y install openstack-keystone httpd mod_wsgi
修改keyston配置⽂件:/etc/f
1 #让openstack-keystone能够知道如何连接到后端的数据库keystone
2 #mysql+pymysql:pymysql是⼀个python库,使⽤python可以操作mysql原⽣sql
3[database]
4 connection = mysql+pymysql://keystone:123@182.92.84.106/keystone  #mysql+pmysql是由上⾯的Python-mysql
                  #⽤户名:密码@mysql地址/哪个库       那个模块安装的,⽤pymysql来操作mysql
5[token]    #令牌
6 provider = fernet #fernet为⽣成token的⽅式(还有pki)
注意在mysql数据库中创建密码的时候加上了引号“123”⽽在配置⽂件中不要加上引号,不然会保错
保存退出,并初始化数据库
su -s /bin/sh -c "keystone-manage db_sync" keystone
之所以要初始化,是因为python的orm对象关系映射,需要初始化来⽣成数据库表结构。什么是orm(Object Relation Mapping)的缩写叫对象关系映射。
可能有的时候⼤家在部署的时候会遇到报错,怎么办,虽然我没有遇到,但是如果各位遇到了不要慌
tail -f -n 20 /var/log/keystone/keystone.log
看看是哪⼀步骤出现问题解决就好。
接下来初始化Fernet key库(⽣成token)
keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
keystone-manage credential_setup --keystone-user keystone --keystone-group keystone
上⾯的两个步骤是keystone对⾃⼰授权的⼀个过程,创建了⼀个keystone⽤户与⼀个keystone组。并对这个⽤户和组授权。因为keystone是对其他组件认证的服务,那么它⾃⼰就合格么?所以它先要对⾃⼰进⾏⼀下认证 
Fourth Step
配置web server整合keystone 
修改主机名,⽅便操作
hostnamectl set-hostname controller
配置hosts
182.92.84.106 controller
配置f/ServerName
ServerName controller
为mod_wsgi模块添加配置⽂件
#直接拷贝模块⽂件或者做软连接都可以
ln -s /usr/share/f /etc/httpd/conf.d/
wsgi:apache关于mod_wsgi模块的配置⽂件
keystone:⽤来连接keystone
查看f⽂件
1.上⾯两个端⼝说明keystone要开放这两个端⼝,apache才能把请求交给keystone
2.Port 5000:Wsgi守护进程,进程5个,每个进程下⾯⼀个线程,⽤户keystone,组keystone。进程组/usr/bin/keystone-wsgi-public ⽤来产⽣5000端⼝(内部⽤户与外部⽤户使⽤)
3.Port 35357:跟上⾯⼀样。进程组/usr/bin/keystone-wsgi-admin ⽤来产⽣35357端⼝(管理员使⽤)
Fifth Step束线带
启动服务
systemctl start httpd.service    #启动httpd服务
systemctl enable httpd.service    #设置成开机⾃启
查看服务状态
到这⾥keystone就部署完了,接下来就是如何要操作它了
如何操作keystone
⼀.创建keystone的catalog
  配置/etc/f
[DEFAULT]
admin_token = 123  #keystone⾃⼰对⾃⼰授予令牌为。虽然是可以但是这样是危险的,后⾯会去解决它
  设置环境变量
export OS_TOKEN=123
export OS_URL=182.92.84.106:35357/v3
export OS_IDENTITY_API_VERSION=3
1.第⼀步的值等于f中admin_token的值。并且只要在当前终端执⾏命令,当前终端就是管理员⽤户
2.因为现在keystone没有提供Endpoint,所以⾃⼰⼿动指定⼀个Endpoint,以后的请求就往这个url提交。v3代表⽤的keystone版本为3
3.认证版本为3
  为keystone创建catalog
openstack service create \
--name keystone --description "OpenStack Identity" identity
基于前两步给的权限,创建认证服务实体
基于建⽴的服务实体,创建访问该实体的三个api端点
openstack endpoint create --region RegionOne \
identity public 182.92.84.106:5000/v3
openstack endpoint create --region RegionOne \
identity internal 182.92.84.106:5000/v3  #前两个为5000端⼝,专门处理内部和外部的访问
                              #⽤keystone-wsgi-public
openstack endpoint create --region RegionOne \
identity admin 182.92.84.106:35357/v3  #35357端⼝,专门处理admin#⽤keystone-wsgi-admin
可以看见上⾯三个的service_id⼀样说明他们属于⼀个服务的Endpoint
⽩⾊箭头是访问路径
登录数据库查看keystone库中的表
铁盒制作
上⾯的步骤操作成功后,这样keystone就可以⼯作了。美容笔
  ⼆.创建域,项⽬(租户),⽤户,⾓⾊,并把四个元素关联在⼀起
  在openstack中最⼤的资源集合就是域--->项⽬(租户)--->⽤户--->⾓⾊
  1.创建域
  1 openstack domain create --description "Default Domain"default #创建⼀个默认的域“default”
  2.创建管理员 
#创建admin项⽬在“default”域中
openstack project create --domain default \
app数据采集
--description "Admin Project" admin
#创建admin⽤户在“default”域中
openstack user create --domain default \
--password-prompt admin        #输⼊密码
#创建admin⾓⾊
openstack role create admin
#创建上述三者的关联
openstack role add --project admin --user admin admin     #不关联⽤户⽆法使⽤
  第⼀步与第⼆步的作⽤就是keystone能够被使⽤初始化的操作
 ⼤家觉得上⾯的两⼤部分才完成⼀个功能有些⿇烦,别急官⽅最新给出了⼀个框架叫做Bootsrap,能够直接完成第⼀步和第⼆步的操作
变速箱试验台  如何操作的呢请看 
  三
#本质就是在为keystone创建catalog
keystone-manage bootstrap --bootstrap-password 123 \
--bootstrap-admin-url 182.92.84.106:35357/v3/ \
--bootstrap-internal-url 182.92.84.106:35357/v3/ \
--bootstrap-public-url 182.92.84.106:5000/v3/ \
--bootstrap-region-id RegionOne
#这个123就是上⾯你输⼊的部分的那个密码
#只不过⽤这步操作的话不⽤修改配置⽂件,不⽤写admin_token,第⼀步与第⼆步的操作⼀点都不要去做直接就第三步
  设置环境变量
export OS_USERNAME=admin    #⽤户名
export OS_PASSWORD=123    #就是keystone-manage中设定的--bootstrap-password
export OS_PROJECT_NAME=admin  #项⽬名    project <-- ⽤户 <--⾓⾊若想让⽤户获取权限必须要指定⽤户所在的项⽬是哪个
export OS_USER_DOMAIN_NAME=Default  #默认域
export OS_PROJECT_DOMAIN_NAME=Default
export OS_AUTH_URL=182.92.84.106:35357/v3  #认证url
export OS_IDENTITY_API_VERSION=3  #指定版本信息
验证关联
对⽐它们的ID发现是否⼀样
这些ID都可以在mysql数据库中查到
四.使⽤第三种⽅法步骤
  删除mysql keystone数据库
  重新初始化keystone数据库
  退出环境变量
  修改/etc/f/ 下的[DEFAULT] 将admin_token=123删掉
  直接操作第三步
  结束后查看assignment(openstack assignment list)看是否有结果
五.测试
羟乙基纤维素钠 创建⽤于后期测试⽤的项⽬,⽤户,租户,建⽴关联 
openstack project create --domain default \
--description "Demo Project" demo
#创建项⽬名为demo
openstack user create --domain default \
--password-prompt demo
#创建普通⽤户为demo 设置密码
openstack role create user        #创建普通⽤户的⾓⾊即user
openstack role add --project demo --user demo user    #建⽴关联
每⼀个创建的过程都是这⼏个步骤。但是会少了⼀步创建⾓⾊的过程。因为⽤户就两个,⼀个是admin,另⼀个就是user(⼀个项⽬⾥可以有很多admin⾓⾊和user⾓⾊)注意.⾓⾊⼀定是在项⽬中。
六。为后续的服务创建统⼀的项⽬叫service 
  因为keystone是⼀个独⽴的授权组件,后⾯每搭建⼀个新的服务都需要在keystone中执⾏四种操作:1.建项⽬ 2.建⽤户 3.建⾓⾊ 4.做关联并且创建catalog
#后⾯所有的服务(nova。glace等等)公⽤⼀个项⽬service,都是管理员⾓⾊admin (组件之间的通信都⾓⾊都是admin)
#所以实际上后续的服务安装关于keysotne的操作只剩2,4
openstack project create --domain default \
--description "Service Project" service
  每⼀个组件,都要有⼀个访问⽤户。(⽐如访问glance要有⼀个glance⽤户,还有⼀个⼀个⾓⾊,还要有⼀个关联)以后要部署glance,要在keystone中创建⼀个glance的catalog(service名/Endpoint)。还要有⼀个访问catalog的⽤户信息,这样的话还要
创建⼀个域。但是现在已经有了⼀个默认的域所以不需要再创建,域有了还要创建⼀个项⽬,但是现在项⽬也已经有了。service项⽬,所以不⽤创建了。就需要创建⼀个叫glance的⽤户就⾏了(⼀般组件叫什么名,⽤户就叫什么名)。还要创建⼀个⾓⾊。但是也不⽤创建,之前就有⼀个admin⾓⾊。最后就只要做⼀个关联就⾏。以后每个组件都要这么做。就是说学会了keystone的部署,后⾯的组件也就部署好了
查看project
七.验证
1.准备
出于安全考虑,关闭临时令牌认证机制(配置⽂件中的admin_token和keystone-manage的--bootstrap-password都是基于该机制)
2.取消⼀切环境变量(退出xshell/puppy远程连接软件,重新连接)
3.验证操作⽅法
  管理员⽤户admin申请token
openstack --os-auth-url controller:35357/v3 \
--os-identity-api-version 3  \
--os-project-domain-name default \
--os-user-domain-name default  \
--os-project-name admin \

本文发布于:2023-05-14 19:00:11,感谢您对本站的认可!

本文链接:https://patent.en369.cn/patent/4/99728.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:创建   数据库   服务   访问
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 369专利查询检索平台 豫ICP备2021025688号-20 网站地图