Openstack学习笔记(三):keystone的安装与配置

OpenStack简介

OpenStack既是一个社区,也是一个项目和一个开源软件,它提供了一个部署云的操作平台或工具集(IaaS)。其宗旨在于:帮助组织运行为虚拟计算或存储服务的云,为公有云、私有云提供可扩展的、灵活的云计算。
OpenStack主要包含以下几个组件,各个组件的功能如下,其中Nova,Keyston,Neutron,Glance,DashBoard为必须装的组件,其余可以选择性安装,图为OpenStack生态系统。

  • Nova 计算管理服务,支撑虚拟机运行
  • Keystone 提供所有组件的认证
  • Neutron 提供网络支持
  • Glance 提供给镜像服务
  • DashBoard 提供WEB管理界面服务
  • Swift 提供对象存储
  • Cinder 提供扩展硬盘给nova
  • Ceilometer 监控cinder,neutron,nova,glance运行并计量
  • Heat 支持云平台资源自动部署,集群服务

OpenStack安装配置

由于OpenStack的各个模块都需要通过KeyStone来进行认证,所以在配置安装OpenStack过程中需要主要,安装其他模块之前必须先进行安装KeyStone模块,本次安装步骤如下:

  • 配置认证服务KeyStone
  • 配置镜像服务Glance
  • 配置计算服务Nova
  • 配置网络服务Neutron
  • 配置Web管理服务DashBoard

配置认证服务KeyStone

主要分为以下几步

  • 安装配置认证服务
  • 创建用户、租户和角色

安装配置认证服务

KeyStone只需要在controller上面进行配置,执行yum指令即可安装,安装成功后需要进行数据库相关配置,还需要对相关权限进行配置

  • 安装KeyStone
    yum install -y openstack-keystone python-opnstackclient
安装完成
执行命令后该配置文件会多出这行数据
  • 配置数据库用户
    [root@controller ~]# mysql -u root -p000000
    MariaDB [(none)]> create database keystone;
    MariaDB [(none)]> grant all privileges on keystone.* to keystone@'localhost' identified by '000000';
    MariaDB [(none)]> grant all privileges on keystone.* to keystone@'%' identified by '000000';
    MariaDB [(none)]> flush privileges;
    MariaDB [(none)]> exit;
数据库与用户均建立成功
  • 为认证服务创建数据库表
    [root@controller ~]# su -s /bin/sh -c "keystone-manage db_sync" keystone
表创建成功
  • 定义配置授权令牌
    [root@controller ~]# ADMIN_TOKEN=$(openssl rand -hex 10)
    [root@controller ~]# echo $ADMIN_TOKEN
    3a4756d6a595a5d6794c
    [root@controller ~]# openstack-config --set /etc/keystone/keystone.conf DEFAULT admin_token $ADMIN_TOKEN
配置文件首行会出现令牌
  • 相关权限配置
    [root@controller ~]# keystone-manage pki_setup --keystone-user keystone --keystone-group keystone
    [root@controller ~]# chown -R keystone:keystone /etc/keystone/ssl
    [root@controller ~]# chmod -R o-rwx /etc/keystone/ssl
配置完成
  • 启动KeyStone服务并设置自启动
    [root@controller ~]# systemctl restart openstack-keystone
    [root@controller ~]# systemctl enable openstack-keystone

  • 创建计划任务并定期执行
    [root@controller ~]# (crontab -l -u keystone 2>&1 | grep -q token_flush) || echo '@hourly /usr/bin/keystone-manage token_flush > /var/log/keystone/keystone-tokenflush.log 2>&1' >> /var/spool/cron/keystone
    [root@controller ~]# crontab -l -u keystone
    @hourly /usr/bin/keystone-manage token_flush > /var/log/keystone/keystone-tokenflush.log 2>&1

创建用户、租户和角色

  • 配置环境变量,编辑admin-openrc.sh文件,并写入以下几句,保存后执行
    [root@controller ~]# vi admin-openrc.sh
    export OS_TOKEN=3a4756d6a595a5d6794c
    export OS_URL=http://controller:35357/v3
    export OS_USERNAME=admin
    export OS_PASSWORD=000000
    export OS_AUTH_URL=http://controller:35357/v3
    export OS_PROJECT_NAME=admin
    export OS_IDENTITY_API_VERSION=3
    [root@controller ~]# source admin-openrc.sh
验证
  • 通过openstackclient创建服务及对应的endpoint
    [root@controller ~]# openstack
    (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 admin http://controller:35357/v3
    (openstack) endpoint create --region RegionOne identity internal http://controller:35357/v3
验证
  • 创建admin相关项目、用户、角色
    (openstack) project create --domain default --description "Admin Project" admin
    (openstack) user create --domain default --password 000000 --email admin@localhost admin
    (openstack) role create admin
    (openstack) role add --project admin --user admin admin
Paste_Image.png
  • 创建demo相关项目、用户、角色
    (openstack) project create --domain default --description "Demo Project" demo
    (openstack) user create --domain default --password 000000 demo
    (openstack) role create demo
    (openstack) role add --project demo --user demo user

  • 创建service相关项目、用户、角色
    (openstack) project create --domain default --description="Service Project" service

验证认证服务

  • 重置环境变量并获取token
    [root@controller ~]# unset OS_TOKEN
    [root@controller ~]# unset OS_URL
    [root@controller ~]# openstack token issue
成功

配置镜像服务Glance

Glance镜像服务实现发现、注册、获取虚拟机镜像和镜像元数据,镜像数据支持存储多种的存储系统,可以是简单文件系统、对象存储系统等。
Glance镜像服务是典型的C/S架构,Glance架构包括glance-CLIent、Glance、Glance Store。Glance包括主要包括REST API、数据库抽闲层(DAL)、域控制器(Glance Domain controller)、注册层(Registry Layer),Glance 使用集中数据库(Glance DB)在Glance各组件直接共享数据。
该过程仅需在controller节点布置。

  • 下载安装Glance
    [root@controller ~]# yum install openstack-glance -y
  • 修改相关配置文件,设置数据库连接以及keystone相关设置
    openstack-config --set /etc/glance/glance-api.conf database connection mysql://glance:000000@controller/glance
    openstack-config --set /etc/glance/glance-registry.conf database connection mysql://glance:000000@controller/glance
    openstack-config --set /etc/glance/glance-api.conf keystone_authtoken auth_uri http://controller:5000
    openstack-config --set /etc/glance/glance-api.conf keystone_authtoken auth_url http://controller:35357
    openstack-config --set /etc/glance/glance-api.conf keystone_authtoken auth_plugin password
    openstack-config --set /etc/glance/glance-api.conf keystone_authtoken username glance
    openstack-config --set /etc/glance/glance-api.conf keystone_authtoken project_domain_id default
    openstack-config --set /etc/glance/glance-api.conf keystone_authtoken user_domain_id default
    openstack-config --set /etc/glance/glance-api.conf keystone_authtoken project_name service
    openstack-config --set /etc/glance/glance-api.conf keystone_authtoken password 000000
    openstack-config --set /etc/glance/glance-api.conf paste_deploy flavor keystone
    openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken auth_uri http://controller:5000
    openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken auth_url http://controller:35357
    openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken auth_plugin password
    openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken username glance
    openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken project_domain_id default
    openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken user_domain_id default
    openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken project_name service
    openstack-config --set /etc/glance/glance-registry.conf keystone_authtoken password 000000
    openstack-config --set /etc/glance/glance-registry.conf paste_deploy flavor keystone
    配置成功后两个文件均会多出以下几行
  • 配置数据库相关权限及表
    [root@controller ~]# mysql -u root -p000000
    create database glance;
    grant all privileges on glance.* to 'glance'@'localhost' identified by '000000';
    grant all privileges on glance.* to 'glance'@'%' identified by '000000';
    flush privileges;
    exit
    [root@controller ~]# su -s /bin/sh -c "glance-manage db_sync" glance
验证
  • 建立相关用户
    [root@controller ~]# openstack
    (openstack) user create --password 000000 --email glance@localhost glance
    (openstack) role add --project service --user glance admin


    成功
  • 建立endpoint
    (openstack) service create --name glance --description="Openstack Image Service" image
    (openstack) endpoint create --region RegionOne image public http://controller:9292
    (openstack) endpoint create --region RegionOne image internal http://controller:9292
    (openstack) endpoint create --region RegionOne image admin http://controller:9292

成功
  • 启动服务并设置自启动
    [root@controller ~]# systemctl restart openstack-glance-api
    [root@controller ~]# systemctl restart openstack-glance-registry
    [root@controller ~]# systemctl enable openstack-glance-api
    [root@controller ~]# systemctl enable openstack-glance-registry
  • 上传镜像
    [root@controller images]# openstack image create --disk-format qcow2 --container-format bare --public --file /opt/images/centos_65_x86_6420140327.qcow2 centos


    上传成功

遇见问题

  • 安装openstack-keystone的时候会报错,提示缺少python-zope-interface这个包,在阿里云、网易云镜像站均找不到这个包,最后通过关键字搜索python-zope-interface rpm找到了对应的包,放入epel文件夹并更新repodate文件,再次安装成功。
缺少文件报错
发现确实缺少zope-interface文件
更新repo文件
验证已解决
  • 由于k版本后keystone client被openstack client所代替,所以如果yum的是python-keystoneclient,执行命令时候会出现如图所示告警,下载
告警
  • 在配置账户的时候出现很多问题,例如试验指导书里面给的环境变量是 OS_SERVICE_ENDPOINT和OS_SERVICE_TOKEN,但是帮助里面没有这个环境变量的用法,当我修改为OS_URL和OS_TOKEN的时候可以正常使用,可能是因为版本变更的问题吧。并且这里如果没有配置OS_URL和OS_TOKEN环境变量的话,报错的很多问题可能都不会指向OS_URL,可能会提示其他诸如
    openstack could not determine a suitable url for the plugin
    openstack The request you have made requires authentication,
    还有一些其他的报错没有一一记录,总之,这两个环境变量很重要。
os_url
  • 在配置环境变量的时候各参数一定要一致,如果地址末尾给的是v3,那么一定要将export OS_IDENTITY_API_VERSION的值设置成3,如果给的是v2.0,则这一项可以不填,因为默认的是2,不然会因为版本问题无法继续配置。

  • 注意这里对于环境变量OS_URL和OS_TOKEN一定要重置,否则会提示404未找到等

推荐阅读更多精彩内容