将 Fleet 管理的 Elastic Agent 从一个集群迁移到另一个集群
编辑将 Fleet 管理的 Elastic Agent 从一个集群迁移到另一个集群
编辑在某些情况下,您可能需要将已安装的 Elastic Agent 从一个集群管理迁移到另一个集群管理。
为了实现无缝迁移,我们建议您在新集群中创建与原始集群配置方式相同的相同 Agent 策略。有几种方法可以做到这一点。
本指南将引导您完成通过对源集群进行快照并在目标集群上恢复来迁移 Elastic Agent 的步骤。这些说明假设您拥有 Elastic Cloud 部署,但它们也可以应用于本地集群。
对源集群进行快照
编辑有关完整详细信息,请参阅完整的 快照和恢复 文档。简而言之,要在 Elastic Cloud 部署中创建新的快照
- 在 Kibana 中,打开主菜单,然后点击 管理此部署。
- 在部署菜单中,选择 快照。
-
点击 立即创建快照。
从快照创建新的目标集群
编辑您可以根据上一步中拍摄的快照创建新的集群,然后将您的 Elastic Agent 和 Fleet 迁移到新集群。为了获得最佳效果,建议新目标集群与 Agent 迁移来源的集群版本相同。
- 打开 Elastic Cloud 控制台并选择 创建部署。
- 选择 恢复快照数据。
- 在 从哪里恢复 字段中,选择您的源部署。
- 选择您的部署设置,并最好选择与源集群相同的 Elastic Stack 版本。
-
点击 创建部署。
更新目标集群中的设置
编辑目标集群可用后,您需要调整一些设置。花一些时间检查新集群中的 Fleet 设置。
- 打开 Kibana 菜单并选择 Fleet。
-
在 Agent 选项卡上,您的 Agent 应该可见,但它们将显示为
Offline
。这是因为这些 Agent 尚未注册到新的目标集群,并且仍然注册到原始的源集群。 - 打开 Fleet 设置 选项卡。
-
检查那里为 Fleet 捕获的配置。请注意,这些设置是从源集群的快照中复制的,在目标集群中可能没有意义,因此需要相应地进行修改。
在以下示例中,Fleet 服务器主机 和 输出 设置均从源集群复制过来
后续步骤说明如何获取适用于 Elastic Cloud 中新目标集群的相关 Fleet 服务器主机和 Elasticsearch 输出详细信息。
修改 Elasticsearch 输出
编辑-
在新目标集群的 Elastic Cloud 中,在 Fleet 设置 选项卡上的 输出 部分中,您会找到一个名为
Elastic Cloud 内部输出
的内部输出。主机地址格式如下https://<cluster-id-target>.containerhost:9244
从目标集群记录此
<cluster-id-target>
。在所示示例中,ID 为fcccb85b651e452aa28703a59aea9b00
。 -
同样在 输出 部分中,请注意,默认的 Elasticsearch 输出(从源集群复制过来)也采用以下格式
https://<cluster-id-source>.<cloud endpoint address>:443
.修改 Elasticsearch 输出,使其集群 ID 与
Elastic Cloud 内部输出
的集群 ID 相同。在此示例中,我们还将输出重命名为New Elasticsearch
。在此示例中,
New Elasticsearch
输出和Elastic Cloud 内部输出
现在具有相同的集群 ID,即fcccb85b651e452aa28703a59aea9b00
。
您现在已创建了一个 Elasticsearch 输出,Agent 可以使用它将数据写入新的目标集群。对于不使用 Elastic Cloud 的本地环境,您应该能够类似地使用新集群的主机地址。
修改 Fleet 服务器主机
编辑与 Elasticsearch 主机类似,Fleet 服务器主机也已在新目标集群中更改。请注意,如果您在本地部署 Fleet 服务器,则主机可能未更改地址,并且无需修改此设置。我们仍然建议您确保 Agent 能够访问本地 Fleet 服务器主机(它们应该能够访问,因为它们在迁移之前能够连接到它)。
Elastic Cloud Fleet 服务器主机具有与 Elasticsearch 输出类似的格式
https://<deployment-id>.fleet.<domain>.io
要配置正确的 Elastic Cloud Fleet 服务器主机,您需要找到目标集群的完整 deployment-id
,并用它替换从源集群复制过来的原始 deployment-id
。
查找 deployment-id
最简单的方法是从部署 URL 获取
- 从 Kibana 菜单中选择 管理此部署。
-
从浏览器地址栏中的 URL 复制部署 ID。
在此示例中,新的部署 ID 为
eed4ae8e2b604fae8f8d515479a16b7b
。使用该
deployment-id
值,新的 Fleet 服务器主机 URL 为https://eed4ae8e2b604fae8f8d515479a16b7b.fleet.us-central1.gcp.cloud.es.io:443
-
在目标集群中,在 Fleet 服务器主机 下,将原始主机 URL 替换为新值。
重置 Elastic Cloud 策略
编辑在您的目标集群中,原始 Elastic Cloud Elastic Agent 策略中的某些设置可能仍然保留,需要更新为引用新集群。例如,在安装到 Elastic Cloud Elastic Agent 策略的 APM 策略中,原始且过时的 APM URL 会被保留。这可以通过运行 reset_preconfigured_agent_policies
API 请求来修复。请注意,重置策略时,所有 APM 集成设置都会重置,包括密钥或任何基于尾部的采样。
要重置 Elastic Cloud Elastic Agent 策略
-
选择以下 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 Agent 策略设置应全部正确更新。
-
运行命令后,Fleet 中可能会出现一条警告消息,指示 Fleet 服务器不健康。此外,与 Elastic Cloud Agent 策略关联的 Elastic Agent 可能会从 Agent 列表中消失。要解决此问题,您可以重新启动 Integrations Server
- 从 Kibana 菜单中选择 管理此部署。
- 在部署菜单中,选择 Integrations Server。
- 在 Integrations Server 页面上,选择 强制重启。
重新启动后,Integrations Server 将为 Elastic Cloud Agent 策略注册一个新的 Elastic Agent,并且 Fleet 服务器应恢复到健康状态。
确认您的策略设置
编辑现在 Fleet 设置已正确设置,最好确保 Elastic Agent 策略也正确指向正确的实体。
- 在目标集群中,转到 Fleet → Agent 策略。
- 选择要验证的策略。
- 打开 设置 选项卡。
-
确保 Fleet 服务器、集成的输出 和 Agent 监控的输出 全部设置为新创建的实体。
如果您修改了 Fleet 服务器和输出,则会相应更新。但是,如果创建了新的实体,则请确保此处引用了正确的实体。
新目标集群中的 Agent 策略
编辑通过从快照创建新的目标集群,所有策略都应该与所有 Agent 一起创建。由于实际 Agent 尚未与新的目标集群(尚未)进行检查,并且仍在与源集群通信,因此这些 Agent 将处于脱机状态。
现在可以将 Agent 重新注册到这些策略中并迁移到新的目标集群。
将 Elastic Agent 迁移到新的目标集群
编辑为了确保所有必需的 API 密钥都正确创建,您需要将当前集群中的 Agent 重新注册到新的目标集群。
建议一次迁移一个策略。对于给定的策略,您需要捕获注册令牌和代理连接的 URL。您可以通过运行产品内添加新代理的步骤来找到这些信息。
- 在目标集群上,打开 Fleet 并选择 添加代理。
- 选择您新创建的策略。
- 在 在您的主机上安装 Elastic Agent 部分,找到示例安装命令。其中包含您注册代理所需的信息,即注册令牌和 Fleet 服务器 URL。
-
复制包含这些值的安装命令部分。即,
–url=<path> –enrollment-token=<token for the new policy>
。 -
在安装了当前代理的主机上,使用此复制的 URL 和注册令牌再次注册代理。
sudo elastic-agent enroll --url=<fleet server url> --enrollment-token=<token for the new policy>
命令输出应如下所示
-
每个主机上的代理现在将检查到新的 Fleet 服务器,并显示在新目标集群中。在源集群中,代理将离线,因为它们不会发送任何检查。
- 对每个 Elastic Agent 策略重复此过程。
如果一切顺利,您已成功将 Fleet 管理的 Elastic Agent 迁移到新的集群。