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

一、OpenStack简介

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

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

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

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

Keystone:提供认证服务,每一个服务都需要经过它来认证,它的作用就像是一个注册中心,用户只需要访问它就可以知道其他服务的地址

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

Cinder:提供块存储服务

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

二、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仓库(在Centos/cloud中)都可以安装OpenStack的源,如图:

在控制节点+计算节点都执行以下命令安装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

五、OpenStack组件安装步骤

OpenStack的各个组件在安装时都可以遵循以下套路(除了Keystone自身稍有不同):

1、在mysql中创库授权

2、在keystone中创建用户并关联角色

3、在keystone中注册API

4、使用yum安装组件

5、修改服务配置文件

6、同步数据库

7、启动服务

六、安装Keystone

1、安装keystone

yum install openstack-keystone -y

2、编辑keystone配置文件/etc/keystone/keystone.conf(安装好openstack-utils后也可以使用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、创建域、项目、用户和角色。这里为nova、neutron等组件创建了一个项目叫做service。在前面做初始化的时候其实还自动创建了一个admin的项目用于管理账号。 

openstack project create --domain default --description "Service Project" service  #创建一个项目叫做service,它属于default默认域
openstack project create --domain default --description "Mytest Project" test  #创建一个项目叫做test
openstack role create user  #创建一个角色为user

openstack user create --domain default --password yourpasswor test  #创建一个test用户,它属于default默认域
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

8、上一步执行完成后,Keystone的安装其实已经完成。在官网文档中有一个验证步骤,使用了一长串命令进行操作。这是因为配置环境变量前需要用参数的形式把信息传递过去。如果配置好环境变量就可以简化命令行了。安装其他服务或者需要用到OpenStack的命令进行维护都需要先执行该变量才可以,如果报错401基本就是密码不对 

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

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

openstack token issue  #查看所有用户的token信息
openstack service list
openstack user list #查看用户列表
openstack role list  #查看角色列表
openstack project list  #查看项目列表
openstack endpoint list
openstack endpoint delete xxx  #删除端点示例

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值