Elasticsearch是一款强大的实时搜索和分析引擎,设计用于处理海量数据。它采用分布式架构,能够轻松地扩展以应对大规模数据的需求。通过使用JSON格式存储数据,Elasticsearch提供了灵活性,同时具备强大的查询语言,能够支持全文搜索、范围查询和聚合操作。它在处理大规模数据方面也是非常出色,适用于各种实时应用,如监控日志、数据分析等业务场景。
这里的租户特指访问集群的用户
单租户场景:所有访问者使用相同用户身份操作集群数据
多租户场景:不同用户有不同的用户角色(Role),不同用户对不同资源有不同权限
对于上面的几个突出问题,我们可以通过一些规范+ES本身的能力,可以规避这些问题。
用户名: 可以使用标识业务属性的名称。比如我们公司以{app_name}作为用户名称
Role:指定权限。可以控制到索引,支持正则。
通过kibana创建Role,并分配权限。(inno_sweetfans_*,只允许访问inno_sweetfans开通的索引)。
创建User,关联Role。(User关联到Role之后,就获得了Role规定的权限)。
如果业务索引数据量过大,有索引归档需求,比如按照天、周、月切分索引的,可以配置索引生命周期
添加Index Lifecycle Policies策略,(Hot phase:多大开始切割;Delete phase:删除多久之前的)。
创建索引模版。(index_patterns写索引前缀来匹配索引)。
删除策略和索引模版关联。运用规则。
我们借助ES的RBAC机制构建了一个具有权限控制、资源隔离的环境,解决了单租户模式下的诸多问题,运用了集群的生命周期管理补充了对索引的管理。这个demo只是多租户的一个引子,真实场景需要考虑到业务的复杂性和运维性。
低于6.8版本的ES不支持权限控制和索引生命周期管理,如何破局?
通过权限控制虽然解决了资源的访问控制,但是资源抢占、业务优先级等问题依然存在?
ES运维过程中的问题?