服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - 编程技术 - Elasticsearch集群多租户解决方案探索

Elasticsearch集群多租户解决方案探索

2023-11-29 16:34技术守护者 编程技术

Elasticsearch是一款强大的实时搜索和分析引擎,设计用于处理海量数据。它采用分布式架构,能够轻松地扩展以应对大规模数据的需求。通过使用JSON格式存储数据,Elasticsearch提供了灵活性,同时具备强大的查询语言,能够支持全文

Elasticsearch集群多租户解决方案探索

概述

Elasticsearch是一款强大的实时搜索和分析引擎,设计用于处理海量数据。它采用分布式架构,能够轻松地扩展以应对大规模数据的需求。通过使用JSON格式存储数据,Elasticsearch提供了灵活性,同时具备强大的查询语言,能够支持全文搜索、范围查询和聚合操作。它在处理大规模数据方面也是非常出色,适用于各种实时应用,如监控日志、数据分析等业务场景。

单租户面临的问题

这里的租户特指访问集群的用户

单租户场景:所有访问者使用相同用户身份操作集群数据

多租户场景:不同用户有不同的用户角色(Role),不同用户对不同资源有不同权限

  • 索引命名混乱:索引名称很随意,如果没有运维平台管理,从索引名称也无法追随到具体的业务归属。成为孤儿索引
  • 索引生命周期管理: 没有清理策略,每次都是发现集群容量到达水位,临时删除数据量大、历史归档的索引
  • 权限及隔离性:无,都是管理员,都有最大权限,索引无隔离性,索引被其他业务无意删除等问题

解决思路

对于上面的几个突出问题,我们可以通过一些规范+ES本身的能力,可以规避这些问题。

  • 命名规范:这里的索引命名很重要,这里的命名规则会作用到后面介绍的权限的配置,做好命名规范对集群管理和自动化都是基本要求,我司使用基于资产服务树体系结构命名。比如:{团队}_{产品线}_{服务组}_{服务}_xxx
  • 生命周期管理:ES自身的 index lifecycle policy 就可以满足我们的需求
  • 权限控制:ElasticSearch在6.8以后的版本中支持了RBAC(基于角色的访问控制),可以在role中配置集群、索引级别的权限,role绑定到user上,即可完成基于indexs级别的控制

实践流程

创建账户及权限

用户名: 可以使用标识业务属性的名称。比如我们公司以{app_name}作为用户名称

Role:指定权限。可以控制到索引,支持正则。

过kibana创建Role,并分配权限。(inno_sweetfans_*,只允许访问inno_sweetfans开通的索引)。

Elasticsearch集群多租户解决方案探索

创建User,关联Role。(User关联到Role之后,就获得了Role规定的权限)。

Elasticsearch集群多租户解决方案探索

索引生命周期管理

如果业务索引数据量过大,有索引归档需求,比如按照天、周、月切分索引的,可以配置索引生命周期

配置步骤

  • 添加 Index Lifecycle Policies
  • 创建index template
  • Index Lifecycle Policies 运用到 index template

具体流程

添加Index Lifecycle Policies策略,(Hot phase:多大开始切割;Delete phase:删除多久之前的)。

Elasticsearch集群多租户解决方案探索

创建索引模版。(index_patterns写索引前缀来匹配索引)。

Elasticsearch集群多租户解决方案探索

删除策略和索引模版关联。运用规则。

Elasticsearch集群多租户解决方案探索

方案总结

我们借助ES的RBAC机制构建了一个具有权限控制、资源隔离的环境,解决了单租户模式下的诸多问题,运用了集群的生命周期管理补充了对索引的管理。这个demo只是多租户的一个引子,真实场景需要考虑到业务的复杂性和运维性。

扩展和思考

低于6.8版本的ES不支持权限控制和索引生命周期管理,如何破局?

  • 安全:可以使用http-basic、search guard 等增加权限控制。
  • 生命周期管理:Curator。

通过权限控制虽然解决了资源的访问控制,但是资源抢占、业务优先级等问题依然存在?

  • ES支持对节点打标签(TAG), 可以通过索引和tag绑定做到资源独占。

ES运维过程中的问题?

  • 分片不合理,数据倾斜。
  • 故障定位复杂、分布式集群维护困难。
  • 太多了,不总结了,遇到问题,干就对了。

原文地址:https://www.toutiao.com/article/7302005189224186380/

延伸 · 阅读

精彩推荐
  • 编程技术浏览器为什么能唤起App的Activity?

    浏览器为什么能唤起App的Activity?

    我们没有主动声明Activity的class,那么系统是怎么为我们找到对应的Activity的呢?其实这里和正常的Activity启动流程是一样的,无非是if / else的实现不同而已。...

    咸鱼正翻身9112021-09-26
  • 编程技术学习使用 GDB 调试代码

    学习使用 GDB 调试代码

    故障排除的麻烦在于它很复杂。GNU调试器 并不是一个特别复杂的应用程序,但如果你不知道从哪里开始,甚至不知道何时和为何你可能需要求助于 GDB来进...

    Linux中国5132021-03-16
  • 编程技术描述性列表UL和DL的表现形式

    描述性列表UL和DL的表现形式

    同样的布局

      都可以实现,并且就最终的表现来看并不存在区别,那么这两者之间到底有什么区别呢?或者说使用哪一个来完成布局才更为合理呢...

      编程技术网6602023-05-23
  • 编程技术软件选型的那些事儿

    软件选型的那些事儿

    因为业务需求不同,有的需要使用消息中间件,有的需要使用缓存,有的需要用新框架,那么面对如此多的技术,我们到底该如何选型呢?...

    ITPUB5032021-03-18
  • 编程技术从0学ARM-汇编伪指令、LDS详解

    从0学ARM-汇编伪指令、LDS详解

    对于我们初学者来说要学习哪种风格呢?答案是肯定的,学习GNU风格的汇编代码,因为做Linux驱动开发必须掌握的linux内核、uboot,而这两个软件就是GNU风格的...

    一口Linux3752020-12-11
  • 编程技术三条命令搞定MacOS安装Greenplum

    三条命令搞定MacOS安装Greenplum

    本文主要介绍如何在MacOS上安装部署Greenplum,并给出了具体的操作步骤,安装过程也十分简单。对于Mac的用户而言,如果需要安装一些大数据的环境用于学...

    大数据技术与数仓11662021-08-25
  • 编程技术React开发人员面临的三大编码挑战

    React开发人员面临的三大编码挑战

    如今,React 是最流行的 Web 框架之一。越来越多的公司已经在使用 React,或者正在转向 React。...

    hackernoon.com10832021-12-03
  • 编程技术6个优秀的Git仓库管理实践

    6个优秀的Git仓库管理实践

    GitHub 拥有一个活跃的安全团队,最近,他们 发现了已提交到多个 Git 仓库中的特洛伊木马病毒,甚至仓库的所有者也偷偷溜走了。尽管我们无法控制其他人...

    Linux中国6142021-03-14