openstack-havana云平台实验
时间:2016-10-10 09:32 来源:潇湘夜雨 作者:华嵩阳 点击:次
前提:本文档中涉及到的所有主机的OS均为RHEL 6.4 x86_64系统。
Control Node: 172.18.109.235 node1.test.com
Object Storage Node: 172.18.109.237 node2.test.com
Compute Node: 172.18.109.239 node3.test.com
Swift是一个分布式存储系统,其架构比较复杂,这里采用其最简单的模型来演示其使用,即基于一个物理节点来实现其所有功能。
一、安装配置Keystone
OpenStack的Identify服务(即Keystone)有两个主要功能
用户管理:实现用户认证及授权;
服务目录(Service catalog):所有可用服务的信息库,包含所有可用服务及其API endpoint路径;
1、安装Keystone
1.1、安装并初始化MySQL服务器
# yum -y install mysql mysql-server
# service mysqld start
# mysqladmin -uroot password '123456'
# chkconfig mysqld on
1.2、安装配置Identity服务
# yum install openstack-utils openstack-keystone python-keystoneclient
创建keystone数据库,其默认会创建一个keystone用户以访问此同名数据库,密码可以使用--pass选项指定。
# openstack-db --init --service keystone --pass keystone
Please enter the password for the 'root' MySQL user:
Verified connectivity to MySQL.
Creating 'keystone' database.
Asking openstack-keystone to sync the database.
Complete!
如果本机尚未安装mysql-server,此脚本会自动安装之,并且会提醒用户为root用户设定密码。
如果不想使用默认的keystone用户访问其数据,也可以使用下面的命令为keystone服务创建访问数据库的用户。
# mysql -uroot -p
mysql> GRANT ALL ON keystone.* TO 'KS_USER'@'%' IDENTIFIED BY '[YOUR_KEYSTONEDB_PASSWORD]';
mysql> GRANT ALL ON keystone.* TO 'KS_USER'@'localhost' IDENTIFIED BY '[YOUR_KEYSTONEDB_PASSWORD]';
1.3、编辑keystone的主配置文件,使得其使用MySQL做为数据存储池,并配置其使用正确的参数。
# vim /etc/keystone/keystone.conf
在[sql]段中,确保与mysql相关的内容类似如下,注意其中的密码为keystone用户访问MySQL服务器所使用的密码:
connection = mysql://keystone:keystone@localhost/keystone
配置参数示例:
debug = true
verbose = true
log_file = /var/log/keystone/keystone.log
connection = mysql://keystone:keystone@172.18.109.235/keystone
上面的参数指定连接时,其语法格式为“mysql://[user]:[pass]@[primary IP]/[db name]”。
1.4、配置keystone的管理token
为了使用admin用户管理keystone,可以通过配置keystone的客户端使用SERVICE_TOKEN和SERVICE_ENDPOINT环境变量来连接至Keystone。
# export SERVICE_TOKEN=$(openssl rand -hex 10) #生成随机数赋值给token变量
# export SERVICE_ENDPOINT=http://172.18.109.237:35357/v2.0
# echo $SERVICE_TOKEN > ~/ks_admin_token
# openstack-config --set /etc/keystone/keystone.conf DEFAULT admin_token 'YOUR_ADMIN_TOKEN'
其中的‘YOUR_ADMIN_TOKEN’为一个字符串,建议使用一串随机数据,这可以使用openssl命令生成。
比如,上面的使用可以使用如下形式:
# openstack-config --set /etc/keystone/keystone.conf DEFAULT admin_token $SERVICE_TOKEN
也可以手动更改:admin_token = bd05ff99e5ad38d6a32e
接着启动keystone服务:
# service openstack-keystone start
# chkconfig openstack-keystone on
查看进程启动的相关信息:
# ps auxf | grep -i keystone-all
root 3660 0.0 0.1 103236 872 pts/0 S+ 16:47 0:00 \_ grep -i keystone-all
keystone 3612 0.0 7.0 270100 34984 ? S 16:35 0:00 /usr/bin/python /usr/bin/keystone-all --config-file /etc/keystone/keystone.conf
检查日志文件中有无错误提示:
# grep ERROR /var/log/keystone/keystone.log
1.5、初始化新生成的keystone数据库
以管理员的身份初始化keystone数据库
[root@node2 ~]# keystone-manage db_sync
1.6、设定Keystone为API endpoint
在Openstack中,服务(service)指的是计算(nova)、对象存储(Swift)或映像(image)等,
而Horizon(web dashboard)依赖于Keystone registry中的API endpoint(某网络资源或
服务的访问路径,通常表现为URL)来访问这些服务,包括Keystone自身。因此,这
里需要将Keystone服务自身及访问路径(API endpoint)先加入到Keystone的registry中。
[root@node1 ~]# keystone service-create --name=keystone --type=identity --description="Keystone Identity Service"
+-------------+----------------------------------+
| Property | Value |
+-------------+----------------------------------+
| description | Keystone Identity Service |
| id | bfc764625a3e4ecab8f15c61c7d47b4d |
| name | keystone |
| type | identity |
+-------------+----------------------------------+
为上面新建的service添加endpoint。注意,其中的service_id的内容为上面service-create命令创建的service的id。
[root@node1 ~]# keystone endpoint-create \
--service_id bfc764625a3e4ecab8f15c61c7d47b4d \
--publicurl 'http://172.18.109.235:5000/v2.0' \
--adminurl 'http://172.18.109.235:35357/v2.0' \
--internalurl 'http://172.18.109.235:5000/v2.0'
+-------------+----------------------------------+
| Property | Value |
+-------------+----------------------------------+
| adminurl | http://172.18.109.235:35357/v2.0 |
| id | 084d23a9d9a64850b6f6f43e10510661 |
| internalurl | http://172.18.109.235:5000/v2.0 |
| publicurl | http://172.18.109.235:5000/v2.0 |
| region | regionOne |
| service_id | bfc764625a3e4ecab8f15c61c7d47b4d |
+-------------+----------------------------------+
如果本机启用了iptables,还需要确保对tcp的5000和35357端口的请求能正常通过。
例如,为iptables添加如下规则,记得测试完成后要保存规则至配置文件中。
# iptables -A INPUT -p tcp -m multiport --dports 5000,35357 -j ACCEPT
2 创建user、role及tenant
tenant是OpenStack的Keystone中的一个重要的术语,它相当于一个特定项目(project)
或一个特定的组织(origaniztion)等,它实现了资源或identity对象的隔离。用户(user)在
认证通过后即能访问资源,其通常会被直接关联至某tenant,因此看起来就像用户是包
含于tenant中的。角色(role)是权限的窗口,其可用于快速为一组用户完成相同的授权操作。
keystone可通过两种方式完成用户认证,一种为token认证,一种为credential(如用户名和密码等信息)认证。
前面的配置中,为Keystone的管理用户admin提供了token的认证方式,并以之完成了如前所述的服务创建等工作。
事实上,Keystone的重要功能之一便是提供用户认证,但为了便于认证信息的管理,其通常基于credential的方式进行。
风格统一起见,这里让admin用户基于后一种认证方式完成认证并执行管理工作,事实上,这也是Keystone服务配置的基本要求。
2.1 创建用于keystone管理的tenant、角色和用户
创建管理tenant,其名称为admin,描述信息为“Admin Tenant”。 (责任编辑:liangzh) |