本站所有文章均为原创,如对您有帮助,恳请帮忙点击任何一处广告
  • 首页
  • OpenStack
  • OpenStack newton版安装教程(1)——keystone部分

OpenStack newton版安装教程(1)——keystone部分

发布:TangLu2018-6-13 11:45分类: OpenStack 标签: keystone rabbitmq 云计算 openstack

OpenStack是一个管理虚拟机的平台,通常和KVM结合使用所以当OpenStack出现问题的时候,只要KVM没挂掉那么上面的服务也不会中断,可以通过单机方式管理KVM,然后再修复OpenStack)。OpenStack平台将计算、网络、存储等服务集中进行管理。其常用组件如下:

HorizonOpenStack的Dashboard,也就是图形化管理界面。该服务异常的话无法通过WEB界面对虚拟机进行管理

Nova:提供计算服务,比如虚拟机的建立、开关机等都和它有关,该服务异常的话无法新建虚拟机,已经创建的不受影响

Neutron:提供网络服务,IP配置等都和它有关

Keystone:提供认证服务,每一个服务都需要经过它来认证

Glance:提供和管理镜像的服务

Cinder:提供块存储服务

要完整的去部署一套OpenStack的话,除了上述组件外,还需要MySQL、RabbitMQ消息队列(用于各服务之间的通信)、Apache(用于WEB界面)、Memcached(缓存令牌信息)的支持

企业微信截图_20180821154213.png


一、keystone相关概念

OpenStack平台中所有服务的授权和认证都需要经过keystone,它就像是一个注册中心,收集了所有服务的相关信息,这些服务要告诉Keystone自己是干嘛的以及自己的接口地址,也就是服务端口endpoint。用户需要使用这些服务的时候找注册中心就可以了。所以它是OpenStack平台中需要第一个安装的服务。服务在经过keystone身份认证后会得到一个授权秘钥,该秘钥用于在各个服务之间完成授权认证与数据传输。keystone经过配置后会为用户创建合适的角色、服务、租户、用户、API、服务端点、区域等服务,这些服务构成了云平台的基础设施。下面是keystone中一些名词解释:

用户(user):即某个项目的管理账户或使用账户。用户必须存在于某一个租户的某一个角色中才会有相关的权限,一个用户可以属于多个项目和多个角色

项目(project):有点类似组的概念每个user必须在该project中才可以访问该project的资源,老版本中项目也叫做租户(tenant)

角色(role)权限的集合,即某个项目某个用户的权限。OpenStack在keystone创建后就会有两个默认角色,分别是管理员admin和普通用户member,这2个角色信息在/etc/keystone/policy.json中已被定义。

服务(service):neutron、glance、nova都属于服务

端点(endpoint):OpenStack的服务都运行在一个特定的URL与端口上,这些就是服务的端点地址。当客户端连接OpenStack时,keystone对已经定义的endpoint进行查询,并向客户端返回所需要的服务端点地址,以便客户端连接和使用。可以把endpoint理解为是一个服务暴露出来的访问点,如果需要访问这个服务,就需要知道它的endpoint,而endpoint一般是一个URL,知道了这个URL就可以访问这个服务。endpoint一般同时具备public、private和admin三种权限。public URL可以被全局访问,private URL只能被局域网访问,admin URL则从常规的访问中被分离了。

区域(zone):可以简单的理解为地域的划分,因为云平台一般会存在跨区域跨IDC的情况。在OpenStack中根据不同区域定义不同的endpoint。比如上海区域会有public、private、admin三个URL,在北京区域也应该定义三个服务端点URL

令牌(token):可以理解为秘钥,用户通过用户名和密码获取在某个项目的token实现登录

数据库为便于记录所需验证组件、服务的信息,OpenStack需要数据库作为信息存储的主要手段,主要使用的是MySQL/MariaDB


二、配置OpenStack官方Yum源和客户端工具

通过YUM安装是最佳实现方式,所以在安装OpenStack组件之前要配置好OpenStack的官方YUM源。这里推荐使用EPEL或者阿里云的YUM仓库来安装OpenStack的源,如图:

openstack1.png


控制节点+计算节点都执行以下命令安装OpenStack的yum源和OpenStack的客户端工具

yum install centos-release-openstack-newton -y  #安装该软件包后会创建openstack客户端的yum源
yum upgrade -y
yum install python-openstackclient openstack-selinux openstack-utils -y  #安装客户端和selinux自动管理工具


三、在控制节点安装OpenStack相关环境(Chrony、MySQL、RabbitMQ、Memcached、Httpd)

1、安装chrony服务保证时间同步

可以把控制节点作为NTP服务端,计算节点作为客户端,该工具在CentOS 7中已经默认装好,做配置即可

server 10.0.0.11 iburst  #把内网卡作为互相通信的网卡
allow 10.0.0.0/24  #允许该网段的IP进行时间同步
systemctl restart chronyd.service
systemctl enable chronyd.service
chronyc sources  #验证服务


2、安装mariadb,并且为keystone创建用户并授权

yum install mariadb mariadb-server python2-pymysql -y

vi /etc/my.cnf.d/openstack.cnf
[mysqld]
default-storage-engine = innodb  #使用innodb引擎
innodb_file_per_table  #innodb适用于每一张表
bind-address = 192.168.100.100  #本机IP,admin网段
max_connections =4096
collation-server = utf8_general_ci  #中文编码的支持
character-set-server = utf8  #同上

systemctl enable mariadb.serivce
systemctl start mariadb.service

mysql > create database keystone;
mysql > grant all privileges on keystone.* to 'keystone'@'localhost' identified by '123456';
mysql > grant all privileges on keystone.* to 'keystone'@'%' identified by '123456';
mysql > flush privileges;


3、安装RabbitMQ消息队列提供各组件通信功能,RabbitMQ运行后监听在5672端口

yum install rabbitmq-server
systemctl start rabbitmq-server 
systemctl enable rabbitmq-server 


修改RabbitMQ默认用户guest的密码(RabbitMQ默认的管理员账户密码都是guest),或者为OpenStack新建一个用户

rabbitmqctl change_password guest NEWPASSWORD  #修改默认用户的密码
rabbitmqctl add_user openstack RABBIT_PASSWORD  #创建一个openstack用户,密码请自定义
rabbitmqctl set_permissions openstack ".*" ".*" ".*"  #给新建用户所有权限
rabbitmqctl set_user_tags openstack administrator  #设置openstack用户的角色为admin,官方文档没有做这一步,貌似会登录不上MQ的web界面
rabbitmqctl list_users  #查看当前用户信息


安装RabbitMQ的Web插件,实现可视化管理。装好后可以通过网页访问RabbitMQ,访问地址是http://ip:15672,如果访问异常,请记得关闭selinux和iptables

rabbitmq-plugins enable rabbitmq_management rabbitmq_management_agent  rabbitmq_web_dispatch  webmachine mochiweb amqp_client  #安装插件
rabbitmq-plugins list  #查看当前插件
systemctl restart rabbitmq.service  #重启服务

4、安装httpd、memcached(keystone是依赖于httpd来提供服务的)

yum install  httpd mod_wsgi memcached -y
echo "OPTIONS=\"-l 0.0.0.0\"" >> /etc/sysconfig/memcached  #修改memcached监听的网卡
systemctl enable memcached.service 
systemctl start memcached.service


四、keystone的建立与配置

1、安装keystone

yum install openstack-keystone -y


2、编辑keystone配置文件/etc/keystone/keystone.conf(使用openstack-config这个管理命令也可以实现配置文件的修改,适用于脚本)

openstack-config --set /etc/keystone/keystone.conf database connection mysql+pymysql://keystone:MYSQLPASSWORD@CONTROLLER_IP/keystone
openstack-config --set /etc/keystone/keystone.conf token provider fernet


直接编辑文件的方式:

[database]
connection = mysql+pymysql://keystone:DBPASS@CONTROLLER_IP/keystone  #这里填写了数据库用户名、密码以及主机名(或IP)
[token]
provider = fernet  #配置令牌的提供者为fernet,fernet是一种随机数的生成方法


3、初始化数据库,-s选项指定了执行的shell,-c选项是使用指定的用户执行命令然后退出该用户,这里使用keystone用户执行了keystone-manage db_sync这条命令来初始化keystone数据库。执行成功后查看keystone数据库进行验证,如果看到生成了相关数据代表成功。记住用户一定要是keystone,否则生成的文件属主不对会导致服务出错

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


4、初始化fernet仓库(因为在第3步里对token采用了fernet技术来加密)

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


5、发布创建keystone endpoint服务入口以及管理密码

keystone-manage bootstrap \
--bootstrap-password 0BcDemU0ER9HIAiQ  #修改keystone的admin密码
--bootstrap-admin-url http://CONTROLLER_IP:35357/v3/  
--bootstrap-internal-url http://CONTROLLER_IP:35357/v3/
--bootstrap-public-url http://CONTROLLER_IP:5000/v3/
--bootstrap-region-id RegionOne  #每组endpoint包含的admin、internal、public都要对应一组区域,区域名以ReginOne,ReginTwo,以此类推


6、配置httpd并启动服务,注意做好配置文件的软连接,启动服务后keystone会监听于5000(普通用户)和35357(管理员)端口

sed -i "s/#ServerName www.example.com:80/ServerName CONTROLLER_IP/" /etc/httpd/conf/httpd.conf  #设置ServerName为控制节点的IP或主机名
ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/  #该配置文件来自openstack-keystone这个包,做软连接给apache
systemctl enable httpd.service
systemctl start httpd.service


7、配置OpenStack环境变量,之所以要配置这么多环境变量是为了在使用OpenStack相关命令时不用写一堆参数,后续安装其他服务或者需要用到OpenStack的命令进行维护都需要先执行该变量才可以

cat > /root/admin-openrc << EOF
export OS_USERNAME=admin
export OS_PASSWORD=0BcDemU0ER9HIAiQ  #这里需要填写第5步所创建的keystone密码
export OS_PROJECT_NAME=admin  #项目
export OS_USER_DOMAIN_NAME=default  #域,类似阿里云华北区、华东区的概念
export OS_PROJECT_DOMAIN_NAME=default
export OS_AUTH_URL=http://CONTROLLER_IP:35357/v3
export OS_IDENTITY_API_VERSION=3                                            
export OS_IMAGE_API_VERSION=2
EOF

source /root/admin-openrc

keystone1.png


8、创建域、项目、用户和角色。这里为nova、neutron等组件创建了一个项目叫做service。在前面做初始化的时候其实还自动创建了一个admin的项目用于管理账号。

openstack project create --domain default --description "Service Project" service  #创建一个项目叫做service
openstack project create --domain default --description "Mytest Project" test  #创建测试项目
openstack role create user  #创建一个角色为user

openstack user create --domain default --password yourpasswor test  #创建一个test用户
openstack role add --project test --user test user  #把用户test加入到test项目并赋予为user角色


上面的操作其实可以复用到后面为nova等组件创建用户和授权,过程基本是一样的,这里提前给个示例(可不执行):

openstack user create --domain default --password-prompt nova 
openstack role add --project service --user nova admin



9、验证创建的用户,基本就是各种list,如果创建错了东西需要删除的话,先list出信息然后使用delete即可

openstack token issue
openstack service list
openstack user list 
openstack role list
openstack project list
openstack endpoint list
openstack endpoint delete xxx


至此keystone已经搭建完成,下一步就是Glance的部署了

温馨提示如有转载或引用以上内容之必要,敬请将本文链接作为出处标注,谢谢合作!
et_highlighter51
版权所有:《Linux运维技术学习站点
文章标题:《OpenStack newton版安装教程(1)——keystone部分
除非注明,文章均为 《Linux运维技术学习站点》 原创
转载请注明本文短网址:http://www.linuxe.cn/post-420.html  [生成短网址]

已有 0/1332 人参与

发表评论:

欢迎分享Linux运维技术学习站点

欢迎使用手机扫描访问本站,还可以关注微信哦~