云服务器内容精选

  • 主从切换 当主集群出现故障时,支持通过主从切换保证业务正常进行。 判断主从集群的索引同步方式。查询从集群是否有索引同步的匹配模式,命令参考查询并删除集群匹配模式。 如果没有匹配模式,则表示主从集群是指定索引同步关系,则执行3。 如果有匹配模式,则表示主从集群是模式匹配索引同步关系,则执行2。 删除从集群的索引同步的匹配模式,命令参考查询并删除集群匹配模式。 从集群停止索引同步,将读写流量切换到从集群。如果主从集群是匹配索引同步关系,停止索引同步命令使用通配符匹配索引。 当主集群恢复后,通过索引同步将从集群数据向主集群同步,完成主从切换。
  • 查询并删除集群匹配模式 在从集群执行如下命令,查询已创建的匹配模式。 列表查询 GET auto_sync/pattern 指定名称查询 GET auto_sync/pattern/{PATTERN} 接口返回示例如下: { "patterns" : [ { "name" : "pattern1", "pattern" : { "remote_cluster" : "leader", "remote_index_patterns" : [ "log*" ], "local_index_pattern" : "{{remote_index}}-sync", "settings" : { } } } ] } 在从集群执行如下命令,指定模式名称删除模式。 DELETE auto_sync/pattern/{PATTERN}
  • 开启强制同步 开启强制同步 插件默认根据主集群索引的文档数是否发生变化来决定是否要同步元数据,当主集群只对文档进行更新且文档数不变时,插件不会同步该更新到从集群。支持修改配置,开启后,每个同步周期从集群都会强制同步主机群的索引元数据。 请求示例如下(开启强制同步): PUT _cluster/settings { "persistent": { "remote_sync.force_synchronize": true } }
  • 查询同步状态 获取自动同步状态 该接口可以获取匹配索引同步的状态。 请求示例如下: GET auto_sync/stats 接口返回示例如下: { "success_count" : 3, "failed_count" : 0, "failed_remote_cluster_state_requests_count" : 0, "last_fail_exception" : { }, "last_fail_remote_cluster_requests_exception" : { } } 获取指定索引的自动同步状态 请求示例如下: GET {index_name}/sync_stats 接口返回示例如下: { "indices" : { "data1_follower" : { "shards" : { "0" : [ { "primary" : false, "total_synced_times" : 27, "total_empty_times" : 25, "total_synced_files" : 4, "total_synced_bytes" : 3580, "total_paused_nanos" : 0, "total_paused_times" : 0, "current" : { "files_count" : 0, "finished_files_count" : 0, "bytes" : 0, "finished_bytes" : 0 } }, { "primary" : true, "total_synced_times" : 28, "total_empty_times" : 26, "total_synced_files" : 20, "total_synced_bytes" : 17547, "total_paused_nanos" : 0, "total_paused_times" : 0, "current" : { "files_count" : 0, "finished_files_count" : 0, "bytes" : 0, "finished_bytes" : 0 } } ] } } } }
  • 场景描述 读写分离支持将写入主集群(Leader)的数据自动同步到从集群(Follower),实现主集群承担写入任务,从集群承担查询任务。读写分离可以将读写压力分开,提高查询的性能。当主集群无法提供服务时,可以通过主从切换使用从集群提供写入和查询服务,保证业务可以正常进行。 图1 读写分离特性的两种使用场景 场景一(图左):主集群写入,从集群查询,分离读写压力。 场景二(图右):主集群故障时,从集群升级,正常提供服务,避免业务中断。
  • 连接主从集群 登录 云搜索服务 管理控制台。 在“集群管理”页面选择从集群,单击操作列“Kibana”,登录Kibana页面。 单击左侧导航栏的“Dev Tools”进入操作页面 执行如下命令,在从集群配置主集群的信息。 PUT /_cluster/settings { "persistent" : { "cluster" : { "remote.rest" : { "leader1" : { "seeds" : [ "http://10.0.0.1:9200", "http://10.0.0.2:9200", "http://10.0.0.3:9200" ] , "username": "elastic", "password": "*****" } } } } } 表1 请求体参数说明 参数名 说明 leader1 主集群配置任务的名称,由用户自定义,在后续读写分离配置时会用到该名称。 seeds 主集群的访问地址。当集群开启HTTPS访问时,URL schema需要对应使用https。 username 主集群的用户名,仅主集群是安全集群时才需要配置。 password 主集群的密码,仅主集群是安全集群时才需要配置。 返回示例: { "acknowledged" : true, // 是否成功 "persistent" : { "cluster" : { "remote" : { "rest" : { "leader1" : { "seeds" : [ "http://10.0.0.1:9200", "http://10.0.0.2:9200", "http://10.0.0.3:9200" ] , "username": "elastic", "password": "*****" } } } } }, "transient" : { } } 配置完成后,在从集群执行如下命令确认从集群和主集群的连接状况。 GET _remote/rest/info 返回示例: { "leader1" : { "connected" : true //表示连接正常 } }
  • 索引同步 索引同步有2种方式:指定索引同步和匹配索引同步。 开启索引同步后,从集群的索引会变为只读状态,并且定时与主集群索引同步。同步周期默认30秒,如果需要修改请参见修改同步周期。 指定索引同步 在从集群执行如下命令,将主集群的单个索引同步到从集群,不修改索引配置。 PUT start_remote_sync { "remote_cluster": "leader1", "remote_index": "data1_leader", "local_index": "data1_follower" } 在从集群执行如下命令,将主集群的单个索引同步到从集群,并修改部分索引配置,开启索引配置同步。 PUT start_remote_sync { "remote_cluster": "leader1", "remote_index": "data1_leader", "local_index": "data1_follower", "settings": { "number_of_replicas": 4 }, "settings_sync_enable": true, "settings_sync_patterns": ["*"], "settings_sync_exclude_patterns": ["index.routing.allocation.*"], "alias_sync_enable": true, "state_sync_enable": true } 以下索引配置不支持修改:“number_of_shards”、“version.created”、“uuid”、“creation_date”、“soft_deletes.enabled”。 表2 请求体参数说明 参数名 说明 remote_cluster 主集群配置任务的名称,在连接主从集群时设置,例如本文设置的是“leader1”。 remote_index 主集群待同步索引名称。 local_index 同步到从集群的索引名称。 settings 同步索引的索引设置。 settings_sync_enable 开启主集群索引设置同步,默认为“false”。 settings_sync_patterns 要同步的主集群索引设置前缀,默认为“*”,当“settings_sync_enable”为“true”时生效,“settings”中配置的索引设置不会同步。 settings_sync_exclude_patterns 不需要同步的主集群索引设置前缀,默认为空,“settings_sync_enable”为“true”时生效。 alias_sync_enable 开启主集群索引别名同步,默认为“false”。 state_sync_enable 开启主集群索引状态同步,默认为“false”。 匹配索引同步 在从集群执行如下命令,创建匹配模式同步索引,将主集群中匹配的索引同步到从集群。 PUT auto_sync/pattern/${PATTERN} { "remote_cluster": "leader1", "remote_index_patterns": "log*", "local_index_pattern": "{{remote_index}}-sync", "apply_exist_index": true } 在从集群执行如下命令,创建匹配模式同步索引,将主集群中匹配的索引同步到从集群,并修改部分索引配置,开启索引配置同步。 PUT auto_sync/pattern/${PATTERN} { "remote_cluster": "leader1", "remote_index_patterns": "log*", "local_index_pattern": "{{remote_index}}-sync", "apply_exist_index": true, "settings": { "number_of_replicas": 4 }, "settings_sync_enable": true, "settings_sync_patterns": ["*"], "settings_sync_exclude_patterns": ["index.routing.allocation.*"], "alias_sync_enable": true, "state_sync_enable": true } 以下索引配置不支持修改:“number_of_shards”、“version.created”、“uuid”、“creation_date”、“soft_deletes.enabled”。 表3 请求体参数说明 参数名 说明 PATTERN 同步集群配置的pattern名字,用于区分多个不同的匹配模式。 remote_cluster 主集群配置任务的名称,通过连接主从集群设置,具体值如上文的“leader1”。 remote_index_patterns 主集群待同步索引模式,支持通配符“*”。 local_index_pattern 同步到从集群的索引模式,支持模板替换。例如取值为“{{remote_index}}-sync”时,待同步索引为“log1”,同步过来的索引为“log1-sync”。 apply_exist_index 是否同步主集群上已存在的索引,默认为“true”。 settings 同步索引的索引设置。 settings_sync_enable 开启主集群索引设置同步,默认为“false”。 settings_sync_patterns 要同步的主集群索引设置前缀,默认为“*”,当“settings_sync_enable”为“true”时生效,“settings”中配置的索引设置不会同步。 settings_sync_exclude_patterns 不需要同步的主集群索引设置前缀,默认为空,“settings_sync_enable”为“true”时生效。 alias_sync_enable 开启主集群索引别名同步,默认为“false”。 state_sync_enable 开启主集群索引状态同步,默认为“false”。
  • 场景描述 通过切换冷热数据,可以将部分现查要求秒级返回的数据放在高性能机器上面作为热数据,对于历史数据要求分钟级别返回的数据放在大容量低规格节点作为冷数据。冷热数据切换可以减低存储成本,提升搜索效率。 图1 切换冷热数据原理 在创建集群时,启用的冷数据节点会被打上“cold”标签,用来存放冷数据,数据节点会被打上“hot”标签,用于存放热数据。用户可以通过配置指定索引,将数据分配到冷数据节点上。只有集群存在冷数据节点时,数据节点才会被打上热标签。 冷数据节点只有在创建集群时可以选择启用,已建集群不支持添加冷数据节点,如果集群没有冷数据节点又想切换冷热数据,可以使用存算分离功能,具体操作请参见配置Elasticsearch集群存算分离。 冷数据节点支持节点数量扩缩容和磁盘存储容量的扩容,具体操作请参见扩缩容Elasticsearch集群。
  • Elasticsearch集群搜索增强特性介绍 云搜索 服务的Elasticsearch集群在开源Elasticsearch基础上增加了许多增强特性,增强特性的功能和支持的集群版本请参见表1。 表1 Elasticsearch集群搜索增强特性列表 增强特性 特性描述 支持的集群版本 相关文档 向量检索 向量检索支持对图像、视频、语料等非结构化数据提取的特征向量数据进行最近邻或近似近邻检索。 Elasticsearch 7.6.2、Elasticsearch 7.10.2 配置Elasticsearch集群向量检索 存算分离 存算分离支持将集群新写入的数据存储在SSD来达到最佳的查询检索性能,将历史数据存储到OBS中降低数据的存储成本。 存算分离和切换冷热数据比,更适用于对搜索性能要求不高的场景,冷数据存储在OBS中,存储成本更低一些。 Elasticsearch 7.6.2、Elasticsearch 7.10.2 配置Elasticsearch集群存算分离 流量控制2.0 流量控制2.0提供节点级别的流量控制功能,可提供单个节点基于黑白名单的访问限制、HTTPS并发连接数限制、HTTP最大连接数限制,基于节点内存的客户端写入流量反压控制,一键断流能力。同时也提供节点访问IP统计和URL的统计能力。开启客户端写入流量反压控制功能,会在节点堆内存过大时阻止大请求涌入节点占用内存,避免节点崩溃,减少节点不可用的风险。 说明: 2023年02月及之后创建的Elasticsearch 7.6.2和Elasticsearch 7.10.2集群仅支持流量控制2.0版本,之前创建Elasticsearch 7.6.2和Elasticsearch 7.10.2集群仅支持流量控制1.0版本。 Elasticsearch 7.6.2、Elasticsearch 7.10.2 配置Elasticsearch集群读写流量控制策略2.0 流量控制1.0 流量控制1.0提供节点级别的流量控制功能,可提供单个节点基于黑白名单的访问限制、HTTP并发连接数限制、HTTP最大连接数限制、基于请求Path的堆内存最大使用量流控能力、基于CPU最大占用率流控能力,一键断流能力,同时也提供节点访问IP统计和URL的采样统计能力。开启流控功能会使请求在入口处直接阻塞,可以缓解节点高并发场景下的集群压力,降低P99时延,减少节点不可用的风险。 说明: 2023年02月及之后创建的Elasticsearch 7.6.2和Elasticsearch 7.10.2集群仅支持流量控制2.0版本,之前创建Elasticsearch 7.6.2和Elasticsearch 7.10.2集群仅支持流量控制1.0版本。 Elasticsearch 7.6.2、Elasticsearch 7.10.2 配置Elasticsearch集群读写流量控制策略1.0 大查询隔离 大查询隔离支持对查询请求进行独立管理,将高内存、长耗时的查询请求进行隔离,保证节点内存安全。在节点堆内存使用率过高时,触发中断控制程序,根据选择的中断策略将其中一条大查询请求进行中断,取消其正在运行的查询任务。大查询隔离同时支持全局查询超时配置,用户可实时配置所有查询请求的超时时间,中断超时查询请求。 Elasticsearch 7.6.2、Elasticsearch 7.10.2 配置Elasticsearch集群大查询隔离 聚合增强 聚合增强在数据聚簇的情况下,利用向量化技术,批量处理数据,从而提升聚合性能,优化可观测性业务的聚合分析能力。 Elasticsearch 7.10.2 配置Elasticsearch集群聚合增强 读写分离 读写分离支持将写入主集群(Leader)的数据自动同步到从集群(Follower),实现主集群承担写入任务,从集群承担查询任务。读写分离可以将读写压力分开,提高查询的性能。当主集群无法提供服务时,可以通过主从切换使用从集群提供写入和查询服务,保证业务可以正常进行。 Elasticsearch 7.6.2、Elasticsearch 7.10.2 配置Elasticsearch集群读写分离 切换冷热数据 通过切换冷热数据,可以将部分现查要求秒级返回的数据放在高性能机器上面作为热数据,对于历史数据要求分钟级别返回的数据放在大容量低规格节点作为冷数据。冷热数据切换可以减低存储成本,提升搜索效率。 切换冷热数据和存算分离比,更适用于对搜索性能要求高的场景,冷数据存储在集群本地的冷数据节点中,存储的数据量大小依赖冷数据节点数和磁盘容量,存储成本也会比OBS高一些。 只要集群有冷数据节点就支持。 切换Elasticsearch集群冷热数据 索引回收站 索引回收站支持将删除的索引存放到回收站中,且支持从回收站中还原索引,防止误操作导致数据被删除,进而提升集群的数据可靠性。 Elasticsearch 7.10.2 配置Elasticsearch集群索引回收站 父主题: 增强Elasticsearch集群搜索能力