搜索
  • 软件
    • 概述
    • 项目导航
    • 示例配置
    • 安全
    • 入门
    • 路线图
    • 最新发布
    • 源代码
  • 用户
    • 概述
    • 电信与 NFV
    • 企业中的 OpenStack
    • 应用程序开发者与 ISV
    • Superuser 杂志
    • 用户调查
  • 社区
    • 欢迎!从这里开始
    • OpenStack 基金会
    • OpenStack Wiki
    • 用户组
    • 演讲者局
    • 支持公司
    • 招聘
    • 加入社区
  • Marketplace
  • 活动
    • 概述
    • OpenStack 峰会
    • 更多 OpenStack 活动
    • OpenStack Days
  • 学习
    • 培训
    • 获得认证
    • 提出技术问题
    • Superuser 杂志
    • 首脑会议视频
    • 分析报告
    • 新闻
    • 博客
  • 文档
  • 加入
    • 注册基金会会员
    • 赞助基金会
    • 更多关于基金会的信息
  • 登录

跨区域搜索

跨区域搜索¶

SearchLight 目前的目标是与 nova、glance、cinder 等一起作为 Openstack 控制平面的部署。一直以来都有很多兴趣让 SearchLight 索引和搜索 Openstack 区域之间的资源。

问题描述¶

典型的生产 Openstack 部署可以通过 扩展 和弹性提供多种方式,其中一些适用于所有服务,而另一些则特定于支持该功能的服务。

可用区 提供了一种在多台机器上分配资源(虚拟机、网络)的能力,这些机器可能位于独立的机架中,并具有独立的电源。可用区在资源数据中表示,并且已经是 SearchLight 进行索引的一部分。

区域 可以在地理位置上提供隔离(例如不同的数据中心)。在单个 Openstack 部署中运行多个区域的唯一要求是配置 Keystone 以在区域之间共享数据(例如使用主-主数据库复制)。所有其他服务彼此隔离,但 Keystone 能够提供每个区域中 nova-api 部署的 URL。Keystone 令牌通常不限定于特定区域;Horizon 当前将区域更改视为一项繁重的工作,因为它意味着刷新应在所选区域中可见的仪表板和面板。

多云 提供完全隔离,使得每个云完全独立,互不了解。Horizon 也支持这种模式(令人困惑的是,也将每个云称为“区域”),但更改“区域”需要登录到新区域。

Nova 单元 是 Nova 特有的功能,允许在单个区域内进行水平扩展。单元 以一种对用户来说基本透明的方式,将计算 API 扩展到多个数据库和消息队列。由于单元侧重于性能而非弹性,因此与此功能(尽管可能是另一个功能的基础)没有直接关系,因此本文档不考虑单元。

对于使用多个区域的部署,能够搜索聚合数据可以提供价值。虚构的 Region-A 中的 Nova 部署不知道虚构的 Region-B 中的资源,因此用户必须向每个区域发出请求才能获取信息。这使得 Horizon 有些笨拙(更改区域会触发重新加载页面以更改上下文,尽管身份验证状态会保留)。

这些是多区域云的潜在部署选项。以下选项按工作量和复杂性递增的顺序呈现。相对性能已注明。

  1. 像 Keystone 一样部署 Searchlight。API 端点可以存在于两个区域中。数据将在区域之间复制(通过某种外部过程 - Elasticsearch 明确不支持或不建议将集群拆分到地理位置上);SearchLight 索引将写入其本地集群,查询将针对本地集群运行。所有区域感知资源都将附加一个区域 ID。最佳性能,最困难的维护,零客户端复杂性。

  2. SearchLight 将在每个位置运行,但数据不会在位置之间复制(类似于 nova 和 glance 的工作方式)。为了允许跨区域搜索,Elasticsearch 配置了一个 tribe 节点,充当联合搜索节点;索引操作始终在本地执行。对 tribe 节点上的别名进行的搜索将充当对连接到 tribe 节点的集群中该别名的搜索。最差性能(与最慢的节点一样糟糕,但单个区域搜索可以优化),更易于维护,零客户端复杂性。

  3. 在两个区域中分别运行 Searchlight;要么让客户端显式地向两个区域发出查询,要么让 Searchlight 的 API 将请求回显到其他区域。这可能会强制按区域隔离结果(这可能是一个好的结果)。可变性能(可以根据可用性接收结果),最容易维护,复杂性推送到客户端。

应该注意的是,选项 1 和 2 提供了相似的功能体验;搜索将显示针对单个 API 端点运行,并返回多个区域中的数据(适当的排序和分页)。选项 3 将每个区域视为单独的区域;分页和排序将应用于每个区域的结果。即使在那个层面上,也需要做出决定,实际需要什么;UI 是否应该按区域隔离结果,或者合并视图更可取?

提议的变更¶

在奥斯汀的 Newton 会议上讨论后(在会议上提出了下面的替代方案),一致认为统一视图可能非常有用,但需要充分了解安全影响并进行更多测试。考虑到 Newton 的工作量,普遍的看法是可以通过客户端充分支持此功能。

因此,我们将记录使用 tribe 节点运行 Searchlight 的方法以及它带来的网络影响。我们还将向所有映射中添加 region_name。

这可能会在后续版本中扩展。

备选方案¶

为了启用使用 tribe 节点来支持多个区域的搜索

  1. 设置带有 Searchlight 的标准 devstack

  2. 部署配置为 多区域 的第二个 devstack(我在第二个本地 VM 上设置了它)

  3. 确保 searchlight.conf 包含正确的 region-name 在身份验证凭据部分

  4. 确保 Elasticsearch 集群名称不同(cluster.name: region-one)

  5. 检查 searchlight-manage 是否可以在每个区域中正确索引

  6. 在第一个 devstack VM 上的不同端口上设置一个 tribe 节点(同样使用不同的集群名称)。我使用了手动主机发现

  7. 配置一个从 tribe 节点运行的单独的 searchlight-api。对别名的搜索将返回两个集群的结果

这种技术将遇到导致我们禁用 多索引支持 的相同问题;如果索引映射不同,将导致错误。解决方案(正如我怀疑的那样)是确保即使没有将数据索引到给定的索引,索引之间的映射也是相同的。

除了设置 Elasticsearch 之外,这里需要的工作是让 searchlight-api 使用 tribe 节点(可能在每个区域中),而不是侦听器使用的集群(或者根据搜索上下文,两者都使用)。此更改相对较小。我们还需要让所有资源都感知区域(这是一种明智的更改),并确保 Searchlight 本身意识到自己的区域(这也是一种明智的更改)。

参考资料¶

  • Openstack 扩展 https://docs.openstack.org/openstack-ops/content/scaling.html

  • Elasticsearch ‘tribe’ 节点:https://elastic.ac.cn/guide/en/elasticsearch/reference/current/modules-tribe.html

此页面上次更新时间:2016-04-04 11:35:40
Creative Commons Attribution 3.0 License

除非另有说明,此文档根据 知识共享署名 3.0 许可 授权。请参阅所有 OpenStack 法律文件。

发现错误?报告错误 问题?
  • 指南
  • 安装指南
  • 用户指南
  • 配置指南
  • 操作和管理指南
  • API 指南
  • 贡献者指南
  • 语言
  • Deutsch (德语)
  • Français (法语)
  • Bahasa Indonesia (印尼语)
  • Italiano (意大利语)
  • 日本語 (日语)
  • 한국어 (韩语)
  • Português (葡萄牙语)
  • Türkçe (土耳其语)
  • 简体中文 (Simplified Chinese)

Searchlight Specs 0.0.1.dev53

  • Searchlight Train 规范
  • Searchlight Pike 规范
  • Searchlight Ocata 规范
  • Searchlight Newton 规范
    • 添加 Nova 服务器组插件
    • 跨区域搜索
    • 索引性能增强
    • 通知转发(到 Zaqar 等系统)
    • 管道架构
    • 支持 Nova 插件的 Nova 微版本
  • Searchlight Mitaka 规范

页面内容

  • 跨区域搜索
    • 问题描述
    • 提议的变更
      • 备选方案
    • 参考资料

OpenStack

  • 项目
  • OpenStack 安全
  • 常见问题
  • 博客
  • g
  • 新闻

社区

  • 用户组
  • 活动
  • 招聘
  • 公司
  • 贡献

文档

  • OpenStack 手册
  • 入门
  • API 文档
  • Wiki

品牌和法律

  • 徽标和指南
  • 商标政策
  • 隐私政策
  • OpenStack CLA

保持联系

OpenStack 项目根据 Apache 2.0 许可提供。Openstack.org 由 Rackspace 云计算提供支持。