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

运维
通过使用JSON格式存储数据,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开通的索引)。

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

索引生命周期管理

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

配置步骤

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

具体流程

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

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

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

方案总结

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

扩展和思考

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

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

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

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

ES运维过程中的问题?

  • 分片不合理,数据倾斜。
  • 故障定位复杂、分布式集群维护困难。
  • 太多了,不总结了,遇到问题,干就对了。
责任编辑:姜华 来源: 今日头条
相关推荐

2021-02-18 09:28:32

Kubernetes开源SaaS

2024-03-28 09:46:50

2021-10-04 09:14:18

ElasticSear深度分页

2015-05-12 16:31:22

Elasticsear开源分布式搜索引擎

2021-11-22 16:21:28

Kubernetes 运维开源

2018-05-28 14:37:05

数据库NoSQL高并发

2013-09-24 14:23:37

华为eLTE方案华为eLTE华为

2010-10-21 21:35:35

联网监控多域视频H3C

2024-08-02 09:36:03

2024-03-26 12:08:53

分布式事务存储

2015-08-12 15:46:02

SaaS多租户数据存储

2024-05-23 07:59:42

RedisKey性能

2022-05-12 14:25:44

Kubernetesvcluster

2009-05-05 13:56:59

五舟intel四核

2010-12-23 11:01:19

集群FTPFTP代理

2012-08-03 11:21:50

应用交付深信服

2016-09-19 14:52:12

Hadoophdfs磁盘

2012-07-24 13:36:56

负载均衡WebSphere深信服

2010-01-15 20:33:22

WiFi解决方案

2023-11-01 07:55:44

K8sKubernetes
点赞
收藏

51CTO技术栈公众号