还在跨境传输数据?数据跨境合规治理实践—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
- 在日志服务控制台上,创建B地域的Project B和Logstore B(如果已有,可以不创建)。
- 在客户端所在的服务器上,设置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, ...}
- 重启Logtail
- 在日志服务控制台ProjectB下,对B地域的机器创建机器组。
- 在Project B的Logstore B中,使用上面创建的机器组,配置Logtail采集配置
注意:
- 您需要在Logtail启动参数中设置
"accept_multi_config": true
或在创建Logtail配置时,在扩展配置中添加{"force_multiconfig": true}(ProjectA和ProjectB的采集配置都需要添加)
,使得文件中的日志可被采集多份。具体操作,请参见如何实现文件中的日志被采集多份。 - 后续进行修改Logtail配置时,需同时操作2个Project,保持配置一致。
ACK
- 在日志服务控制台上,创建B地域的Project B和Logstore B(如果已有,可以不创建)。
- 在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, ...}
- 创建configmap
- 修改logtail-ds的deployment
- 将配置文件作为configmap挂载进logtail-ds
- 修改ALIYUN_LOGTAIL_CONFIG,指向挂载后的文件路径
- 重启Logtail-ds
- 在日志服务控制台ProjectB下,对A地域的机器创建机器组。** A地域的机器建议单独创建一个机器组,方便迁移完成后删除**
注意:如果是标识型机器组,强力建议B地域机器的标识和A地域机器的标识区分开
- 在Project B的Logstore B中,使用上面创建的机器组,配置Logtail采集配置
注意:
- 您需要在Logtail启动参数中设置
"accept_multi_config": true
或在创建Logtail配置时,在扩展配置中添加{"force_multiconfig": true}(ProjectA和ProjectB的采集配置都需要添加)
,使得文件中的日志可被采集多份。具体操作,请参见如何实现文件中的日志被采集多份。 - 后续进行修改Logtail配置时,需同时操作2个Project,保持配置一致。
如何验证双采配置成功
- 观察ProjectA和ProjectB机器组心跳,确认两个机器组的心跳都是OK的,且机器是一致的
- 在机器上确认user_log_config.json中是否读取到了两个地域Project的配置
- 文件路径
- 执行如下命令可以确认采集配置是否存在
cat user_log_config.json | grep ProjectB | grep ${采集配置名}
- 观察两个地域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地域之后:
- Project B下在第一阶段创建的机器组可以先从采集配置中移除,观察稳定之后,再删除,如果是单独的采集配置,采集配置也可以删除
- A地域的ProjectA下采集配置按需操作(可删除可保留)