跨集群任务发布旧版本

适用模块

离线开发、流程协作

具体说明

跨集群情况向,通过任务发布可实现任务以及调度信息直接发布至所选集群中,目前仅支持11,多对1,不支持一个项目匹配多个去向端(mammut6.4.x版本)

使用示例

一、环境说明
定义:任务发布源端为A环境,任务发布目标端为B环境

1A环境mammut创建任务发布工单,该工单是发到B环境的流协,所以需要A环境需要调用B环境流协服务,具体主机名和端口号可以查看A环境mammut的配置项easyco.distribute.server.url或者B环境的easyco.server.url配置项

INFO-跨集群任务发布开启方案 - 图1


2B环境流协工单通过,回调B环境mammutB环境mammut会去A环境mammut拉取源任务信息,所以B环境mammut需要调用A环境mammut服务,具体主机名和端口号可以查看A环境mammut的配置项mammut.serviceServerUri

INFO-跨集群任务发布开启方案 - 图2


3mammut服务版本低于6.4.2A环境数据库中需要配置B环境mammut服务的ip白名单
二、 配置说明
首先,需要确定哪个平台作为测试环境,哪个平台作为线上环境。然后在平台上由运维人员分别开启“平台间任务发布”开关和“平台间任务接收”开关,项目配置文件system.properties

system.properties
# 双集群任务发布功能是否开启,默认不开启,一旦开启,将会展示任务发布的功能权限Tab,配置了发布目标的项目集群线上模式会展示任务发布按钮
mammut.difference.projectDeploy.enable = false | true
# 双集群任务发布功能是否开启,默认不开启,一旦开启,将会展示任务审批的功能权限Tab
mammut.difference.projectApprove.enable = false | true
# 任务发布流协后端地址(双集群)
easyco.distribute.server.url = 目标环境流协后端地址(源端和目标端的地址保持一致且都为目标端流协后端地址)
确定后,在作为测试环境的平台中,需要配置发布信息,目前发布信息的配置是通过猛犸的数据库表控制的,表字段说明如下

pf_az_project_deploy_config
CREATE TABLE `pf_az_project_deploy_config` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增id',
  `created_at` timestamp NOT NULL DEFAULT '2020-01-01 00:00:00' COMMENT '创建时间',
  `updated_at` timestamp NOT NULL DEFAULT '2020-01-01 00:00:00' ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  `src_account` varchar(64) NOT NULL DEFAULT '' COMMENT '源端项目名',
  `src_clusterid` varchar(64) NOT NULL DEFAULT '' COMMENT '源端集群id',
  `src_clustername` varchar(64) NOT NULL DEFAULT '' COMMENT '源端集群名',
  `dest_office_uri` varchar(64) NOT NULL DEFAULT '' COMMENT '目标平台的办公网地址',
  `dest_server_uri` varchar(64) NOT NULL DEFAULT '' COMMENT '目标平台的机房网地址',
  `dest_account` varchar(64) NOT NULL DEFAULT '' COMMENT '目标项目名',
  `dest_clusterid` varchar(64) NOT NULL DEFAULT '' COMMENT '目标集群id',
  `dest_clustername` varchar(64) NOT NULL DEFAULT '' COMMENT '目标集群名',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uniq_src` (`src_account`,`src_clusterid`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COMMENT='平台-双集群任务发布配置表'


insert into `pf_az_project_deploy_config` (created_at, updated_at, src_account, src_clusterid, src_clustername, dest_office_uri, dest_server_uri, dest_account, dest_clusterid, dest_clustername) values (now(), now(), '源端项目名', '源端集群id', '源端集群名', '目标平台的浏览器地址', '目标平台的机房网地址', '目标项目名', '目标集群id', '目标集群名');

集群信息从mammut.pf_hdf_cluster表中获取
地址信息从system.properties配置文件中获取


-- 为发布目标端配置ip白名单 --
INSERT INTO pf_api_allowips (api,ips) VALUES ('/v1/synctask/order/download','任务发布目标端ip');
之后在对应项目的项目中心功能权限中,配置开启相应的发布和审批的功能权限,并授权给相关角色和成员。

完成如上配置后,在对应项目的离线开发中,具体任务的线上模式下,有“项目集群间任务发布”权限的用户,就会看到“任务发布”和“发布记录”按钮,可进行任务发布操作。有项目集群间任务发布工单审批权限的人会接收工单审批的邮件等通知,进行工单审批。
限制说明
目前任务发布仅支持部分内容的发布。
目前支持的内容为:任务内的节点、资源、任务的调度信息、节点的质量监控引用。
目前不能发布的内容为:引用资源组的实际内容、引用参数组的实际内容、节点引用质量监控的具体配置、数据同步节点引用的离线同步任务的实际内容、任务内相关表的DDL变更历史。
1风险影响
修改配置,需要重启服务,期间服务出现短暂不可用情况
功能开通后,对于平台接口'/v1/synctask/order/download'会暴露给目标端。

作者:林帅