Elastic Search 中的多租户

Posted

技术标签:

【中文标题】Elastic Search 中的多租户【英文标题】:Multi tenancy in Elastic Search 【发布时间】:2017-06-11 14:31:33 【问题描述】:

我们计划为我们的多租户应用程序引入弹性搜索 (AWS)。我们有以下选择,

    每个租户使用一个索引 每个租户使用一种类型 所有租户通过自定义路由共享一个索引

根据此博客https://www.elastic.co/blog/found-multi-tenancy,第一个选项会导致内存问题。但不清楚其他选项。

如果我们使用第三个选项,那么似乎没有数据隔离。不确定安全性。

我相信第二种选择会更好,因为数据会被隔离。

帮助我确定使用多租户进行弹性搜索的最佳选择。

请注意,我们将利用 AWS 基础设施。

【问题讨论】:

在您的上下文中什么是租户? 每个客户端都被视为一个租户。 那么答案取决于我们正在谈论的租户/客户数量(1-10、10-100、100-1000,?)以及您期望的增长因素,即客户稳定还是您预计在接下来的 N 个月内会增加 x%?在决定采取哪种策略时,您需要考虑明天,而不是今天。 您还没有提到第四个选项:所有租户共享一个 基于时间的 索引和自定义路由。当您的客户数量会随着时间的推移而增加时,这是最灵活的选择 你好@SelvakumarPonnusamy,我想知道你选择了什么方法,我们也有问题,寻找过去的经验。如果您能分享您的经验,我将不胜感激。谢谢。 【参考方案1】:

我们现在正在考虑同样的问题,以下 Elasticsearch 的文章非常有帮助。

从这里开始:https://www.elastic.co/guide/en/elasticsearch/guide/current/scale.html

并通读随后的每一篇文章,直到你找到这篇文章:https://www.elastic.co/guide/en/elasticsearch/guide/current/finite-scale.html

以下两个让我大开眼界:

https://www.elastic.co/guide/en/elasticsearch/guide/current/faking-it.html https://www.elastic.co/guide/en/elasticsearch/guide/current/one-big-user.html

基本要点:

每个客户的别名 分片路由 现在您可以为大客户创建索引,为小客户创建共享索引,它们看起来都是独立的索引

【讨论】:

有什么方法可以自动管理哪个客户有专门的索引大小? 你可以看看curator。我不确定具体的用例,但我过去曾用它来完成几个维护类型的任务。此外,Elasticsearch API 非常复杂。也就是说,将客户从共享索引转移到零停机时间的专用索引的过程非常耗时 - 我不确定我是否会开始让它自动化(除非我误解了你的意思) .【参考方案2】:

这是一个太重要的链接,这里不提了: http://www.bigeng.io/elasticsearch-scaling-multitenant/

良好的架构困境,以及出色的性能分析/推理。

tldr;他们有围绕分片分配过滤构建的索引组,以在集群中的节点之间隔离负载

【讨论】:

今天的 HTTP 500。

以上是关于Elastic Search 中的多租户的主要内容,如果未能解决你的问题,请参考以下文章

ElasticTalk #22 Kibana 多租户介绍与实战

EEPlat PaaS中的多租户数据隔离模式

Play Framework 1.3.2 中的多租户特定国际化

oauth1 中的多租户身份验证问题

Keycloak 中的多租户可以在一个领域内完成吗?

Spring Boot 中的多租户