《OpenStack云计算实战手册(第2版)》——1.8 定义服务端点

1.8 定义服务端点

云环境中的每一个服务都运行在一个特定的URL和端口上,也就是这些服务的端点地址。当一个客户端程序连到云环境中时,Keystone身份认证服务负责向其返回云环境中的各个服务的端点地址,以便客户端程序使用这些服务。为启用该功能,必须先定义这些端点。在云环境中,可以定义多个区域,可以把不同的区域理解为不同的数据中心,它们各自有不同的URL和IP地址。在OpenStack身份认证服务里,还可以在每一个区域里定义分别定义URL端点。在这里,只有一个区域,标识为RegionOne。

准备工作
在开始之前,必须确认已经登录到安装了OpenStack身份认证服务的OpenStack控制节点上,或者有一个已经连接到安装了OpenStack身份认证服务的服务器上的Ubuntu客户端。

登录到使用Vagrant创建的OpenStack控制节点,执行以下命令:

vagrant ssh controller

如果keystone客户端工具尚未安装,则可以通过如下命令在Ubuntu客户端上安装以便管理OpenStack身份认证服务:

sudo apt-get update  
sudo apt-get -y install python-keystoneclient

确保已经设置了正确的环境变量,能访问到OpenStack环境。

export ENDPOINT=172.16.0.200
export SERVICE_TOKEN=ADMIN
export SERVICE_ENDPOINT=http://${ENDPOINT}:35357/v2.0

操作步骤
通过运行keystone客户端命令在OpenStack身份认证服务中定义各个服务和服务端点,这些定义对应了云环境中运行的各个服务以及它们的URL。即使某些服务现在还没有在云环境中运行起来,也可以先在OpenStack身份认证服务中配置好,以便将来使用。通过如下步骤来在OpenStack环境中为各个服务定义端点。

1.现在来定义一些云环境中OpenStack身份认证服务需要知道的服务。

# OpenStack Compute Nova API Endpoint
keystone service-create \
   --name nova \  
   --type compute \  
   --description 'OpenStack Compute Service'  

# OpenStack Compute EC2 API Endpoint
keystone service-create \
   --name ec2 \    
   --type ec2 \  
   --description 'EC2 Service'  

# Glance Image Service Endpoint  
keystone service-create \
   --name glance \  
   --type image \  
   --description 'OpenStack Image Service'  

# Keystone Identity Service Endpoint  
keystone service-create \
   --name keystone \  
   --type identity \  
   --description 'OpenStack Identity Service'  

# Cinder Block Storage Endpoint  
keystone service-create \
   --name volume \
   --type volume \
   --description 'Volume Service'

2.逐个添加上述服务对应的服务端点。添加服务端点时需要用到各个服务的ID号,这些ID号在上一步命令操作之后会分别被返回输出。它们是配置服务端口URL的命令中的参数。

提示

OpenStack身份认证服务可以被配置成在三个URL上接受服务请求:一个面向公有的URL(被终端用户使用),一个面向管理员URL(被以管理员权限登录的用户使用,可以是一个不同的URL),以及一个面向内部的URL(当这些服务是在公有的URL的防火墙内提供服务时)。
对于下面的服务,我们根据自己的环境需求将公有的和内部的服务URL配置成相同的内容。

# OpenStack Compute Nova API
NOVA_SERVICE_ID=$(keystone service-list \
   | awk '/\ nova\ / {print $2}')  

PUBLIC="http://$ENDPOINT:8774/v2/\$(tenant_id)s"
ADMIN=$PUBLIC
INTERNAL=$PUBLIC  
keystone endpoint-create \
   --region RegionOne \  
   --service_id $NOVA_SERVICE_ID \  
   --publicurl $PUBLIC \  
   --adminurl $ADMIN \  
   --internalurl $INTERNAL

输出如图1-5所示。

https://yqfile.alicdn.com/5d1a4b8480c3f9df5a690f32ca5de33e81e57ef6.png" >

3.继续定义服务端点的剩余部分,具体步骤如下:

# OpenStack Compute EC2 API
EC2_SERVICE_ID=$(keystone service-list \
   | awk '/\ ec2\ / {print $2}')  

PUBLIC="http://$ENDPOINT:8773/services/Cloud"
ADMIN="http://$ENDPOINT:8773/services/Admin"
INTERNAL=$PUBLIC  

keystone endpoint-create \
   --region RegionOne \
   --service_id $EC2_SERVICE_ID \
   --publicurl $PUBLIC \
   --adminurl $ADMIN \
   --internalurl $INTERNAL  

# Glance Image Service
GLANCE_SERVICE_ID=$(keystone service-list \
   | awk '/\ glance\ / {print $2}')  

PUBLIC="http://$ENDPOINT:9292/v1"
ADMIN=$PUBLIC
INTERNAL=$PUBLIC  

keystone endpoint-create \
   --region RegionOne \
   --service_id $GLANCE_SERVICE_ID \
   --publicurl $PUBLIC \
   --adminurl $ADMIN \
   --internalurl $INTERNAL  

# Keystone OpenStack Identity Service
KEYSTONE_SERVICE_ID=$(keystone service-list \
   | awk '/\ keystone\ / {print $2}')  

PUBLIC="http://$ENDPOINT:5000/v2.0"
ADMIN="http://$ENDPOINT:35357/v2.0"
INTERNAL=$PUBLIC  

keystone endpoint-create \
   --region RegionOne \
   --service_id $KEYSTONE_SERVER_ID \
   --publicurl $PUBLIC \
   --adminurl $ADMIN \
   --internalurl $INTERNAL  

# Cinder Block Storage Service
CINDER_SERVICE_ID=$(keystone service-list \
   | awk '/\ volume\ / {print $2}')  

PUBLIC="http://$ENDPOINT:8776/v1/%(tenant_id)s"
ADMIN=$PUBLIC
INTERNAL=$PUBLIC  

keystone endpoint-create \
   --region RegionOne \
   --service_id $CINDER_SERVER_ID \
   --publicurl $PUBLIC \
   --adminurl $ADMIN \
   --internalurl $INTERNAL

工作原理
在OpenStack身份认证服务中配置服务和端点是通过keystone客户端命令来完成的。首先通过keystone客户端的service-create选项来添加服务,语法如下所示:

keystone service-create \
   --name service_name \
   --type service_type \
   --description 'description'

service_name可以是任意的名字和标签用以标识服务的类型。在定义端点的时候,可以通过这个名字来取得它对应的ID号。

type选项可以是下列几个选项中的一个:compute、object-store、image-service和identity-
service。注意,在这一步没有配置OpenStacke的对象存储服务(type是object-store)或Cinder。

description字段同样是一个任意字段,用于描述该服务。

添加好各个服务之后,通过keystone客户端的endpoint-create选项来定义各个服务对应的端点。只有这样,OpenStack身份认证服务才能知道如何访问它们。语法如下所示:

keystone endpoint-create \
   --region region_name \
   --service_id service_id \
   --publicurl public_url \
   --adminurl admin_url \
   --internalurl internal_url

service_id是在第一步里创建的服务的ID号。可以通过如下命令来列出所有服务和它们对应的ID号:

keystone service-list

OpenStack被设计为一个适合全球部署的系统,一个区域(region)可以表示一个实际的数据中心或者一个包含多个互相连通的数据中心的地域范围。在这里,仅定义一个区域——RegionOne。region字段可以是任意的名字,用于标识数据中心/地域,可以通过这个字段来告知客户端使用哪些区域。所有的服务都可以被配置成运行在三个不同URL之上,如下所述,这取决于人们希望如何来配置OpenStack云环境。

  • public_url是供终端用户连接的URL。在一个公有云环境中,公有的URL会被解析成公有的IP地址。
  • admin_url只用于管理员访问。在公有部署中,通常会配置一个和public_url不同的
  • admin_url。有些模块的管理服务有不同的URI,这就需要配置这个属性。
  • internal_url只用与本地私有网络。通过internal_url,你可以从云环境内部连接到各个服务,而不需要外部地址空间,因此避免了交换数据的传输过程暴露在因特网上。这也带来了更好的安全性和更少的复杂性。

提示

首先创建好初始化的keystone数据库,然后在OpenStack身份认证服务器上运行keystone-manage
db_sync命令,最后就可以使用keystone客户端来实现远程管理了。

时间: 2024-10-22 20:00:54

《OpenStack云计算实战手册(第2版)》——1.8 定义服务端点的相关文章

《OpenStack云计算实战手册(第2版)》一2.3 用MySQL配置OpenStack镜像服务

2.3 用MySQL配置OpenStack镜像服务 OpenStack云计算实战手册(第2版) 默认情况下,OpenStack镜像服务,即Glance,被配置使用本地SQL数据库存储.为了弹性扩展,必须配置一个中心的.可扩展且更具可靠的数据库层.因此,可使用MySQL数据库来达到这个目的. 准备工作 请在开始前确认已经登录到一个已经安装了OpenStack镜像服务的服务器上. 登录到使用Vagrant创建的OpenStack控制节点,执行以下命令: vagrant ssh controller

《OpenStack云计算实战手册(第2版)》一1.4 安装OpenStack身份认证服务

1.4 安装OpenStack身份认证服务 OpenStack云计算实战手册(第2版) 我们将会使用Ubuntu Cloud Archive安装和配置OpenStack身份认证服务,也就是Keystone项目.配置完成之后,连接到OpenStack云环境都需经过这里所安装的OpenStack身份认证服务. OpenStack身份认证服务的默认后台数据库是MySQL数据库. 准备工作 为保证运行的是Ubuntu Cloud Archive,必须配置Ubunut 12.04安装使用该服务. 我们将配

《OpenStack云计算实战手册(第2版)》一1.1 介绍

1.1 介绍 OpenStack云计算实战手册(第2版) OpenStack身份认证服务(Identity Service),即Keystone,是为OpenStack云环境中的用户的账户和角色信息提供认证和管理服务的.这是一个关键的服务,OpenStack云环境中所有服务之间的鉴权和认证都需要经过它,所以它也是OpenStack环境中第一个安装的服务.经OpenStack身份认证服务认证通过之后,它会返回一个在OpenStack各个服务之间传输用的鉴权密钥.接下来就可以用这个密钥来为某个具体服

《OpenStack云计算实战手册(第2版)》一导读

前 言 OpenStack云计算实战手册(第2版) OpenStack是一个用于构建公有云和私有云的开源软件.它是一个全球性的成功,由全球数千名人员开发和支持,并得到当今云计算领域巨头的鼎力支持. 本书设计的初衷在于帮助读者快速上手OpenStack,在理解的基础上将OpenStack更有信心地应用到自己的数据中心. 从VirtualBox中的测试安装,到使用Razor和Chef自动化安装脚本在产品环境中扩容,本书涵盖了安装和配置一个私有云的各种内容. 如何安装和配置OpenStakc的所有核心

《OpenStack云计算实战手册(第2版)》一第1章 Keystone OpenStack身份认证服务

第1章 Keystone OpenStack身份认证服务 OpenStack云计算实战手册(第2版) 本章将讲述以下内容: 使用VirtualBox和Vagrant创建一个沙盒环境 配置Ubuntu Cloud archive 安装OpenStack身份认证服务 创建租户 配置角色 添加用户 定义服务端点 配置服务对应的租户和用户

《OpenStack云计算实战手册(第2版)》一1.5 创建租户

1.5 创建租户 OpenStack云计算实战手册(第2版) 一个租户(tenant)在OpenStack里就是一个项目.在创建一个用户时必须首先为该用户分配一个租户,否则将无法创建此用户,所以首先要创建租户.在这一节中,将为用户创建一个名为cookbook的租户. 准备工作 在开始之前,必须确认已经登录到已经安装了OpenStack身份认证服务的OpenStack控制节点上,或者有一个已经连接到安装了OpenStack身份认证服务的服务器上的Ubuntu客户端. 执行以下命令,登录到使用Vag

《OpenStack云计算实战手册(第2版)》一1.6 配置角色

1.6 配置角色 OpenStack云计算实战手册(第2版) 角色是分配给一个租户中的用户的权限.在这里配置两个角色,一个用于管理云环境的admin角色和另一个用于分配给使用云环境的普通用户的Member角色. 准备工作 在开始之前,必须确认已经登录到已经安装了OpenStack身份认证服务的OpenStack控制节点上,或者有一个已经连接到安装了OpenStack身份认证服务的服务器上的Ubuntu客户端. 登录到使用Vagrant创建的OpenStack控制节点,执行以下命令: vagran

《OpenStack云计算实战手册(第2版)》一1.3 配置Ubuntu Cloud Archive

1.3 配置Ubuntu Cloud Archive OpenStack云计算实战手册(第2版)Ubuntu 12.04 LTS(本书使用的版本)提供两个可安装OpenStack的资源库.标准资源库所配置的是Essex版,本书写作时已可以通过设置Ubuntu Cloud Archive支持Grizzly版.我们下面将使用Ubuntu Cloud Archive提供的Grizzly发布版本来安装和配置OpenStack身份认证服务(以及其他服务). 准备工作确保登录到安装OpenStack身份认证

《OpenStack云计算实战手册(第2版)》一2.8 查看共享镜像

2.8 查看共享镜像 OpenStack云计算实战手册(第2版)当使用member-create选项时,可以查看为某个租户共享了哪些镜像,允许在OpenStack环境中管理和控制哪些用户可以访问什么类型的镜像. 准备工作要做这个实验,应确认已经登录到一台Ubuntu客户机,且已经具有glance工具.如果没有该工具,可通过以下方法安装: sudo apt-get update sudo apt-get -y install glance-client 为了保证环境变量设置正确,admin用户和密

《OpenStack云计算实战手册(第2版)》一2.6 注册远程存储的镜像

2.6 注册远程存储的镜像 OpenStack云计算实战手册(第2版)OpenStack镜像服务提供了一种机制,它可以远程添加一个存储在外部位置的镜像文件,利用这种机制,可以很方便地实现在私有云中使用第三方服务器中上传的镜像文件. 准备工作要做这个实验,应确认已经登录到一台Ubuntu 客户机,且已经具有glance工具.如果没有该工具,可通过以下方法安装: sudo apt-get update sudo apt-get -y install glance-client 为了保证环境变量设置正