云服务器内容精选

  • 常见问题 迁移过程出现报错“out of memory”怎么办? 迁移过程中出现报错“out of memory”, 表示迁移虚拟机内存溢出,有如下解决方案: 可能是E CS 虚拟机的配置不够,建议升级ECS规格,操作指导请参见变更单台ECS规格。 调整ESM的迁移速度,通过在迁移命令中减小“buffer_count”参数,限制内存中的文档数量。 迁移完成后,为什么源集群和目标集群的索引数据存储量不一致? ESM迁移集群后,两个集群的数据存储量不一致是正常的,这是由Elasticsearch的内部存储机制决定的。Elasticsearch存储是有多个shard,每个shard又有多个segment,由于ESM迁移是把源集群数据写入到目标集群,会导致在目标集群重新生成segment和shard,由于segment和shard都会对数据有膨胀,不同集群的segment的shard不同,数据量也不同,如果需要比较数据一致性,则需要对比文档个数的多少,而不是对比数据大小。
  • 通过ESM迁移集群 访问ESM下载地址,下载“migrator-linux-amd64”软件包。 通过SCP工具将下载的“migrator-linux-amd64”软件包上传到Linux ECS的执行路径下。 在Linux ECS的执行路径下执行命令,将源集群的索引结构和数据迁移到目标集群。 # 索引全量迁移 ./migrator-linux-amd64 -s http://source:9200 -d http://dest:9200 -x index_name -m admin:password -n admin:password --copy_settings --copy_mappings -w 5 -b 10 #索引增量迁移 ./migrator-linux-amd6 -s http://source:9200 -d http://dest:9200 -x index-test -m admin:password -n admin:password -w 5 -b 10 -q "timestamp:[\"2022-01-17 03:41:20\" TO \"2022-01-22 03:41:20\"]" 迁移命令的常用参数说明请参见表2,更多详细参数说明请参见ESM文档。 表2 常用参数说明 选型 示例 说明 -s, --source= http://source:9200 源Elasticsearch集群访问地址。 -d, --dest= http://dest:9200 目标Elasticsearch集群访问地址。 -x, --src_indexes= index_name index1,index2 源集群迁移索引名,支持正则匹配和逗号分隔。 -y, --dest_index= index_name_rename 目标集群索引名,支持单索引名称,如果不配置则和源索引名称相同。 -m, --source_auth= admin:password 访问源Elasticsearch集群的用户名和密码,仅安全集群涉及。 -n, --dest_auth= admin:password 访问目标Elasticsearch集群的用户名和密码,仅安全集群涉及。 -w, --workers= 5 读取源端数据速率控制参数,Bulk读取数据并发线程数。 默认值:1 -b, --bulk_size= 10 读取源端数据速率控制参数,Bulk一次读取数据的数据大小。 默认值:5MB --sliced_scroll_size 4 读取源端数据速率控制参考,Bulk Scroll中sliced的大小。 默认值:1 --copy_settings - 迁移源端索引的settings。 --copy_mappings - 迁移源端索引的mappings。 --buffer_count= - 迁移虚拟机缓存在内存中的文档数量。 默认值:10w 数据迁移完成后,通过对比文档个数检查数据一致性。 # 非安全集群 curl -ik http://ip:9200/{索引名称}/_count #安全集群+HTTPS访问 curl -ik https://ip:9200 -u[Username]:[password]/{索引名称}/_count
  • 前提条件 源Elasticsearch集群和目标Elasticsearch集群处于可用状态。 集群间需要保证网络连通。 如果源集群和目标集群在不同VPC,则需要先打通VPC网络建立对等连接。具体操作请参见对等连接简介。 如果是自建Elasticsearch集群迁移至华为云,则可以通过给自建Elasticsearch集群配置公网访问打通网络。 如果是第三方Elasticsearch集群迁移至华为云,则需要建立企业内部数据中心到华为云的VPN通道或专线。 确认集群的索引已开启“_source”。 集群索引的“_source”默认是开启的。执行命令GET {index}/_search,当返回的索引信息里有“_source”信息时表示已开启。
  • 应用场景 ESM(Elasticsearch Migration Tool)是一个开源的Elasticsearch集群迁移工具。它支持不同版本的Elasticsearch之间的数据迁移,并且可以通过配置Scroll API的参数来控制迁移速率,以适应不同的网络环境和业务需求。以下是ESM实现Elasticsearch集群间数据迁移的一些应用场景: 跨版本迁移:在Elasticsearch集群需要升级到新版本时,ESM可以帮助平滑迁移数据,确保升级过程中数据的完整性和可用性。 集群合并:当企业需要将多个Elasticsearch集群的数据整合到一个集群中以简化管理时,ESM可以高效地完成这一任务。 服务迁移上云:企业可以将自建的Elasticsearch服务迁移至云平台,以利用云服务的弹性扩展、简化维护和成本效益。 变更服务提供商:如果企业当前使用的是第三方Elasticsearch服务,但出于成本、性能或其他战略考虑,希望更换服务提供商至华为云。
  • 方案优势 跨版本兼容性:ESM支持不同版本的Elasticsearch集群间的数据迁移,包括从老版本迁移到新版本。 简化操作:ESM使用简单方便,使用Go语言开发,只需下载编译包安装即可使用。 性能控制:在迁移过程中,可以通过配置Scroll API的参数来控制迁移速率,优化迁移性能。 灵活的迁移方案:ESM提供了灵活的迁移方案,包括全量迁移和增量迁移,以适应不同的业务需求。 开源免费:作为一个开源工具,ESM代码托管在GitHub上,用户可以免费使用。
  • 性能影响 ESM迁移集群的工作原理基于Scroll API,此API能够高效地从源集群查找索引数据,并批量同步至目标集群。这一过程可能会对源集群性能产生影响,具体影响程度取决于目标集群对源集群的读取速度,而读取速度取决于Scroll API的size和slice参数配置。参数配置的详细指导可参考Reindex API文档。 由于ESM能够迅速从源集群读取数据,可能会对源集群的性能产生影响。因此,建议在业务低峰时段进行数据迁移,以监控源集群CPU和内存的性能指标变化。通过调整迁移速度和选择适宜的迁移时间窗口,可以有效控制性能影响。对于涉及大量数据迁移或资源占用较高的集群,特别推荐在业务低峰期执行数据迁移,以确保源端业务操作不受影响。
  • 准备迁移虚拟机 创建ECS用于迁移Elasticsearch集群。 购买Linux ECS,“镜像”选择CentOS 7系列,“虚拟私有云”和目标集群保持一致。购买操作指导请参见快速购买和使用Linux ECS。 测试ECS和源集群、目标集群的连通性。 在ECS执行如下命令测试连通性,当正常返回集群信息时表示已经连通。 # 非安全集群 curl -ik http://ip:9200 #安全集群+HTTPS访问 curl -ik https://ip:9200 -u[Username]:[password]
  • 前提条件 源Elasticsearch集群和目标Elasticsearch集群处于可用状态。 集群间需要保证网络连通。 如果源集群和目标集群在不同VPC,则需要先打通VPC网络建立对等连接。具体操作请参见对等连接简介。 如果是自建Elasticsearch集群迁移至华为云,则可以通过给自建Elasticsearch集群配置公网访问打通网络。 如果是第三方Elasticsearch集群迁移至华为云,则需要建立企业内部数据中心到华为云的VPN通道或专线。 确认集群的索引已开启“_source”。 集群索引的“_source”默认是开启的。执行命令GET {index}/_search,当返回的索引信息里有“_source”信息时表示已开启。
  • 应用场景 Elasticsearch作为一款开源搜索引擎,提供了Reindex API以支持集群间的索引数据迁移。 CSS 服务同样支持利用Reindex API实现Elasticsearch集群间的数据迁移。以下是该方案适用的专业迁移场景概述: 集群合并:Reindex API能够将分散在多个Elasticsearch集群中的索引数据合并至单一集群,实现数据的集中管理和分析。 服务迁移上云:企业可以将自建的Elasticsearch服务迁移至云平台,以利用云服务的弹性扩展、简化维护和成本效益。 变更服务提供商:对于当前使用第三方Elasticsearch服务的企业,若出于成本、性能或其他战略考量,希望更换至华为云等其他服务提供商,Reindex API提供了一种迁移途径。 Reindex API支持以下迁移策略: 全量迁移:实现跨集群的完整索引数据迁移。在此过程中,必须暂停对源集群的写入操作,以确保源集群与目标集群数据的一致性。 增量迁移:当集群索引包含时间字段时,Reindex API支持基于时间戳的增量数据迁移。在业务切换阶段,全量迁移完成后,需暂停源集群的写入操作,并利用Reindex API基于最近更新时间快速同步增量数据,随后将业务全面切换至目标集群。 索引重构:当需要调整索引结构,如Mapping、分词器或分片设置时,Reindex API可用于在迁移过程中重新配置索引结构。
  • 性能影响 Reindex API的工作原理基于Scroll API,此API能够高效地从源集群查找索引数据,并批量同步至目标集群。这一过程可能会对源集群性能产生影响,具体影响程度取决于目标集群对源集群的读取速度,而读取速度取决于Scroll API的size和slice参数配置。参数配置的详细指导可参考Reindex API文档。 由于Reindex任务在Elasticsearch集群中作为异步任务执行,在低并发情况下对源集群性能的影响是可管理的。然而,对于资源占用较高的集群,建议通过调整Scroll API的size参数来减缓迁移速度,或选择在业务低峰期进行迁移,以降低对业务的影响。
  • 常见问题:当索引数据大、数据同步慢时,如何处理? 当索引数据大、数据同步慢时,有如下几种方案可以提高效率。 Reindex API是使用Scroll方式读取源端数据写入目标端,因此可以通过配置size和slice参数增加迁移并发和速度。具体使用指导请参见Reindex API。 当单个索引数据量比较大时,可以在迁移前将目标索引的副本数设置为0,以加快数据同步速度。待数据迁移完成后,再修改为实际值。 当源端数据量很大时,建议采用快照方式迁移数据。例如通过备份与恢复实现华为云Elasticsearch集群间数据迁移、通过S3插件备份与恢复迁移自建Elasticsearch集群至华为云和通过备份与恢复迁移第三方Elasticsearch集群至华为云。 当索引数据存在时间字段时,可以使用跨集群增量迁移方案,分段迁移索引数据。