还在跨境传输数据?数据跨境合规治理实践—Logtail数据本地化无损迁移方案

林润骑(太业)

场景描述

场景1:

客户在各个地域都有服务,但是日志和指标等都采集到了中心化的一个地域的Project中。随着业务的发展,1. 公网传输的费用越来越高,2. 合规化的需求(比如海外地域),因此需要将日志数据进行本地化迁移。迁移过程中日志相关的监控又不想中断或缺失,需要有一个方案能够将日志采集平滑迁移。

场景2:

客户的服务原来都在国内地域,为国内、海外所有业务提供服务。随着合规的需求,海外业务的服务需要迁移到海外地域。迁移往往会持续一段时间,在这个阶段,客户部分服务还在国内地域,部分服务已在海外地域,但是客户的日志相关的监控又不想中断或缺失,因此在业务迁移的过程中,需要有一个方案能够将日志采集平滑的从国内地域过渡到海外地域。

整体方案

场景1

中心化地域为RegionA,原来所有地域的日志都采集到ProjectA。RegionB的日志和监控数据需要从RegionA迁移到RegionB的projectB中。

  • 客户的业务监控原来是依赖ProjectA的,现在也需要拆分到每个地域下,拆分过程中,RegionB的日志和指标配置双采,一份采集到ProjectA,一份采集到ProjectB
  • ProjectA仍然保存完整的数据,确保原来的监控是完整和正常的
  • 业务监控完全迁移到ProjectB之后,可以把RegionB的跨地域采集停掉。

双写配置流程

网络配置

默认跨地域只能使用公网endpoint发送数据

跨地域内网访问需要提工单支持

机器组整理

在ProjectA下,分别对RegionA和RegionB的机器组进行整理,建议RegionB的机器单独拆分成一个机器组,方便迁移完成后,ProjectA下的采集配置移除RegionB的机器。

Logtail配置修改

注意

  • Logtail的版本需要>=1.0.24
  • ACK场景下,环境变量配置方式,CRD配置方式均不支持跨地域配置,因此只能使用控制台或者API进行配置
ECS
  1. 在日志服务控制台上,创建B地域的Project B和Logstore B(如果已有,可以不创建)。
  2. 在客户端所在的服务器上,设置Logtail的ilogtail_config.json文件,支持双地域写入。

例如A地域为华东2(上海),B地域为华北2(北京),则config_server_address修改为北京的内网域名, 新增config_server_address_list配置项,将华东2(上海)的域名填入,data_server_list中添加华北2(北京)地域的信息,其他保持不变。

{
...
"config_server_address":"logtail.cn-beijing-intranet.log.aliyuncs.com",
"config_server_address_list": [
"cn-shanghai.log.aliyuncs.com"
],
"data_server_list": [
{
"cluster": "cn-shanghai",
"endpoint":"cn-shanghai.log.aliyuncs.com"
},
{
"cluster": "cn-beijing",
"endpoint":"cn-beijing-intranet.log.aliyuncs.com"
}
],
"cpu_usage_limit": 2.0,
...
}
  1. 重启Logtail
  2. 在日志服务控制台ProjectB下,对B地域的机器创建机器组。
  3. 在Project B的Logstore B中,使用上面创建的机器组,配置Logtail采集配置

注意

  • 您需要在Logtail启动参数中设置"accept_multi_config": true或在创建Logtail配置时,在扩展配置中添加{"force_multiconfig": true}(ProjectA和ProjectB的采集配置都需要添加),使得文件中的日志可被采集多份。具体操作,请参见如何实现文件中的日志被采集多份
  • 后续进行修改Logtail配置时,需同时操作2个Project,保持配置一致。
ACK
  1. 在日志服务控制台上,创建B地域的Project B和Logstore B(如果已有,可以不创建)。
  2. 在ACK上,设置Logtail的ilogtail_config.json文件,支持双地域写入。

例如A地域为华东2(上海),B地域为华北2(北京),则config_server_address修改为背景的内网域名, 新增config_server_address_list配置项,将华东2(上海)的域名填入,data_server_list中添加华北2(北京)地域的信息,其他保持不变。

{
...
"config_server_address":"logtail.cn-beijing-intranet.log.aliyuncs.com",
"config_server_address_list": [
"cn-shanghai.log.aliyuncs.com"
],
"data_server_list": [
{
"cluster": "cn-shanghai",
"endpoint":"cn-shanghai.log.aliyuncs.com"
},
{
"cluster": "cn-beijing",
"endpoint":"cn-beijing-intranet.log.aliyuncs.com"
}
],
"cpu_usage_limit": 2.0,
...
}
  1. 创建configmap

  1. 修改logtail-ds的deployment
  • 将配置文件作为configmap挂载进logtail-ds

  • 修改ALIYUN_LOGTAIL_CONFIG,指向挂载后的文件路径

  1. 重启Logtail-ds
  2. 在日志服务控制台ProjectB下,对A地域的机器创建机器组。** A地域的机器建议单独创建一个机器组,方便迁移完成后删除**

注意:如果是标识型机器组,强力建议B地域机器的标识和A地域机器的标识区分开

  1. 在Project B的Logstore B中,使用上面创建的机器组,配置Logtail采集配置

注意

  • 您需要在Logtail启动参数中设置"accept_multi_config": true或在创建Logtail配置时,在扩展配置中添加{"force_multiconfig": true}(ProjectA和ProjectB的采集配置都需要添加),使得文件中的日志可被采集多份。具体操作,请参见如何实现文件中的日志被采集多份
  • 后续进行修改Logtail配置时,需同时操作2个Project,保持配置一致。

如何验证双采配置成功

  1. 观察ProjectA和ProjectB机器组心跳,确认两个机器组的心跳都是OK的,且机器是一致的

参考文档

  1. 在机器上确认user_log_config.json中是否读取到了两个地域Project的配置
    • 文件路径
    • 执行如下命令可以确认采集配置是否存在
cat user_log_config.json | grep ProjectB | grep ${采集配置名}
  1. 观察两个地域ProjectA/LogstoreA和ProjectB/LogstoreB下的数据是否有上报

注意:

Logtail采集状态监控建议使用CloudLens for SLS

迁移后

完成迁移之后:ProjectA下RegionB的机器组可以先从采集配置中移除,观察稳定之后,再删除。

场景2

服务从RegionA迁移到RegionB

  • 迁移过程中,业务不太可能一次性完整迁移到新地域
  • RegionA的服务日志、指标等配置双采,数据一份采集到ProjectA,一份采集到ProjectB,ProjectB可以有完整的日志和监控数据
  • 待业务和服务完全迁移之后,RegionA的跨地域采集可以停掉

双写配置流程

与场景1相比,主要是ilogtail_config.json配置有一些区别,具体如下:

例如A地域为华东2(上海),B地域为华北2(北京),则新增config_server_address_list配置项,将华北2(北京)的域名填入,data_server_list中添加华北2(北京)地域的信息,其他保持不变。

{
...
"config_server_address":"logtail.cn-shanghai-intranet.log.aliyuncs.com",
"config_server_address_list": [
"cn-beijing.log.aliyuncs.com"
],
"data_server_list": [
{
"cluster": "cn-shanghai",
"endpoint":"cn-shanghai-intranet.log.aliyuncs.com"
},
{
"cluster": "cn-beijing",
"endpoint":"cn-beijing.log.aliyuncs.com"
}
],
"cpu_usage_limit": 2.0,
...
}

其余步骤参考场景1。

迁移后

  • 服务与业务完全迁移完成之后,B地域的Project下创建的A地域的机器组可以暂时从采集配置中去掉,A地域的Project下采集配置按需操作(可删除可保留)

业务从A地域完全迁移到B地域之后:

  1. Project B下在第一阶段创建的机器组可以先从采集配置中移除,观察稳定之后,再删除,如果是单独的采集配置,采集配置也可以删除
  2. A地域的ProjectA下采集配置按需操作(可删除可保留)

observability.cn Authors 2024 | Documentation Distributed under CC-BY-4.0
Copyright © 2017-2024, Alibaba. All rights reserved. Alibaba has registered trademarks and uses trademarks.
浙ICP备2021005855号-32