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

简介:

本节书摘来异步社区《OpenStack云计算实战手册(第2版)》一书中的第1章,第1.8节,作者: 【英】Kevin Jackson , 【美】Cody Bunch 译者: 黄凯 , 杜玉杰 责编: 杨海玲,更多章节内容可以访问云栖社区“异步社区”公众号查看。

1.8 定义服务端点

OpenStack云计算实战手册(第2版)
云环境中的每一个服务都运行在一个特定的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所示。


5

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,你可以从云环境内部连接到各个服务,而不需要外部地址空间,因此避免了交换数据的传输过程暴露在因特网上。这也带来了更好的安全性和更少的复杂性。
相关文章
|
4月前
|
IDE Linux KVM
云计算|OpenStack|社区版OpenStack---基本概念科普(kvm的驱动类别和安装)
云计算|OpenStack|社区版OpenStack---基本概念科普(kvm的驱动类别和安装)
86 0
|
4月前
|
Ubuntu Linux 网络安全
云计算|OpenStack|社区版OpenStack(实务操作---cloud-init的使用)
云计算|OpenStack|社区版OpenStack(实务操作---cloud-init的使用)
138 0
|
3月前
|
存储 边缘计算 监控
探索未来科技趋势:虚拟化技术与云计算平台OpenStack的概念与实践
在迅猛发展的信息技术时代,企业和组织对于高效、可扩展的计算资源需求日益增长。虚拟化技术和云计算平台OpenStack应运而生,为企业提供了一种灵活、可靠的解决方案。本文将深入探讨虚拟化技术与OpenStack的概念和实践,展示它们在现代科技领域中的重要性和应用前景。
62 3
|
3月前
|
存储 监控 搜索推荐
构建无边界的数字未来:虚拟化技术与云计算平台OpenStack的概念与实践
在当今数字化时代,虚拟化技术和云计算平台已经成为企业和组织实现数字化转型的关键驱动力。本文将介绍虚拟化技术的概念和作用,并重点探讨了开源云计算平台OpenStack在实践中的应用和优势。通过深入了解虚拟化技术和OpenStack平台,读者将能够更好地理解如何利用这些技术构建无边界的数字化未来。
|
3月前
|
存储 分布式计算 并行计算
笔记:云计算定义
云计算简介及定义
82 0
|
4月前
|
存储 云计算 虚拟化
云计算|OpenStack|使用VMware安装华为云的R006版CNA和VRM---初步使用(二)
云计算|OpenStack|使用VMware安装华为云的R006版CNA和VRM---初步使用(二)
80 0
|
4月前
|
存储 虚拟化 数据安全/隐私保护
云计算|OpenStack|使用VMware安装华为云的R006版CNA和VRM---初始安装(一)
云计算|OpenStack|使用VMware安装华为云的R006版CNA和VRM---初始安装(一)
152 0
|
4月前
|
Linux KVM 云计算
云计算|OpenStack|社区版OpenStack安装部署文档(十三--- 自制镜像---Linux和Windows镜像)
云计算|OpenStack|社区版OpenStack安装部署文档(十三--- 自制镜像---Linux和Windows镜像)
73 0
|
网络协议 Linux 网络安全
openstack 云平台一体化部署(超详细)
openstack 云平台一体化部署(超详细)
819 0
openstack 云平台一体化部署(超详细)
|
8月前
|
存储 弹性计算 资源调度
openstack组件部署 3
openstack组件部署