云服务器内容精选

  • 业务影响 单节点使用率超过85%:会导致新的分片无法分配。 单节点使用率超过90%:Elasticsearch会尝试将对应节点中的分片迁移到其他磁盘使用率比较低的数据节点中。 单节点使用率超过95%:系统会对Elasticsearch集群中对应节点里每个索引强制设置“read_only_allow_delete”属性,此时该节点上的所有索引将无法写入数据,只能读取和删除对应索引。 单节点使用率过高,可通过扩容操作动态调整集群节点的数量和容量。新扩容的节点不会立即分配索引,可打开cerebro看下节点索引分配情况,做进一步观察,也可以修改“indices.recovery.max_bytes_per_sec”和“cluster.routing.allocation.cluster_concurrent_rebalance”两个参数值增加索引分配速度。
  • CSS服务中如何清理Elasticsearch索引数据? 自动化定期清理 可以写定时任务调用清理索引的请求,定期执行。CSS支持Opendistro Index State Management,可以参考案例通过索引生命周期实现索引存算分离设置定期清理数据。 Opendistro Index State Management的详细说明请参见:https://opendistro.github.io/for-elasticsearch-docs/docs/im/ism/ 手动清理 登录Kibana,在Dev tools里执行DELETE /索引名命令。 登录Cerebro,过滤检索出目标索引名,单击索引名称,选择“delete index” 并在弹框中选择 “Confirm”。 图1 Cerebro删除索引 父主题: CSS集群搜索引擎使用
  • 方案优势 以下是使用Elasticsearch加速关系型数据库的方案优势: 全文检索能力提升:Elasticsearch是一个提供了强大的全文检索功能的搜索引擎。关系型数据库通常不擅长进行全文检索,而Elasticsearch可以有效地解决这一问题。 高并发Ad Hoc查询:Elasticsearch设计用于处理大量的并发查询请求,特别是在Ad Hoc查询场景下,它能够提供快速的响应时间,从而满足高并发环境下的查询需求。 实时数据同步:通过华为云 数据复制服务 DRS,可以实现MySQL数据库中的数据实时同步到Elasticsearch,确保数据的一致性和实时性。 简化的数据迁移和索引创建:在Elasticsearch中,可以创建与MySQL数据库表结构相对应的索引,简化了数据迁移和索引管理的复杂性。 灵活的查询语言:Elasticsearch提供了灵活的查询语言,支持复杂查询的构建,如范围查询、模糊查询、聚合查询等,这在关系型数据库中可能需要更复杂的SQL语句来实现。 统计分析能力:Elasticsearch的聚合功能可以快速进行数据统计和分析,如年龄分布统计等,这在关系型数据库中可能需要更多的计算资源和时间。 安全性和稳定性:通过配置安全模式的Elasticsearch集群和MySQL数据库,以及使用SSL安全连接,可以保证数据传输的安全性和系统的稳定性。 易于监控和维护:Elasticsearch提供了丰富的监控工具和API,使得系统维护和性能监控变得更加容易。 扩展性:Elasticsearch集群可以根据业务需求进行水平扩展,增加更多的节点来处理更大的数据量和查询负载。 这些优势使得Elasticsearch集群成为关系型数据库在处理全文检索和高并发Ad Hoc查询时的有效补充。
  • 前提条件 已具备安全模式的Elasticsearch集群和MySQL数据库,且两者在同一个VPC与安全组内。 MySQL数据库中已经有待同步的数据。 本文以如下表结构和初始数据举例。 MySQL中创建一个学生信息表: CREATE TABLE `student` ( `dsc` varchar(100) COLLATE utf8mb4_general_ci DEFAULT NULL, `age` smallint unsigned DEFAULT NULL, `name` varchar(32) COLLATE utf8mb4_general_ci NOT NULL, `id` int unsigned NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; MySQL中插入3个学生的初始数据: INSERT INTO student (id,name,age,dsc) VALUES ('1','Jack Ma Yun','50','Jack Ma Yun is a business magnate, investor and philanthropist.'), ('2','will smith','22','also known by his stage name the Fresh Prince, is an actor, rapper, and producer.'), ('3','James Francis Cameron','68','the director of avatar'); Elasticsearch集群中已完成索引创建,且与MySQL中表相对应。 本文执行如下命令创建Elasticsearch集群的索引。 PUT student { "settings": { "number_of_replicas": 0, "number_of_shards": 3 }, "mappings": { "properties": { "id": { "type": "keyword" }, "name": { "type": "short" }, "age": { "type": "short" }, "desc": { "type": "text" } } } } 其中的“number_of_shards”与“number_of_replicas”需根据具体业务场景进行配置。
  • 应用场景 使用Elasticsearch加速关系型数据库,可以解决关系型数据库在某些方面的局限性,实现更加高效和智能的数据处理和分析。常用于以下应用场景: 电子商务平台:快速搜索商品,提供个性化推荐,实时监控用户行为和交易数据。 内容管理系统:对大量文档和内容进行高效检索,支持复杂的查询和数据分析。 金融服务:实时监控交易数据,进行风险分析和欺诈检测。 社交媒体分析:对用户生成的内容进行情感分析,趋势和影响力评估。 客户关系管理:快速检索客户信息,分析客户行为,提供定制化服务。 日志和事件监控:收集和分析大量日志数据,实时监控系统状态和安全事件。 医疗健康记录:快速检索和分析患者记录,支持临床决策和研究。
  • 应用场景 Elasticsearch是一个高度可扩展的开源搜索和分析引擎,支持用户通过自定义规则对搜索结果进行排序。自定义排序允许开发者根据业务需求,定义特定的排序规则,以优化搜索结果的相关性和用户体验。该方案可以用于以下场景: 电子商务:根据销量、用户评价、价格等因素对商品进行排序。 内容管理:根据阅读量、发布时间对文章或博客帖子进行排序。 金融服务:根据交易金额、频率或风险评分对交易记录进行排序。 客户支持:根据工单的紧急程度或打开时间对客户请求进行排序。
  • 方案架构 通过自定义规则对搜索结果进行排序是通过Elasticsearch的排序API实现的。通过调用排序API查询数据,实现数据按自定义规则排序。 自定义规则查询有两种方式。 用绝对好评率计算总分,按照总分由高到低的顺序排列出查询结果。 总分 = 匹配得分 * (好评率 * 绝对因子) 匹配得分:根据查询结果计分,内容匹配记1分,否则记0分,得分之和即为匹配得分。 好评率:从匹配项的数据内容中获取好评率的值,一般指单条数据的评分。 绝对因子:自定义的好评比例。 用相对好评率计算总分,按照总分由高到低的顺序排列查询结果。 总分 = 匹配得分 * (好评率 * 相对分数) 匹配得分:根据查询结果计分,内容匹配记1分,否则记0分,得分之和即为匹配得分。 好评率:从匹配项的数据内容中获取好评率的值,一般指单条数据的评分。 相对分数:自定义一个好评率阈值,当好评率大于阈值时,返回一个自定义的相对分数;当好评率小于等于阈值时,返回另一个自定义的相对分数。通过这种方式可以避免异常好评率对查询结果的影响。
  • 应用场景 本文以Elasticsearch、Filebeat、Logstash和Kibana为例,搭建一个统一日志管理平台。使用Filebeat采集E CS 中的日志,发送到Logstash进行数据处理,再存储到Elasticsearch中,最后通过Kibana进行日志的可视化查询与分析。该方案可以用于以下场景: 日志管理:集中管理应用程序和系统日志,快速定位问题。 安全监控:检测和响应安全威胁,进行入侵检测和异常行为分析。 业务分析:分析用户行为,优化产品和服务。 性能监控:监控系统和应用程序性能,实时发现瓶颈。
  • 方案架构 ELKB(Elasticsearch、Logstash、Kibana、Beats)提供了一整套日志场景解决方案,是目前主流的一种日志系统。 Elasticsearch是一个开源分布式的搜索和分析引擎,用于存储、搜索和分析大量数据。 Logstash是一个服务器端的数据管道,负责收集、解析和丰富数据后,将其发送到Elasticsearch。 Kibana为Elasticsearch提供一个开源的数据分析和可视化平台,用于对Elasticsearch中的数据进行搜索、查看和交互。 Beats:轻量级的数据收集器(如Filebeat、Metricbeat等),安装在服务器上,负责收集和转发数据到Logstash。 使用Elasticsearch和Logstash构建日志管理平台的方案架构如图1所示。 图1 ELKB架构 数据收集 Beats作为数据收集器,负责从各种源收集数据并发送到Logstash。 Logstash可以独立收集数据,或从Beats接收数据,对数据进行过滤、转换和增强。 数据处理 Logstash在将数据发送到Elasticsearch之前,对数据进行必要的处理,如解析结构化日志、过滤无用信息等。 数据存储 Elasticsearch作为核心存储组件,Elasticsearch索引和存储来自Logstash的数据,提供快速搜索和数据检索功能。 数据分析与可视化 使用Kibana对Elasticsearch中的数据进行分析和可视化,创建仪表板和报告,以直观展示数据。 ELKB系统中各组件的版本兼容性请参见https://www.elastic.co/support/matrix#matrix_compatibility。
  • 约束限制 一次只能选择一个节点进行替换。 节点替换过程会按照原节点的ID、IP地址、规格、AZ等信息重建节点。 节点替换过程中不会保留手动操作。例如被替换的节点手动加过回程路由,那么节点替换完成后,需要重新添加回程路由。 当替换的是数据节点或冷数据节点时,需要确认集群或节点是否满足以下条件。 替换数据节点或冷数据节点的过程中,会先将被替换节点的数据迁移到其他数据节点,因此集群中每个索引的副本数和主分片数之和的最大值要小于集群的数据节点数量和冷数据节点数量之和。替换过程耗时跟数据迁移到其他节点的耗时强相关。 版本号在7.6.2以前的集群,不能有close的索引,否则不支持替换数据节点或冷数据节点。 被替换的数据节点或冷数据节点所在的AZ需要有两个及以上的数据节点或冷数据节点。 当替换的数据节点或冷数据节点所在集群不存在Master节点时,则集群中可用的数据节点数量和冷数据节点数量之和要大于等于3。 当替换的是Master节点或Client节点时,则不受以上四条约束。 当替换的是故障节点时,不管什么节点类型都不受以上四条约束。因为故障节点不包含在“_cat/nodes”中。
  • 约束限制 为了保证业务的连续性,集群中数据节点和冷数据节点的个数之和要不小于3。 切换过程中会逐一下线节点再新建节点,需要保证单节点下线后,其余节点的磁盘容量能够接纳该节点的所有数据。 集群中索引的最大主备分片数能够被分配到剩余数据节点和冷数据节点中,防止切换过程中出现节点下线后副本无法分配的情况。即“索引的主备分片数的最大值+1 ≤ 切换前的数据节点数和冷数据节点之和”。 切换前建议做好数据备份,防止升级故障数据丢失。 当集群处于切换可用区过程中,部分节点的AZ属性可能已经更改,此时节点的可用区可能会显示出中间状态,等待任务结束后,集群的可用区显示将恢复正常状态。 可用区高可用改造是基于原可用区进行扩展,切换时必须保留原可用区。如果是单AZ改造成两AZ或单AZ改造成三AZ的场景,必须所有节点一起改造;如果是两AZ改造成三AZ的场景,则既支持同时操作集群中所有类型的节点,也支持单独操作集群中某一类型的节点(例如,在已有两AZ的集群中,可以只对Master节点进行切换可用区,将Master节点形变为三AZ,而其他节点依旧是两AZ)。高可用改造会尽可能挪动最小的节点重建集群,改造完成后,因未挪动节点的yml配置更新,需要重启集群才能生效。 可用区平移切换一次只能迁移一个可用区,切换时选择的可用区只能有一个不同。平移切换支持同时操作集群中所有类型的节点,或者单独操作集群中某一类型的节点(例如,在已有两AZ的集群中,可以只对Master节点进行平移切换,将Master节点从当前AZ迁移到另一个AZ,而其他节点依旧在当前AZ)。除了单AZ平移切换场景,其他的多AZ平移切换场景均需要重启集群生效。
  • 背景信息 云搜索服务 用opendistro_security安全插件对外提供安全集群能力,opendistro_security安全插件是基于RBAC(Role-Based Access Control)模型构建。RBAC包括三个重要核心概念:用户(User)、权限(Action)、角色(Role)。RBAC简化了用户和权限的关系,降低了权限管理的难度,方便权限扩展易于维护。三者之前的关系如下图所示。 图1 用户、权限和角色 表1 OpenSearch Dashboard创建用户和授权 参数 描述 Permission 权限:单个动作,例如创建索引(例如indices:admin/create)。 Action group 操作组:表示一组权限。例如,预定义的SEARCH操作组授权角色使用_search和_msearchAPI。 Role 角色:定义为权限或操作组的组合,包括对集群,索引,文档或字段的操作权限。 User 用户:可以向Elasticsearch集群发出操作请求。用户具有凭证(例如,用户名和密码)、零个或多个后端角色以及零个或多个自定义属性。 Role mapping 角色映射:用户在成功进行身份验证后会担任角色,角色映射,就是将角色映射到用户(或后端角色)。例如,kibana_user(角色)到jdoe(用户)的映射意味着John Doe在获得kibana_user身份验证后获得了所有权限。同样,all_access(角色)到admin(后端角色)的映射意味着具有后端角色admin(来自LDAP / Active Directory服务器)的任何用户都获得了all_access身份验证后的所有权限。您可以将每个角色映射到许多用户和/或后端角色。 在OpenSearch Dashboard界面的Security菜单中,您可以控制用户在OpenSearch集群中的权限,实现集群、索引、文档和字段四个级别的细粒度访问权限控制。 支持添加或删除集群的用户,并能够将用户映射到角色,实现用户关联角色权限。 角色映射功能允许配置角色的成员,通过用户名、后端角色和主机名将用户分配给相应的角色。支持为每种角色配置集群访问权限、索引和文档的访问权限,以及OpenSearch Dashboard的使用权限。 有关安全集群的更多安全配置信息以及详细的操作指导,可以参考Elasticsearch的安全模式官方介绍。
  • 场景描述 表1 变更规格场景 场景 描述 约束限制 升级节点规格 基于某一节点类型变更集群的“节点规格”。变更规格过程中,会依次对节点进行关机,完成更改后再依次开机,是一个滚动的变更过程。 一般用于小规格变更为大规格,常用于如下场景: 当新增索引或分片分配的处理时间过长,或管理集群各个节点的协调、调度不足时,可以升级Master节点的“节点规格”保证集群的正常使用。 当数据节点任务分发量、结果汇聚量过大时,可以升级Client节点的“节点规格”。 当数据的写入与查询突然变得缓慢时,可以升级数据节点的“节点规格”提高数据节点的查询与写入效率。 当存在冷数据查询缓慢时,可以升级冷数据节点的“节点规格”,提高数据查询的效率。 变更节点规格也支持将大规格更改为小规格,但是此变更会降低集群的处理性能,进而影响业务能力,请谨慎使用。 不支持同时修改节点规格和磁盘类型。 变更过程中,Kibana不可用。 变更磁盘类型 基于某一节点类型变更集群的节点存储类型。通过重建节点的方式删除原类型的磁盘,再挂载新类型的磁盘,实现更改节点的磁盘类型。 只有数据节点和冷数据节点支持变更磁盘类型,且数据节点和冷数据节点之和必须大于等于3。 本地盘不支持修改磁盘类型。 不支持同时修改节点规格和磁盘类型。 变更过程中,Kibana不可用。 在集群数据量比较大的情况下,变更节点规格耗时比较长,建议在业务低峰期更改节点规格,利于更快完成规格更改。
  • 约束限制 缩容是通过下线节点减少节点数量,为了降低业务影响,建议在业务低峰期进行缩容操作。 缩容过程会涉及数据迁移,将要下线的节点数据迁移到其他节点上,数据迁移的超时阈值为5小时。当超过5小时数据还未迁移完成,那么缩容会失败。建议在集群数据量较大的情况下,分多次进行缩容。 要确保缩容之后的磁盘使用量小于80%,且集群每个节点类型中每个AZ的节点数至少为1。 关于跨AZ的集群,在不同AZ中同类型节点个数的差值要小于等于1。 当集群没有Master节点时,每次缩容的数据节点和冷数据节点个数之和要小于缩容前数据节点和冷数据节点个数之和的一半,缩容后的数据节点和冷数据节点个数之和要大于索引的最大副本个数。 当集群有Master节点时,每次缩容的Master节点个数要小于当前Master节点总数的一半,缩容后的Master节点个数必须是奇数且不小于3。 当集群没有Master节点时,数据节点数量和冷数据节点数量之和大于等于3时才支持缩容。当集群有Master节点时,数据节点数量大于等于2时才支持缩容。当集群不满足缩容条件却想减少集群节点时,建议新建集群,备份与恢复Elasticsearch集群数据迁移集群数据。 当一个集群包含的节点类型不同时,各节点类型支持的节点数量不同,缩容节点数量时请参考表2。 表2 集群的节点数量取值说明 一个集群包含的节点类型 节点数量的取值范围 ess ess:1~32 ess、ess-master ess:1~200 ess-master:3~9的奇数 ess、ess-client ess:1~32 ess-client:1~32 ess、ess-cold ess:1~32 ess-cold:1~32 ess、ess-master、ess-client ess:1~200 ess-master:3~9的奇数 ess-client:1~32 ess、ess-master、ess-cold ess:1~200 ess-master:3~9的奇数 ess-cold:1~32 ess、ess-client、ess-cold ess:1~32 ess-client:1~32 ess-cold:1~32 ess、ess-master、ess-client、ess-cold ess:1~200 ess-master:3~9的奇数 ess-client:1~32 ess-cold:1~32 说明: ess:数据节点,即创建集群时必配的节点类型,其他3种节点类型都是基于业务需要可选的类型。 ess-master:Master节点。 ess-client:Client节点。 ess-cold:冷数据节点。
  • 约束限制 CSS开启公网访问后,会使用到EIP和带宽资源,涉及相关资源费用。 仅Elasticsearch集群版本≥6.5.4和OpenSearch集群才支持开启“安全模式”。 公网访问和终端节点服务使用的是同一个负载均衡。当集群开启了公网访问白名单,由于白名单是作用在负载均衡上面,将会同时限制公网访问集群和内网通过VPCEP访问集群的IP地址。此时需要在公网访问白名单中添加一个网络白名单“198.19.128.0/17”,通过该白名单用来放通经过VPCEP的流量。