<本文转自 http://manual.blog.51cto.com/3300438/973921>

二、安装与配置Identity服务

2.3.定义服务

Keystone还担任着服务编录的角色,为其他的OpenStack系统指定哪里有相关的API终端位置。尤其是OpenStack的控制面板(Dashborad)更需要这个编录的服务。

备注:Keystone的服务编录类似于注册表,在这里我们把OpenStack所有服务的endpoint(终端)写入服务编录中,服务之间的调用需要经过Keystone的验证,并通过这个服务编录找到目标服务的终端(endpoint)位置。

使用keystone定义服务的方式有两种:

    使用模版文件定义服务
    使用后端数据库定义服务

使用模版文件的方式因为其比较简单,但除非是像DevStack这样的开发环境否则我们并不推荐使用这种模式。使用模版文件不支持通过keystone命令对服务编录执行CRUD操作,但不妨碍你使用service-list命令。而后端数据库则是一种更可靠的、高可用、提供数据冗余的方式。这节我们将描述如何使用后端数据库架构服务编录,你需要将/etc/keystone/keystone.conf文件中的[catalog]选项修改为如下这种配置:

[catalog]
driver = keystone.catalog.backends.sql.Catalog

Keystone服务编录条目的要素

对于目录中的每个服务条目,你都需要执行两个keystone操作:

1).使用keystone  service-create命令为服务创建数据库条目,命令选项如下:

--name                            服务名称(如:nova,ec2,glance,keystone)
--type                            服务类型(如:compute,ec2,image,idnetity)
--description                     服务描述(如:"Nova Compute Servece”)

2).使用keystone  endpoint-create命令创建数据库条目,描述客户端如果连接不同类型的服务,即指定各个服务的终端位置,命令选项如下:

--region                       你为OpenStack云取的区域名称(如:RegionOne)
--service_id                   通过keystone   service-create命令返回的服务ID(如:935fd37b6fa74b2f9fba6d907fa95825)
--publicurl                    服务终端(endpoint)对公网提供的URL(如:http://192.168.206.130:9292/v1或http://192.168.202.130:8774/v2%(tenat_id)s)
--internalurl                  服务终端对内提供的URL(典型案例是使用与publicurl相同的值)
--adminurl                     提供服务管理界面的URL

Keystone允许URL使用变量,这些变量在运行期间会自动替换为正确的,例如使用类似于tenant_id这样的变量。你可以使用%(变量名)或$(变量名)标识正在使用变量。

创建keystone服务与服务终端(service endpoints)

这里我们会定义服务及其终端。

定义Identity服务:

$ keystone --token 012345SECRET99TOKEN012345 \

--endpoint http://192.168.206.130:35357/v2.0/ \

service-create \

--name=keystone \

--type=identity \

--description="Keystone Identity Service"

Image text

$ keystone --token 012345SECRET99TOKEN012345 \

--endpoint http://192.168.206.130:35357/v2.0/ \

endpoint-create \

--region RegionOne \

--service_id=15c11a23667e427e91bc31335b45f4bd \

--publicurl=http://192.168.206.130:5000/v2.0 \

--internalurl=http://192.168.206.130:5000/v2.0 \

--adminurl=http://192.168.206.130:35357/v2.0

定义Compute服务,需要为不同的租户(tenant)需要独立的endpoint,这里我们使用上节创建的service租户(tenant)。

$ keystone --token 012345SECRET99TOKEN012345 \

--endpoint http://192.168.206.130:35357/v2.0/ \

service-create \

--name=nova \

--type=compute \

--description="Nova Compute Service"

Image text

$ keystone --token 012345SECRET99TOKEN012345 \

--endpoint http://192.168.206.130:35357/v2.0/ \

endpoint-create \

--region RegionOne \

--service_id=abc0f03c02904c24abdcc3b7910e2eed \

--publicurl='http://192.168.206.130:8774/v2/%(tenant_id)s' \

--internalurl='http://192.168.206.130:8774/v2/%(tenant_id)s' \

--adminurl='http://192.168.206.130:8774/v2/%(tenant_id)s'

Image text

定义卷(Volume)服务,不同的tenant需要独立的endpoint:


$ keystone --token 012345SECRET99TOKEN012345 \

--endpoint http://192.168.206.130:35357/v2.0/ \

service-create \

--name=volume \


--type=volume \

--description="Nova Volume Service"

Image text

$ keystone --token 012345SECRET99TOKEN012345 \  

--endpoint http://192.168.206.130:35357/v2.0/ \

endpoint-create \

--region RegionOne \

--service_id=1ff4ece13c3e48d8a6461faebd9cd38f \

--publicurl='http://192.168.206.130:8776/v1/%(tenant_id)s' \

--internalurl='http://192.168.206.130:8776/v1/%(tenant_id)s' \

--adminurl='http://192.168.206.130:8776/v1/%(tenant_id)s'

Image text

定义镜像服务(Image service):


$ keystone --token 012345SECRET99TOKEN012345 \

--endpoint http://192.168.206.130:35357/v2.0/ \

service-create \

--name=glance \

--type=image \

--description="Glance Image Service"

Image text

$ keystone --token 012345SECRET99TOKEN012345 \

--endpoint http://192.168.206.130:35357/v2.0/ \

endpoint-create \

--region RegionOne \

--service_id=7d5258c490144c8c92505267785327c1 \

--publicurl=http://192.168.206.130:9292/v1 \

--internalurl=http://192.168.206.130:9292/v1 \

--adminurl=http://192.168.206.130:9292/v1

Image text

定义EC2兼容服务:

$ keystone --token 012345SECRET99TOKEN012345 \

--endpoint http://192.168.206.130:35357/v2.0/ \

service-create \

--name=ec2 \

--type=ec2 \

--description="EC2 Compatibility Layer"

Image text

$ keystone --token 012345SECRET99TOKEN012345 \

--endpoint http://192.168.206.130:35357/v2.0/ \

endpoint-create \

--region RegionOne \

--service_id=181cdad1d1264387bcc411e1c6a6a5fd \

--publicurl=http://192.168.206.130:8773/services/Cloud \

--internalurl=http://192.168.206.130:8773/services/Cloud \

--adminurl=http://192.168.206.130:8773/services/Admin

Image text

定义Object Storage服务:


$ keystone --token 012345SECRET99TOKEN012345 \

--endpoint http://192.168.206.130:35357/v2.0/ \

service-create \

--name=swift \

--type=object-store \

--description="Object Storage Service"

Image text

$ keystone --token 012345SECRET99TOKEN012345 \


--endpoint http://192.168.206.130:35357/v2.0/ \

endpoint-create \

--region RegionOne \

--service_id=272efad2d1234376cbb911c1e5a5a6ed \

--publicurl 'http://127.0.0.1:8080/v1/AUTH_%(tenant_id)s' \

--adminurl 'http://127.0.0.1:8080/' \

--internalurl 'http://127.0.0.1:8080/v1/AUTH_%(tenant_id)s'

Image text

Keystone的日志文件为/var/log/keystone.log,如果需要排除可以查看该文件。


blog comments powered by Disqus

Published

26 April 2013

Tags