天翼云云搜索服务,支持根据业务需求,灵活选择合适的实例配置。我们根据天翼云搜索团队丰富的实际业务经验,在此提供一些搜索引擎常见使用场景下,配置选择的建议。您可以根据业务的读写请求、数据存算和搜索与分析等需求进行参考。当然,也需要您根据业务的实际使用情况逐步去探索。
实例版本:
我们同时提供Elasticsearch和OpenSearch两种选择。
天翼云基于Elasticsearch7.10.2,默认搭配同版本的Kibana使用,并在开源版本做了大量的能力增强,包括压缩算法、中文分词、SQL兼容、异步搜索、向量检索、跨实例复制、索引管理、拼音分词、简繁体转换、HDFS存储等,并进行了安全漏洞修复、BUG修复、性能优化等。
天翼云OpenSearch基于OpenSearch2.19.1版本打造,默认搭配同版本OpenSearch Dashboards使用。在开源版本的基础上也做了大量的能力增强和优化,包括中文分词优化、流量控制、监控告警、对象存储适配、拼音分词、简繁体转换等。
规划实例可用区
天翼云云搜索服务支持多可用区部署,多可用区部署可以在某个可用区全部不可用的情况下,保证实例的主节点可正常选举,从而为防止数据丢失,并确保在服务中断情况下能降低实例的停机时间,最终能增强实例的健壮性和高可用性。
Elasticsearch/OpenSearch 实例中,主节点(Master Node)负责管理集群元数据(如索引分片分配、节点状态等)。主节点通过选举产生,遵循过半原则(Quorum),即候选节点需要获得超过半数的投票才能成为主节点。
奇数节点原则:若主节点部署在 3 个可用区(AZ),每个可用区部署 1 个主节点,则总数为奇数。当单个可用区故障时,剩余两个可用区的节点仍可形成多数票(2/3 > 50%),确保选举出新的主节点。
避免脑裂:跨可用区部署主节点时,若网络分区导致节点间通信中断,奇数节点设计能确保只有一个子集群满足过半条件,避免多个主节点同时存在的脑裂问题。
天翼云云搜索服务支持单AZ部署和多AZ部署,如果用户需要某个AZ不可用时,实例仍然可以提供服务,那就需要多AZ部署。
在跨三个AZ部署中,为了保证其中任意一个AZ不可用时,剩余的AZ可以继续提供服务,因此索引的副本数至少要为1个。
计算节点选型:
目前支持的节点规格如下,不同资源池支持在售机型不同,云搜索服务会根据产品规划需要适时调整在售机型,请以购买页可见机型为准:
通用型云主机适用场景:适合平衡型场景,适用于大多数通用搜索和分析任务。当实例需要处理中等规模的数据集,并且查询和索引操作相对平衡时,这种比例可以提供足够的处理能力和内存资源。
计算型云主机适用场景:适合CPU密集型操作,如需要进行大量数据聚合或实时分析的场景。当查询操作非常复杂,需要进行大量的数据计算和聚合时,较高的CPU资源可以提高处理速度。
内存型云主机适用场景:适合内存密集型操作,如大量数据的索引和搜索。当数据集较大,需要频繁进行全文搜索或复杂查询时,较高的内存可以提高缓存效率,减少磁盘I/O操作。
基础型云主机
机型类型 | 机型名称 | CPU | Mem |
---|---|---|---|
通用型 | esearch-4c16g | 4 | 16 |
esearch-8c16g | 8 | 16 | |
esearch-8c32g | 8 | 32 | |
esearch-16c32g | 16 | 32 | |
esearch-16c64g | 16 | 64 | |
esearch-32c64g | 32 | 64 | |
esearch-32c128g | 32 | 128 | |
计算型 | esearch-4c16g | 4 | 16 |
esearch-8c16g | 8 | 16 | |
esearch-8c32g | 8 | 32 | |
esearch-16c32g | 16 | 32 | |
esearch-16c64g | 16 | 64 | |
esearch-32c64g | 32 | 64 | |
esearch-32c128g | 32 | 128 | |
esearch-64c128g | 64 | 128 | |
内存型 | esearch-4c32g | 4 | 32 |
esearch-8c64g | 8 | 64 | |
esearch-16c128g | 16 | 128 |
增强型云主机
机型类型 | 机型名称 | 核数(vCPU) | 内存(GB) |
---|---|---|---|
通用增强型 | esearch-eis4c8g | 4 | 8 |
esearch-eis4c16g | 4 | 16 | |
esearch-eis8c16g | 8 | 16 | |
esearch-eis8c32g | 8 | 32 | |
esearch-eis16c32g | 16 | 32 | |
esearch-eis16c64g | 16 | 64 | |
esearch-eis32c64g | 32 | 64 | |
计算增强型 | esearch-eic4c8g | 4 | 8 |
esearch-eic4c16g | 4 | 16 | |
esearch-eic8c16g | 8 | 16 | |
esearch-eic8c32g | 8 | 32 | |
esearch-eic16c32g | 16 | 32 | |
esearch-eic16c64g | 16 | 64 | |
esearch-eic32c64g | 32 | 64 | |
内存增强型 | esearch-eim4c32g | 4 | 32 |
esearch-eim8c64g | 8 | 64 |
海光云主机
机型类型 | 机型名称 | 核数(vCPU) | 内存(GB) |
---|---|---|---|
海光通用型 | esearch-h1s4c8g | 4 | 8 |
esearch-h1s4c16g | 4 | 16 | |
esearch-h1s8c16g | 8 | 16 | |
esearch-h1s8c32g | 8 | 32 | |
esearch-h1s16c32g | 16 | 32 | |
esearch-h1s16c64g | 16 | 64 | |
海光计算型 | esearch-h1c4c8g | 4 | 8 |
esearch-h1c4c16g | 4 | 16 | |
esearch-h1c8c16g | 8 | 16 | |
esearch-h1c8c32g | 8 | 32 | |
esearch-h1c16c32g | 16 | 32 | |
esearch-h1c16c64g | 16 | 64 | |
esearch-h1c32c64g | 32 | 64 | |
海光内存型 | esearch-h1m4c32g | 4 | 32 |
esearch-h1m8c64g | 8 | 64 |
海光4云主机
机型类型 | 机型名称 | 核数(vCPU) | 内存(GB) |
---|---|---|---|
海光4计算型 | esearch-h3c4c8g | 4 | 8 |
esearch-h3c4c16g | 4 | 16 | |
esearch-h3c8c16g | 8 | 16 | |
esearch-h3c8c32g | 8 | 32 | |
esearch-h3c16c32g | 16 | 32 | |
esearch-h3c16c64g | 16 | 64 | |
esearch-h3c32c64g | 32 | 64 | |
esearch-h3c32c128g | 32 | 128 | |
esearch-h3c64c128g | 64 | 128 | |
海光4内存型 | esearch-h3m4c32g | 4 | 32 |
esearch-h3m8c64g | 8 | 64 | |
esearch-h3m16c128g | 16 | 128 |
鲲鹏云主机
机型类型 | 机型名称 | 核数(vCPU) | 内存(GB) |
---|---|---|---|
鲲鹏通用型 | esearch-k1s4c8g | 4 | 8 |
esearch-k1s4c16g | 4 | 16 | |
esearch-k1s8c16g | 8 | 16 | |
esearch-k1s8c32g | 8 | 32 | |
esearch-k1s16c32g | 16 | 32 | |
esearch-k1s16c64g | 16 | 64 | |
鲲鹏计算型 | esearch-k1c4c8g | 4 | 8 |
esearch-k1c4c16g | 4 | 16 | |
esearch-k1c8c16g | 8 | 16 | |
esearch-k1c8c32g | 8 | 32 | |
esearch-k1c16c32g | 16 | 32 | |
esearch-k1c16c64g | 16 | 64 | |
esearch-k1c32c64g | 32 | 64 | |
鲲鹏内存型 | esearch-k1m4c32g | 4 | 32 |
esearch-k1m8c64g | 8 | 64 |
飞腾云主机
机型类型 | 机型名称 | 核数(vCPU) | 内存(GB) |
---|---|---|---|
飞腾通用型 | esearch-f1s4c8g | 4 | 8 |
esearch-f1s4c16g | 4 | 16 | |
esearch-f1s8c16g | 8 | 16 | |
esearch-f1s8c32g | 8 | 32 | |
esearch-f1s16c32g | 16 | 32 | |
esearch-f1s16c64g | 16 | 64 | |
飞腾计算型 | esearch-f1c4c8g | 4 | 8 |
esearch-f1c4c16g | 4 | 16 | |
esearch-f1c8c16g | 8 | 16 | |
esearch-f1c8c32g | 8 | 32 | |
esearch-f1c16c32g | 16 | 32 | |
esearch-f1c16c64g | 16 | 64 | |
飞腾内存型 | esearch-f1m4c32g | 4 | 32 |
esearch-f1m8c64g | 8 | 64 |
存储容量规划
副本数量:副本有利于增加数据的可靠性,但同时会增加存储成本。默认和建议的副本数量为1。
压缩比:Elasticsearch和OpenSearch通常可以将数据压缩20~30%,因此,1GB原始数据-> 1*1.2(Json转换因子)*0.8(压缩) -> 0.96压缩比。
磁盘空间使用率:一般建议为70%。
索引开销:可以使用cat/indices?v API 和 __pri.store.size_ 值计算确切的开销计算,通常比源数据大10%。
操作系统预留空间:默认操作系统会保留5%的文件系统供您处理关键流程、系统恢复以及防止磁盘碎片化问题等。
因此,存储容量 = 源数据 * (1 + 副本数量) * 0.96 / (1 - 磁盘使用率)*(1 *索引开销)*(1 *预留空间) ≈ 源数据 * 2 * 0.96 / 0.7 *1.1 *1.05 = 源数据*3.168。根据原始数据大小,至少要预留大概3倍以上的空间。
数据节点数量规划
实例建议最大节点数 = 单节点 CPU * 5。
单节点磁盘最大容量:
搜索类场景:单节点磁盘最大容量 = 单节点内存大小(GB)* 10。
日志类等场景:单节点磁盘最大容量 = 单节点内存大小(GB)* 50。
通用类等场景:单节点磁盘最大容量 = 单节点内存大小(GB)* 30。
综上,示例节点数量规划如下:
配置 | 最大节点数 | 单节点磁盘最大容量 (查询) | 单节点磁盘最大容量 (日志) |
---|---|---|---|
4核16GB | 20 | 160 GB | 800 GB |
8 核 32GB | 40 | 320 GB | 1.5 TB |
16 核 64GB | 80 | 640 GB | 2 TB |
实际场景举例
如:每天大概有500GB的日志数据写入,日志数据需要在线保存7天。根据存储容量规划公式,500GB的原始数据需要1500GB的磁盘空间。7天就是10TB。16 核 64G的数据节点单节点磁盘最大容量(日志)为2TB,所以需要购买5台规格为16 核 64G+2TB存储的Elasticsearch/OpenSearch实例。
规划节点类型
在订购天翼云云搜索服务时,正确规划集群节点类型非常重要。
目前天翼云云搜索服务支持数据节点、专属master节点、专属协调节点、冷数据节点四种节点类型。
数据节点
数据节点就是Elasticsearch/OpenSearch的data节点。数据节点是实例的核心数据存储和计算单元,负责分片存储、索引/搜索执行、聚合计算等基础操作。如果没有购买专属master节点,数据节点也会承担master节点的工作。
专属master节点
专属master节点负责集群元数据管理、分片分配、节点状态监控等核心控制任务,不存储数据。
部署必要性
小型实例(≤10节点):可不单独配置Master节点,由普通节点兼任。
中大型集群实例:必须独立部署,避免元数据操作与数据计算争抢资源导致性能抖动。
高可用配置
数量要求:至少3个且为奇数,防止单点故障和脑裂问题。
规格建议:选择低配机型(如 esearch-4c16g),因其不参与数据计算,资源消耗较低。
专属协调节点
接收用户请求并分发至数据节点,汇总结果返回客户端,缓解数据节点的负载压力。
适用场景
高并发查询(如电商大促、实时监控)。
复杂聚合请求(如多维度分析、嵌套查询)。
部署策略
独立部署:与数据节点分离,避免请求分发占用数据节点的CPU/内存资源。
负载均衡:如果开通了ELB服务,可将ELB服务配置到专属协调节点,从而将流量均匀分配至多个协调节点。
协调节点规格建议购买较高规格的机型,比如esearch-8c32g。
冷数据节点
冷数据节点是面向历史数据存储的专用节点类型,用于存储访问频率低、响应时效要求较宽松的冷数据(如超过30天的日志、归档业务数据等)。通过将冷热数据分离,可实现存储成本优化与查询效率的平衡。
适用场景
历史数据归档(如超过半年的交易记录、审计日志)。
低频访问数据(如季度/年度报表、备份索引)。
存储成本敏感型业务(需降低高性能节点资源占比)。
存储介质选择
建议选择大容量较低规格的存储类型,适合冷数据长期保存。
容量规划
冷节点存储容量建议为热节点的3-5倍,例如:
热节点配置500GB SSD存储,冷节点配置2TB HDD存储。
可通过生命周期管理策略自动迁移超期索引。
标签管理
冷节点默认携带node.attr.tag: stale标签,支持指定新创建索引到冷数据节点或者对已创建索引动态迁移:
PUT /historical_logs/_settings {
"index.routing.allocation.require.tag": "stale"
}
规划实例安全模式
实例的安全模式主要分为http模式和https模式。
http模式:适合通过内网访问实例的场景,通过http协议明文传输数据。
https模式:适合需要公网访问实例的场景。
实例订购时默认开通https模式。如果需要使用http模式,可在实例开通完成后,在安全设置页面修改为http访问。
不管http模式还是https模式,都必须通过用户名密码才能访问Elasticsearch/OpenSearch集群。
管理员账户名默认为admin,密码为创建集群时设置的管理员密码。
规划索引分片数
适用场景
日志类,写入频繁,查询较少,单个分片 30G 左右。
搜索类,写入少,查询频繁,单个分片不超过 20G。
每个 Elasticsearch 索引被分为多个分片,数据按哈希算法打散到不同的分片中。由于索引分片的数量影响读写性能和故障恢复速度,建议提前规划。
分片使用概要
在单节点上,最大分片数量为 1000。单个分片大小尽量保持在 10-50G 之间为最佳体验,一般推荐在 30G 左右。分片过大可能使故障恢复速度变慢,分片过小可能导致非常多的分片,因为每个分片会使用占用一些 CPU 和内存,从而导致读写性能和内存不足的问题。
当分片数量超过数据节点数量时,建议分片数量接近数据节点的整数倍,便于将分片均匀的分布到数据节点中。