10 步完成 Elastic 工作负载从本地部署至 AWS 上的 Elastic 的自动迁移

blog-thumb-cloud-aws.png

您是否已准备好将自管型 Elastic 工作负载迁移至 Amazon Web Services (AWS) 上的 Elastic,以充分利用成本、时间和扩展效率方面的优势?请利用我们与 AWS 联合开发的最佳实践和工具,确保您实现快速、平稳的过渡。我们下面先来看一下自助迁移路径选项,然后再介绍自动执行迁移的简单操作步骤。

选择您的路径

在 AWS 环境中将本地部署数据集添加到 Elastic 主要有三种方式,分别为:重新采集数据、使用快照和还原功能,以及从集群重建索引。

1. 如果您的数据源(应用程序、数据库和基础架构)也需要迁移到 AWS,那么可以将数据从数据源重新采集Elastic 中。Elastic 提供与常用 AWS 服务的集成,可帮助精简数据采集流程 — 您只需单击几下即可采集、存储和搜索数据。

2. 当现有集群中的数据需要迁移到 Elastic Cloud,且现有集群运行的 Elasticsearch 版本低于 Elastic Cloud 的版本时,使用快照和还原功能是理想的选择。

3. 最后一种方式是从集群重建索引。如果数据量小,并且/或者使用快照和还原存在限制,而且现有集群运行的 Elasticsearch 版本低于 Elastic Cloud 的版本,那么这种方式就再适合不过了。要详细了解如何使用重建索引 API,请参阅迁移指南

在这篇博文中,我们将介绍使用快照和还原功能来自动按所选路径执行迁移的简单步骤。

使用快照和还原功能自动执行迁移

我们来看看使用快照迁移数据和使用 Terraform(开源的基础架构即代码软件)还原数据有多么容易。首先,我们从准备工作开始,然后我们将介绍具体的操作步骤。

准备工作

  1. 验证目标 Elastic Cloud 运行的是与当前 Elasticsearch 集群相同或更高的版本。如需更为详细的版本兼容性列表,请参见 Elastic 快照和还原指南
  2. 检查确认 Elastic Cloud 集群的基础架构容量是否足以满足用例的数据量和计算需求。
  3. 查看 Elastic 快照和还原指南中所列的限制,以及 Elastic 升级指南中所列的版本相关的重大更改,以确认不存在会影响将部署迁移至 Elastic Cloud 的限制因素。
  4. 确认安装的 Terraform 软件版本正确,且已启用 Terraform Vault 功能。
  5. 收集必要的信息,例如 Elasticsearch API 密钥 (var.apikey) 和 AWS 访问密钥 (var.s3_client_access_key, var.s3_client_secret_key)。
  6. 检查本地部署和 AWS VPC 上的 Elastic 之间的网络连接(直接连接)以及其他的 AWS 资源权限。
  7. 如果您现有的 Elasticsearch 集群上没有 Elasticsearch AWS CLI 和 Amazon Simple Storage Service (Amazon S3) 插件,则需通过以下命令从 Elasticsearch 主目录安装:
> sudo bin/elasticsearch-plugin install repository-s3
  1. 在现有 Elasticsearch 集群的根目录下,使用以下命令,将 Amazon S3 访问密钥添加到 Elasticsearch 密钥库(按提示输入之前 Amazon S3 存储桶创建过程中生成的相应密钥)。
> bin/elasticsearch-keystore add s3.client.default.access_key
> bin/elasticsearch-keystore add s3.client.default.secret_key
Elastic Cloud 迁移架构

迁移步骤

  1. 使用 Amazon S3 服务创建和注册 Elastic Cloud 快照存储库。
  2. 创建并配置一个本地快照存储库,并指向 Amazon S3 存储桶。
  3. 从本地集群创建一个新快照,并将其存储在 Amazon S3 存储桶中。
  4. 配置 Elastic Cloud 集群。
  5. 配置 Elastic Agent 所需的 AWS 资源。
  6. 配置实现轻松流畅的日志采集所需的 Elastic 无服务器转发器。
  7. 创建多个具有精细权限的 AWS Identity and Access Management (IAM) 实例角色,以访问部署过程中所需的 AWS 服务。
  8. 关闭 Elastic Cloud 中的所有索引。
  9. 从 Elastic Cloud 中的快照来还原本地集群数据。
  10. 最后,打开 Elastic Cloud 中的所有索引。

部署步骤

下面详细介绍了“准备工作”部分中简要提到的步骤,例如收集必要的秘密访问密钥。如果您已经拥有密钥,则可以跳到第 3 步。

  1. 生成 Elasticsearch Service (ESS) API 密钥:
    1. 打开浏览器,前往 https://cloud.elastic.co/login
    2. 使用您的电子邮件地址和密码登录。
    3. 单击 Elasticsearch Service
    4. 导览到功能 > API 密钥,然后单击“生成 API 密钥”。
    5. 为您的 API 密钥选择一个名称。
    6. 妥善保管您的 API 密钥。
  2. 创建 AWS 访问密钥:
    1. 创建一个允许列出、读取、写入权限的 S3 存储桶策略。
    2. 创建一个 IAM 用户并附加上面创建的策略。
    3. 确保检查 IAM 用户的程序访问权限。
    4. 妥善保管您的 AWS 访问密钥。
  3. 使用以下命令克隆您的 Terraform Elastic Cloud 迁移存储库:
    1. git clone https://github.com/aws-ia/terraform-elastic-cloud
    2. cd terraform-elastic-cloud
  4. 如果您使用的是 HashiCorp Vault,可以按如下方式设置 Vault 环境变量:
    1. export VAULT_ADDR= "Your Vault URL"
    2. export VAULT_TOKEN= "Your Vault Token"                                                                                  添加您的 Elasticsearch API 密钥(我们以“ess”路径为例):
vault kv put secret/ess apikey="Your Elastic API Key"

添加您的 AWS API 密钥(我们以“aws”路径为例):

vault kv put secret/aws s3_client_access_key="Your AWS Access Key"     
s3_client_secret_key="Your AWS Secret Key"
  1. 您需要提供密钥,在 Terraform 中可以通过多种方式完成。我们将使用变量定义 (.tfvars)。这一新增功能可自动将您的 Elasticsearch 集群迁移到 Elastic Cloud。文件如下所示(如果您使用的是 HashiCorp Vault)。

您需要做的就是指定您的自管型 Elasticsearch 的 URL,如下例所示。

    var.local_elasticsearch_url (e.g., http://127.0.0.1:9200).

    例如,我们可以在同一个 testing.tfvars 中添加 var.local_elasticsearch_url,如下所示(如果您使用的是 HashiCorp Vault):

    name = "Elasticsearch Cluster"
    local_elasticsearch_url = ""
    vault_address = "Your Local Elastic Cluster URL"
    vault_ess_path = "secret/ess"
    vault_aws_path = "secret/aws"
    apikey = "hashicorp/vault"
    s3_client_access_key = "hashicorp/vault"
    s3_client_secret_key  = "hashicorp/vault"

    或者,您也可以直接提供密钥,如下所示:

    name = "Elasticsearch Cluster"
    local_elasticsearch_url = ""
    apikey = "Your Elastic API Key"
    s3_client_access_key = "Your AWS Access Key"
    s3_client_secret_key  = "Your AWS Secret Key"
    1. 在 .tfvars 文件中指定这些变量后(在下面的示例中,我们使用的是名为 testing.tfvars 的文件),您可以按如下方式运行 Terraform 模块:
          terraform init
          terraform validate
          terraform apply -var-file="testing.tfvars"

          销毁部署

          如果您不再需要 terraform 模块配置的基础架构,则可以使用以下命令轻松终止所有资源
          terraform destroy -var-file="testing.tfvars"

          通过 Elastic 和 AWS 充分利用更多迁移资源

          Elastic 是 AWS ISV 工作负载迁移计划 (WMP) 认证合作伙伴,专注于帮助将自管型本地部署 Elasticsearch 或 ELK 工作负载迁移至 AWS 上的 Elastic。Elastic 的解决方案可以在加快云迁移速度方面为客户提供规范且可复制的方法,并且符合 AWS 发布的迁移指南和最佳实践,包括 AWS Well-Architected FrameworkAWS Migration Acceleration Program。通过 AWS WMP 计划,您可以进一步利用入门指南、迁移资源和 AWS 基础架构服务抵扣金和资金援助,实现业务目标,并加快云旅程。

          立即开始迁移至 AWS 上的 Elastic

          迁移完成即可使用团队熟知的 Elastic 解决方案来充分利用所有支持云的功能。请查看此迁移指南快速入门指南网站文档,或直接与我们联系,进一步了解 Elastic 如何帮助您完成迁移,包括评估、规划和资金援助。此外,您也可以联系我们的 Elastic 咨询团队,他们可以帮助您迁移复杂的大型工作负载。直接从 AWS Marketplace 获得 7 天免费试用,在几分钟内部署 Elastic。

          本博文所描述的任何功能或特性的发布及上市时间均由 Elastic 自行决定。当前尚未发布的任何功能或特性可能无法按时提供或根本不会提供。