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

相关文章
|
存储 Serverless 数据库
科普文:云计算服务类型IaaS, PaaS, SaaS, BaaS, Faas说明
本文介绍了云计算服务的几种主要类型,包括IaaS(基础设施即服务)、PaaS(平台即服务)、SaaS(软件即服务)、BaaS(后端即服务)和FaaS(函数即服务)。每种服务模式提供了不同的服务层次和功能,从基础设施的提供到应用的开发和运行,再到软件的交付使用,满足了企业和个人用户在不同场景下的需求。文章详细阐述了每种服务模式的特点、优势和缺点,并列举了相应的示例。云计算服务的发展始于21世纪初,随着互联网技术的普及,这些服务模式不断演进,为企业和个人带来了高效、灵活的解决方案。然而,使用这些服务时也需要注意服务的稳定性、数据安全性和成本等问题。
11311 5
|
安全 API 网络安全
OpenStack的 网络服务(Neutron)
【8月更文挑战第23天】
979 10
|
边缘计算 自动驾驶 物联网
探索云计算的边缘计算:定义、优势及应用前景
探索云计算的边缘计算:定义、优势及应用前景
|
边缘计算 安全 网络安全
|
存储 安全 数据库
阿里巴巴的云计算平台有哪些服务?
【7月更文挑战第1天】阿里巴巴的云计算平台有哪些服务?
1551 57
|
存储 安全 网络安全
云端盾牌:云计算时代的网络安全守护在数字化浪潮中,云计算以其高效、灵活的特性成为企业转型的加速器。然而,伴随其迅猛发展,网络安全问题亦如影随形,成为悬在每个组织头顶的达摩克利斯之剑。本文旨在探讨云计算服务中的网络安全挑战,分析信息安全的重要性,并提出相应对策,以期为企业构建一道坚实的云端防护网。
在当今这个数据驱动的时代,云计算已成为推动创新与效率的关键力量。它允许用户随时随地访问强大的计算资源,降低了企业的运营成本,加速了产品上市时间。但随之而来的网络威胁也日益猖獗,尤其是对于依赖云服务的企业而言,数据泄露、身份盗用等安全事件频发,不仅造成经济损失,更严重损害品牌信誉。本文深入剖析云计算环境中的安全风险,强调建立健全的信息安全管理机制的重要性,并分享一系列有效策略,旨在帮助企业和个人用户在享受云服务带来的便利的同时,也能构筑起强有力的网络防线。
|
机器学习/深度学习 安全 网络安全
云端盾牌:云计算时代的网络安全守护在这个数字脉搏加速跳动的时代,云计算以其高效、灵活的特性,成为推动企业数字化转型的强劲引擎。然而,正如每枚硬币都有两面,云计算的广泛应用也同步放大了网络安全的风险敞口。本文旨在探讨云计算服务中网络安全的关键作用,以及如何构建一道坚不可摧的信息防线,确保数据的安全与隐私。
云计算作为信息技术领域的革新力量,正深刻改变着企业的运营模式和人们的生活。但在享受其带来的便利与效率的同时,云服务的安全问题不容忽视。从数据泄露到服务中断,每一个安全事件都可能给企业和个人带来难以估量的损失。因此,本文聚焦于云计算环境下的网络安全挑战,分析其根源,并提出有效的防护策略,旨在为云服务的安全使用提供指导和参考。
270 8
|
存储 消息中间件 算法
深入解析OpenStack Cinder:块存储服务详解
本文介绍了OpenStack及其块存储服务Cinder。OpenStack是一个开源云计算管理平台,提供基础设施即服务(IaaS),核心服务包括计算、网络、存储等。Cinder主要用于为虚拟机提供持久性块存储,具备多种功能,如卷操作、备份、快照及与实例的交互等。此外,还详细介绍了Cinder的工作流程、命令行操作及不同存储插件的使用。
1794 8
|
存储 Linux 云计算
OpenStack云计算平台搭建
OpenStack 是一个开源的云平台管理项目,通过多个核心组件实现公有云、私有云和混合云的构建与管理。自2010年由NASA和Rackspace联合发起以来,已有众多企业和个人参与开发。OpenStack 简化了云部署流程,支持计算、存储和网络资源的高效管理,并兼容多种虚拟化技术和容器。最新版本为Xena,广泛应用于各行各业,如思科、英特尔等公司。
1182 0
|
安全 云计算
云计算演进问题之自服务能力在云计算中扮演角色如何解决
云计算演进问题之自服务能力在云计算中扮演角色如何解决
154 3