将 Fleet 管理的 Elastic Agent 从一个集群迁移到另一个集群

编辑

将 Fleet 管理的 Elastic Agent 从一个集群迁移到另一个集群编辑

在某些情况下,您可能需要将已安装的 Elastic Agent 从在一个集群中管理迁移到在另一个集群中管理。

为了实现无缝迁移,我们建议您在新集群中创建一个与原始集群配置相同的代理策略。您可以通过以下几种方法来实现。

本指南将引导您完成通过对源集群进行快照并在目标集群上恢复来迁移 Elastic Agent 的步骤。这些说明假设您使用的是 Elastic Cloud 部署,但它们也适用于本地集群。

创建源集群的快照编辑

有关完整详细信息,请参阅完整的 快照和恢复 文档。简而言之,要在 Elastic Cloud 部署中创建新快照,请执行以下操作:

  1. 在 Kibana 中,打开主菜单,然后单击 管理此部署
  2. 在部署菜单中,选择 快照
  3. 单击 立即创建快照

    Deployments Snapshots page
从快照创建新的目标集群编辑

您可以根据在上一步中创建的快照创建一个新集群,然后将您的 Elastic Agent 和 Fleet 迁移到新集群。为了获得最佳结果,建议新目标集群的版本与要从中迁移代理的集群版本相同。

  1. 打开 Elastic Cloud 控制台,然后选择 创建部署
  2. 选择 恢复快照数据
  3. 恢复来源 字段中,选择您的源部署。
  4. 选择您的部署设置,并且最好选择与源集群相同的 Elastic Stack 版本。
  5. 单击 创建部署

    Create a deployment page
更新目标集群中的设置编辑

当目标集群可用时,您需要调整一些设置。花一些时间检查新集群中的 Fleet 设置。

  1. 打开 Kibana 菜单,然后选择 Fleet
  2. 代理 选项卡上,您的代理应该可见,但它们将显示为 离线。这是因为这些代理尚未在新目标集群中注册,并且仍注册在原始源集群中。

    Agents tab in Fleet showing offline agents
  3. 打开 Fleet 设置 选项卡。
  4. 检查那里为 Fleet 捕获的配置。请注意,这些设置是从源集群的快照中复制的,在新目标集群中可能没有意义,因此需要相应地修改它们。

    在以下示例中,Fleet 服务器主机输出 设置都是从源集群复制过来的。

    Settings tab in Fleet showing source deployment host and output settings

    以下步骤说明如何获取适用于 Elastic Cloud 中新目标集群的相关 Fleet 服务器主机和 Elasticsearch 输出详细信息。

修改 Elasticsearch 输出编辑
  1. 在 Elastic Cloud 上的新目标集群中,在 Fleet 设置 选项卡的 输出 部分中,您将找到一个名为 Elastic Cloud 内部输出 的内部输出。主机地址格式如下:

    https://<cluster-id-target>.containerhost:9244

    从目标集群记录此 <cluster-id-target>。在所示的示例中,ID 为 fcccb85b651e452aa28703a59aea9b00

  2. 同样在 输出 部分中,请注意默认的 Elasticsearch 输出(从源集群复制过来的)也采用以下格式:

    https://<cluster-id-source>.<cloud endpoint address>:443.

    修改 Elasticsearch 输出,使集群 ID 与 Elastic Cloud 内部输出 的集群 ID 相同。在本例中,我们还将输出重命名为 新 Elasticsearch

    Outputs section showing the new Elasticsearch host setting

    在本例中,新 Elasticsearch 输出和 Elastic Cloud 内部输出 现在具有相同的集群 ID,即 fcccb85b651e452aa28703a59aea9b00

您现在已经创建了一个 Elasticsearch 输出,代理可以使用它将数据写入新的目标集群。对于不使用 Elastic Cloud 的本地环境,您应该能够类似地使用新集群的主机地址。

修改 Fleet 服务器主机编辑

与 Elasticsearch 主机一样,Fleet 服务器主机也随着新的目标集群而改变。请注意,如果您在本地部署 Fleet 服务器,则主机地址可能没有更改,并且不需要修改此设置。我们仍然建议您确保代理能够访问本地 Fleet 服务器主机(它们应该能够访问,因为它们在迁移之前能够连接到它)。

Elastic Cloud Fleet 服务器主机具有与 Elasticsearch 输出类似的格式:

https://<deployment-id>.fleet.<domain>.io

要配置正确的 Elastic Cloud Fleet 服务器主机,您需要找到目标集群的完整 deployment-id,并使用它替换从源集群复制过来的原始 deployment-id

查找 deployment-id 的最简单方法是从部署 URL 中查找:

  1. 从 Kibana 菜单中选择 管理此部署
  2. 从浏览器地址栏中的 URL 复制部署 ID。

    Deployment management page

    在本例中,新的部署 ID 为 eed4ae8e2b604fae8f8d515479a16b7b

    使用该值作为 deployment-id,新的 Fleet 服务器主机 URL 为:

    https://eed4ae8e2b604fae8f8d515479a16b7b.fleet.us-central1.gcp.cloud.es.io:443

  3. 在目标集群中,在 Fleet 服务器主机 下,将原始主机 URL 替换为新值。

    Fleet server hosts showing the new host URL
重置 Elastic Cloud 策略编辑

在您的目标集群上,原始 Elastic Cloud Elastic Agent 策略中的某些设置可能仍然保留,并且需要更新以引用新集群。例如,在安装到 Elastic Cloud Elastic Agent 策略的 APM 策略中,原始的和过时的 APM URL 被保留。这可以通过运行 reset_preconfigured_agent_policies API 请求来修复。请注意,当您重置策略时,所有 APM 集成设置都将重置,包括密钥或任何基于尾部的采样。

要重置 Elastic Cloud Elastic Agent 策略,请执行以下操作:

  1. 选择以下 API 请求之一,并通过终端窗口提交。

    • 如果您使用的是 Kibana 8.11 或更高版本,请运行:

      curl --request POST \
      --url https://{KIBANA_HOST:PORT}/internal/fleet/reset_preconfigured_agent_policies/policy-elastic-agent-on-cloud \
      -u username:password \
      --header 'Content-Type: application/json' \
      --header 'kbn-xsrf: as' \
      --header 'elastic-api-version: 1'
    • 如果您使用的是低于 8.11 的 Kibana 版本,请运行:

      curl --request POST \
      --url https://{KIBANA_HOST:PORT}/internal/fleet/reset_preconfigured_agent_policies/policy-elastic-agent-on-cloud \
      -u username:password \
      --header 'Content-Type: application/json' \
      --header 'kbn-xsrf: as'

      运行该命令后,您的 Elastic Cloud 代理策略设置应全部更新为适当的值。

运行该命令后,Fleet 中可能会出现警告消息,指示 Fleet 服务器运行状况不佳。此外,与 Elastic Cloud 代理策略关联的 Elastic Agent 可能会从代理列表中消失。要解决此问题,您可以重新启动 Integrations Server:

  1. 从 Kibana 菜单中选择 管理此部署
  2. 在部署菜单中,选择 Integrations Server
  3. Integrations Server 页面上,选择 强制重启

重启后,Integrations Server 将为 Elastic Cloud 代理策略注册一个新的 Elastic Agent,并且 Fleet 服务器应恢复到健康状态。

确认您的策略设置编辑

现在 Fleet 设置已正确设置,最好确保 Elastic Agent 策略也正确指向正确的实体。

  1. 在目标集群中,转到 Fleet → 代理策略
  2. 选择要验证的策略。
  3. 打开 设置 选项卡。
  4. 确保 Fleet 服务器集成的输出代理监控的输出 都设置为新创建的实体。

    An agent policy’s settings showing the newly created entities

如果您修改了 Fleet 服务器和输出,则这些设置将相应更新。但是,如果创建了新实体,则请确保此处引用的是正确的实体。

新目标集群中的代理策略编辑

通过从快照创建新的目标集群,您所有的策略都应该与所有代理一起创建。这些代理将处于离线状态,因为实际代理尚未(尚未)向新的目标集群报告,并且仍在与源集群通信。

现在可以将代理重新注册到这些策略中,并迁移到新的目标集群。

将 Elastic 代理迁移到新的目标集群编辑

为了确保正确创建所有必需的 API 密钥,需要将当前集群中的代理重新注册到新的目标集群中。

最好一次执行一个策略。对于给定的策略,您需要捕获注册令牌和代理连接到的 URL。您可以通过运行产品内步骤来添加新代理来找到这些内容。

  1. 在目标集群上,打开 Fleet 并选择 添加代理
  2. 选择您新创建的策略。
  3. 在您的主机上安装 Elastic 代理 部分中,找到示例安装命令。其中包含注册代理所需的详细信息,即注册令牌和 Fleet 服务器 URL。
  4. 复制包含这些值的安装命令部分。即 –url=<路径> –enrollment-token=<新策略的令牌>

    Install command from the Add Agent UI
  5. 在安装了当前代理的主机上,使用此复制的 URL 和注册令牌再次注册代理

    sudo elastic-agent enroll --url=<fleet server url> --enrollment-token=<token for the new policy>

    命令输出应如下所示

    Install command output
  6. 现在,每个主机上的代理都将签入新的 Fleet 服务器并出现在新的目标集群中。在源集群中,代理将处于离线状态,因为它们不会发送任何签入。

    Newly enrolled agents in the target cluster
  7. 对每个 Elastic 代理策略重复此过程。

如果一切顺利,您已成功将 Fleet 管理的 Elastic 代理迁移到新集群。