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

简介:

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

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所示。


<a href=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客户端来实现远程管理了。

相关文章
|
3天前
|
存储 运维 持续交付
探索云计算的不同服务模型:IaaS、PaaS、SaaS
【5月更文挑战第23天】本文探讨了云计算的三大服务模型:IaaS、PaaS和SaaS。IaaS提供基础设施租赁,允许用户按需付费,聚焦业务创新而非设备维护。PaaS在IaaS基础上提供开发、测试和部署环境,简化应用管理,支持弹性扩展。SaaS则为用户提供可通过互联网访问的软件应用,实现多租户共享,提升工作灵活性。这三种模型满足了不同用户从基础设施到软件服务的多元化需求。
|
11天前
|
存储 边缘计算 弹性计算
云计算技术与服务
云计算技术与服务
95 1
|
11天前
|
安全 Devops 虚拟化
【专栏】虚拟化技术与云计算平台 OpenStack:硬件虚拟化、操作系统级虚拟化和容器化
【4月更文挑战第28天】本文探讨虚拟化技术原理,如硬件虚拟化、操作系统级虚拟化和容器化,以及开源云计算平台OpenStack如何利用这些技术提供优势。OpenStack支持多种虚拟化技术,具备开源灵活性、多租户架构、可扩展性、插件式设计和成本效益。未来,OpenStack将在容器化、DevOps、跨云策略和安全合规性方面发挥更大作用,助力企业数字化转型。
|
11天前
|
存储 数据库 虚拟化
《计算机网络简易速速上手小册》第7章:云计算与网络服务(2024 最新版)
《计算机网络简易速速上手小册》第7章:云计算与网络服务(2024 最新版)
42 2
|
11天前
|
弹性计算 运维 安全
阿里云轻量应用服务器:一款高效、稳定、安全的云计算服务
阿里云服务器ECS和轻量应用服务器有什么区别?轻量和ECS优缺点对比,云服务器ECS是明星级云产品,适合企业专业级的使用场景,轻量应用服务器是在ECS的基础上推出的轻量级云服务器,适合个人开发者单机应用访问量不高的网站博客、云端学习测试环境等,阿里云服务器网从从使用场景、适用人群、计费方式、系统镜像、网络带宽、运维管理等多方面来详细说下二者区别及如何选择
110 1
|
11天前
|
存储 边缘计算 监控
探索未来科技趋势:虚拟化技术与云计算平台OpenStack的概念与实践
在迅猛发展的信息技术时代,企业和组织对于高效、可扩展的计算资源需求日益增长。虚拟化技术和云计算平台OpenStack应运而生,为企业提供了一种灵活、可靠的解决方案。本文将深入探讨虚拟化技术与OpenStack的概念和实践,展示它们在现代科技领域中的重要性和应用前景。
100 3
|
11天前
|
存储 监控 搜索推荐
构建无边界的数字未来:虚拟化技术与云计算平台OpenStack的概念与实践
在当今数字化时代,虚拟化技术和云计算平台已经成为企业和组织实现数字化转型的关键驱动力。本文将介绍虚拟化技术的概念和作用,并重点探讨了开源云计算平台OpenStack在实践中的应用和优势。通过深入了解虚拟化技术和OpenStack平台,读者将能够更好地理解如何利用这些技术构建无边界的数字化未来。
|
11天前
|
存储 人工智能 调度
虚拟化技术与云计算平台 OpenStack:解锁数字化时代的无限潜能
在数字化时代,虚拟化技术和云计算平台已经成为企业和组织加速创新、提高效率的关键工具。本文将介绍虚拟化技术和OpenStack云计算平台的基本概念,探讨其在实践中的应用,以及它们如何协同作用,为企业带来无限的潜能与机会。
|
11天前
|
存储 分布式计算 并行计算
笔记:云计算定义
云计算简介及定义
93 0
|
11天前
|
存储 云计算 虚拟化
云计算|OpenStack|使用VMware安装华为云的R006版CNA和VRM---初步使用(二)
云计算|OpenStack|使用VMware安装华为云的R006版CNA和VRM---初步使用(二)
119 0