MDM 测试环境部署手册

记录在AWS环境进行MDM测试系统部署过程

基础环境准备

  1. 创建AWS ECR, RDS, ElastiCache, ElasticsearchService

  2. 处理镜像, 传到ECR

    当前功能已使用Jenkins自动脚本实现 Jenkins-MDM

    点击展开

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    # 登录阿里云Docker私服
    docker login -u leezyu -p **** registry.cn-hangzhou.aliyuncs.com

    # 拉取需要的docker image
    # eureka
    docker pull registry.cn-hangzhou.aliyuncs.com/sw/appeureka:9.0.17.1
    # zuul
    docker pull registry.cn-hangzhou.aliyuncs.com/sw/appzuul:9.0.17.1
    # 基础平台
    docker pull registry.cn-hangzhou.aliyuncs.com/sw/appcore:9.0.17.1
    # 监控平台
    docker pull registry.cn-hangzhou.aliyuncs.com/sw/appadmin:9.0.17.1
    # 前端资源包
    docker pull registry.cn-hangzhou.aliyuncs.com/sw/appmdmui:9.0.17.1
    # 静态资源包+nginx
    docker pull registry.cn-hangzhou.aliyuncs.com/sw/apphome:9.0.17.1
    # 工作流引擎
    docker pull registry.cn-hangzhou.aliyuncs.com/sw/appbpm:9.0.17.1
    # 编码引擎
    docker pull registry.cn-hangzhou.aliyuncs.com/sw/appengine:9.0.17.1
    # 数据标准平台
    docker pull registry.cn-hangzhou.aliyuncs.com/sw/appmodule:9.0.17.1
    # 数据全生命周期平台
    docker pull registry.cn-hangzhou.aliyuncs.com/sw/appcode:9.0.17.1
    # 数据查询
    docker pull registry.cn-hangzhou.aliyuncs.com/sw/appquery:9.0.17.1
    # 数据交换
    docker pull registry.cn-hangzhou.aliyuncs.com/sw/appesb:9.0.17.1
    # 数据可视化
    docker pull registry.cn-hangzhou.aliyuncs.com/sw/appmdmdc:9.0.17.1
    # 数据质量+清洗
    docker pull registry.cn-hangzhou.aliyuncs.com/sw/appclean:9.0.17.1
    # 任务调度
    docker pull registry.cn-hangzhou.aliyuncs.com/sw/apptask:9.0.17.1
    # 数据分析
    docker pull registry.cn-hangzhou.aliyuncs.com/sw/appreport:9.0.17.1
    # 管理控制台
    docker pull registry.cn-hangzhou.aliyuncs.com/sw/appconsole:9.0.17.1
    # Apollo
    docker pull registry.cn-hangzhou.aliyuncs.com/sw/apollo-all:2.0.2
    # Apollo Admin
    docker pull registry.cn-hangzhou.aliyuncs.com/sw/apolloadmin:1.5.0
    # Apollo Config
    docker pull registry.cn-hangzhou.aliyuncs.com/sw/apolloconfig:1.5.0
    # Apollo Portal
    docker pull registry.cn-hangzhou.aliyuncs.com/sw/apolloportal:1.5.0

    # 登录ECR
    aws --profile 7745 ecr get-login-password --region cn-northwest-1 | docker login --username AWS --password-stdin 774564366034.dkr.ecr.cn-northwest-1.amazonaws.com.cn

    # 批量创建存储库
    PREFIX=774564366034.dkr.ecr.cn-northwest-1.amazonaws.com.cn
    SUFFIX=mdm/test
    # eureka
    aws --profile 7745 ecr create-repository --repository-name $SUFFIX/appeureka
    # zuul
    aws --profile 7745 ecr create-repository --repository-name $SUFFIX/appzuul
    # 基础平台
    aws --profile 7745 ecr create-repository --repository-name $SUFFIX/appcore
    # 监控平台
    aws --profile 7745 ecr create-repository --repository-name $SUFFIX/appadmin
    # 前端资源包
    aws --profile 7745 ecr create-repository --repository-name $SUFFIX/appmdmui
    # 静态资源包+nginx
    aws --profile 7745 ecr create-repository --repository-name $SUFFIX/apphome
    # 工作流引擎
    aws --profile 7745 ecr create-repository --repository-name $SUFFIX/appbpm
    # 编码引擎
    aws --profile 7745 ecr create-repository --repository-name $SUFFIX/appengine
    # 数据标准平台
    aws --profile 7745 ecr create-repository --repository-name $SUFFIX/appmodule
    # 数据全生命周期平台
    aws --profile 7745 ecr create-repository --repository-name $SUFFIX/appcode
    # 数据查询
    aws --profile 7745 ecr create-repository --repository-name $SUFFIX/appquery
    # 数据交换
    aws --profile 7745 ecr create-repository --repository-name $SUFFIX/appesb
    # 数据可视化
    aws --profile 7745 ecr create-repository --repository-name $SUFFIX/appmdmdc
    # 数据质量+清洗
    aws --profile 7745 ecr create-repository --repository-name $SUFFIX/appclean
    # 任务调度
    aws --profile 7745 ecr create-repository --repository-name $SUFFIX/apptask
    # 数据分析
    aws --profile 7745 ecr create-repository --repository-name $SUFFIX/appreport
    # 管理控制台
    aws --profile 7745 ecr create-repository --repository-name $SUFFIX/appconsole
    # Apollo All
    aws --profile 7745 ecr create-repository --repository-name $SUFFIX/apollo-all
    # Apollo Admin
    aws --profile 7745 ecr create-repository --repository-name $SUFFIX/apollo-admin
    # Apollo Config
    aws --profile 7745 ecr create-repository --repository-name $SUFFIX/apollo-config
    # Apollo Portal
    aws --profile 7745 ecr create-repository --repository-name $SUFFIX/apollo-portal

    # 将上述image重新标记到ECR服务
    # eureka
    docker tag registry.cn-hangzhou.aliyuncs.com/sw/appeureka:9.0.17.1 $PREFIX/$SUFFIX/appeureka:9.0.17.1
    # zuul
    docker tag registry.cn-hangzhou.aliyuncs.com/sw/appzuul:9.0.17.1 $PREFIX/$SUFFIX/appzuul:9.0.17.1
    # 基础平台
    docker tag registry.cn-hangzhou.aliyuncs.com/sw/appcore:9.0.17.1 $PREFIX/$SUFFIX/appcore:9.0.17.1
    # 监控平台
    docker tag registry.cn-hangzhou.aliyuncs.com/sw/appadmin:9.0.17.1 $PREFIX/$SUFFIX/appadmin:9.0.17.1
    # 前端资源包
    docker tag registry.cn-hangzhou.aliyuncs.com/sw/appmdmui:9.0.17.1 $PREFIX/$SUFFIX/appmdmui:9.0.17.1
    # 静态资源包+nginx
    docker tag registry.cn-hangzhou.aliyuncs.com/sw/apphome:9.0.17.1 $PREFIX/$SUFFIX/apphome:9.0.17.1
    # 工作流引擎
    docker tag registry.cn-hangzhou.aliyuncs.com/sw/appbpm:9.0.17.1 $PREFIX/$SUFFIX/appbpm:9.0.17.1
    # 编码引擎
    docker tag registry.cn-hangzhou.aliyuncs.com/sw/appengine:9.0.17.1 $PREFIX/$SUFFIX/appengine:9.0.17.1
    # 数据标准平台
    docker tag registry.cn-hangzhou.aliyuncs.com/sw/appmodule:9.0.17.1 $PREFIX/$SUFFIX/appmodule:9.0.17.1
    # 数据全生命周期平台
    docker tag registry.cn-hangzhou.aliyuncs.com/sw/appcode:9.0.17.1 $PREFIX/$SUFFIX/appcode:9.0.17.1
    # 数据查询
    docker tag registry.cn-hangzhou.aliyuncs.com/sw/appquery:9.0.17.1 $PREFIX/$SUFFIX/appquery:9.0.17.1
    # 数据交换
    docker tag registry.cn-hangzhou.aliyuncs.com/sw/appesb:9.0.17.1 $PREFIX/$SUFFIX/appesb:9.0.17.1
    # 数据可视化
    docker tag registry.cn-hangzhou.aliyuncs.com/sw/appmdmdc:9.0.17.1 $PREFIX/$SUFFIX/appmdmdc:9.0.17.1
    # 数据质量+清洗
    docker tag registry.cn-hangzhou.aliyuncs.com/sw/appclean:9.0.17.1 $PREFIX/$SUFFIX/appclean:9.0.17.1
    # 任务调度
    docker tag registry.cn-hangzhou.aliyuncs.com/sw/apptask:9.0.17.1 $PREFIX/$SUFFIX/apptask:9.0.17.1
    # 数据分析
    docker tag registry.cn-hangzhou.aliyuncs.com/sw/appreport:9.0.17.1 $PREFIX/$SUFFIX/appreport:9.0.17.1
    # 管理控制台
    docker tag registry.cn-hangzhou.aliyuncs.com/sw/appconsole:9.0.17.1 $PREFIX/$SUFFIX/appconsole:9.0.17.1
    # Apollo
    docker tag registry.cn-hangzhou.aliyuncs.com/sw/apollo-all:2.0.2 $PREFIX/$SUFFIX/apollo-all:2.0.2
    # Apollo-Admin
    docker tag registry.cn-hangzhou.aliyuncs.com/sw/apollo-all:2.0.2 $PREFIX/$SUFFIX/apollo-admin:1.5.0
    # Apollo-Config
    docker tag registry.cn-hangzhou.aliyuncs.com/sw/apollo-all:2.0.2 $PREFIX/$SUFFIX/apollo-config:1.5.0
    # Apollo-Portal
    docker tag registry.cn-hangzhou.aliyuncs.com/sw/apollo-all:2.0.2 $PREFIX/$SUFFIX/apollo-portal:1.5.0

    # 推送镜像
    # eureka
    docker push $PREFIX/$SUFFIX/appeureka:9.0.17.1
    # zuul
    docker push $PREFIX/$SUFFIX/appzuul:9.0.17.1
    # 基础平台
    docker push $PREFIX/$SUFFIX/appcore:9.0.17.1
    # 监控平台
    docker push $PREFIX/$SUFFIX/appadmin:9.0.17.1
    # 前端资源包
    docker push $PREFIX/$SUFFIX/appmdmui:9.0.17.1
    # 静态资源包+nginx
    docker push $PREFIX/$SUFFIX/apphome:9.0.17.1
    # 工作流引擎
    docker push $PREFIX/$SUFFIX/appbpm:9.0.17.1
    # 编码引擎
    docker push $PREFIX/$SUFFIX/appengine:9.0.17.1
    # 数据标准平台
    docker push $PREFIX/$SUFFIX/appmodule:9.0.17.1
    # 数据全生命周期平台
    docker push $PREFIX/$SUFFIX/appcode:9.0.17.1
    # 数据查询
    docker push $PREFIX/$SUFFIX/appquery:9.0.17.1
    # 数据交换
    docker push $PREFIX/$SUFFIX/appesb:9.0.17.1
    # 数据可视化
    docker push $PREFIX/$SUFFIX/appmdmdc:9.0.17.1
    # 数据质量+清洗
    docker push $PREFIX/$SUFFIX/appclean:9.0.17.1
    # 任务调度
    docker push $PREFIX/$SUFFIX/apptask:9.0.17.1
    # 数据分析
    docker push $PREFIX/$SUFFIX/appreport:9.0.17.1
    # 管理控制台
    docker push $PREFIX/$SUFFIX/appconsole:9.0.17.1
    # Apollo
    docker push $PREFIX/$SUFFIX/apollo-all:2.0.2
    # Apollo-Admin
    docker push $PREFIX/$SUFFIX/apollo-admin:1.5.0
    # Apollo-Config
    docker push $PREFIX/$SUFFIX/apollo-config:1.5.0
    # Apollo-Portal
    docker push $PREFIX/$SUFFIX/apollo-portal:1.5.0

    # 将上述image重新标记为latest版本到ECR服务
    # eureka
    docker tag registry.cn-hangzhou.aliyuncs.com/sw/appeureka:9.0.17.1 $PREFIX/$SUFFIX/appeureka:latest
    # zuul
    docker tag registry.cn-hangzhou.aliyuncs.com/sw/appzuul:9.0.17.1 $PREFIX/$SUFFIX/appzuul:latest
    # 基础平台
    docker tag registry.cn-hangzhou.aliyuncs.com/sw/appcore:9.0.17.1 $PREFIX/$SUFFIX/appcore:latest
    # 监控平台
    docker tag registry.cn-hangzhou.aliyuncs.com/sw/appadmin:9.0.17.1 $PREFIX/$SUFFIX/appadmin:latest
    # 前端资源包
    docker tag registry.cn-hangzhou.aliyuncs.com/sw/appmdmui:9.0.17.1 $PREFIX/$SUFFIX/appmdmui:latest
    # 静态资源包+nginx
    docker tag registry.cn-hangzhou.aliyuncs.com/sw/apphome:9.0.17.1 $PREFIX/$SUFFIX/apphome:latest
    # 工作流引擎
    docker tag registry.cn-hangzhou.aliyuncs.com/sw/appbpm:9.0.17.1 $PREFIX/$SUFFIX/appbpm:latest
    # 编码引擎
    docker tag registry.cn-hangzhou.aliyuncs.com/sw/appengine:9.0.17.1 $PREFIX/$SUFFIX/appengine:latest
    # 数据标准平台
    docker tag registry.cn-hangzhou.aliyuncs.com/sw/appmodule:9.0.17.1 $PREFIX/$SUFFIX/appmodule:latest
    # 数据全生命周期平台
    docker tag registry.cn-hangzhou.aliyuncs.com/sw/appcode:9.0.17.1 $PREFIX/$SUFFIX/appcode:latest
    # 数据查询
    docker tag registry.cn-hangzhou.aliyuncs.com/sw/appquery:9.0.17.1 $PREFIX/$SUFFIX/appquery:latest
    # 数据交换
    docker tag registry.cn-hangzhou.aliyuncs.com/sw/appesb:9.0.17.1 $PREFIX/$SUFFIX/appesb:latest
    # 数据可视化
    docker tag registry.cn-hangzhou.aliyuncs.com/sw/appmdmdc:9.0.17.1 $PREFIX/$SUFFIX/appmdmdc:latest
    # 数据质量+清洗
    docker tag registry.cn-hangzhou.aliyuncs.com/sw/appclean:9.0.17.1 $PREFIX/$SUFFIX/appclean:latest
    # 任务调度
    docker tag registry.cn-hangzhou.aliyuncs.com/sw/apptask:9.0.17.1 $PREFIX/$SUFFIX/apptask:latest
    # 数据分析
    docker tag registry.cn-hangzhou.aliyuncs.com/sw/appreport:9.0.17.1 $PREFIX/$SUFFIX/appreport:latest
    # 管理控制台
    docker tag registry.cn-hangzhou.aliyuncs.com/sw/appconsole:9.0.17.1 $PREFIX/$SUFFIX/appconsole:latest
    # Apollo
    docker tag registry.cn-hangzhou.aliyuncs.com/sw/apollo-all:2.0.2 $PREFIX/$SUFFIX/apollo-all:latest
    # Apollo-Admin
    docker tag registry.cn-hangzhou.aliyuncs.com/sw/apollo-all:2.0.2 $PREFIX/$SUFFIX/apollo-admin:latest
    # Apollo-Config
    docker tag registry.cn-hangzhou.aliyuncs.com/sw/apollo-all:2.0.2 $PREFIX/$SUFFIX/apollo-config:latest
    # Apollo-Portal
    docker tag registry.cn-hangzhou.aliyuncs.com/sw/apollo-all:2.0.2 $PREFIX/$SUFFIX/apollo-portal:latest

    # 推送镜像
    # eureka
    docker push $PREFIX/$SUFFIX/appeureka:latest
    # zuul
    docker push $PREFIX/$SUFFIX/appzuul:latest
    # 基础平台
    docker push $PREFIX/$SUFFIX/appcore:latest
    # 监控平台
    docker push $PREFIX/$SUFFIX/appadmin:latest
    # 前端资源包
    docker push $PREFIX/$SUFFIX/appmdmui:latest
    # 静态资源包+nginx
    docker push $PREFIX/$SUFFIX/apphome:latest
    # 工作流引擎
    docker push $PREFIX/$SUFFIX/appbpm:latest
    # 编码引擎
    docker push $PREFIX/$SUFFIX/appengine:latest
    # 数据标准平台
    docker push $PREFIX/$SUFFIX/appmodule:latest
    # 数据全生命周期平台
    docker push $PREFIX/$SUFFIX/appcode:latest
    # 数据查询
    docker push $PREFIX/$SUFFIX/appquery:latest
    # 数据交换
    docker push $PREFIX/$SUFFIX/appesb:latest
    # 数据可视化
    docker push $PREFIX/$SUFFIX/appmdmdc:latest
    # 数据质量+清洗
    docker push $PREFIX/$SUFFIX/appclean:latest
    # 任务调度
    docker push $PREFIX/$SUFFIX/apptask:latest
    # 数据分析
    docker push $PREFIX/$SUFFIX/appreport:latest
    # 管理控制台
    docker push $PREFIX/$SUFFIX/appconsole:latest
    # Apollo
    docker push $PREFIX/$SUFFIX/apollo-all:latest
    # Apollo-Admin
    docker push $PREFIX/$SUFFIX/apollo-admin:latest
    # Apollo-Config
    docker push $PREFIX/$SUFFIX/apollo-config:latest
    # Apollo-Portal
    docker push $PREFIX/$SUFFIX/apollo-portal:latest

创建ECS集群

  1. 创建类型: EC2 Linux + 联网

  2. 按照表格信息填充集群信息

    项目名称 备注
    集群名称 MDM-zhy-TEST
    预配置模型 按需实例 测试阶段暂时使用OD
    EC2 实例类型 m5.xlarge 使用m5系列进行测试
    实例的数量 1
    EC2 AMI ID Amazon Linux 2 默认2代, 一代已停止维护
    密钥对 OPS-DEV-774564 应选择已存在的密钥对, 避免无法登陆实例排查问题
    VPC vpc-0f89b0d8d429ced6c 选择已有VPC, 该VPC应与内网打通
    子网 .... 选择已有VPC下的所有私网子网
    安全组 sg-0e40790459c09c0f9 测试阶段, 该安全组对内网开放所有端口
  3. 点击创建, 创建好ECS集群

创建目标群组

按照如下表格, 分别创建暴露服务的目标群组

名称 类型 协议 端口
gw-zhy-mdm-test-eureka Instances TCP 8761
gw-zhy-mdm-test-apollo-8070 Instances TCP 8070
gw-zhy-mdm-test-apollo-8090 Instances TCP 8090
gw-zhy-mdm-test-apollo-8847 Instances TCP 8847
gw-zhy-mdm-test-zuul Instances TCP 8080
gw-zhy-mdm-test-portal Instances TCP 80
gw-zhy-mdm-test-appcore Instances TCP 7001
gw-zhy-mdm-test-appmdmui Instances TCP 7000

创建好所有TG后, 需要修改每个TG的属性, 关闭Preserve client IP addresses, 否则转发至同一EC2的包会被操作系统丢弃!

关闭Preserve client IP addresses配置

创建ELB

eureka ELB

项目名称 备注
类型 Network Load Balancer
名称 gw-zhy-mdm-test-eureka
模式 内网
VPC vpc-0f89b0d8d429ced6c 选择已有VPC, 该VPC应与内网打通
子网 .... 选择已有VPC下的所有私网子网
监听器协议 TCP
监听器端口 8761
监听器默认规则 FW 2 gw-zhy-mdm-test-eureka 转发至已创建的目标群组

apollo ELB

项目名称 备注
类型 Network Load Balancer
名称 gw-zhy-mdm-test-apollo
模式 内网
VPC vpc-0f89b0d8d429ced6c 选择已有VPC, 该VPC应与内网打通
子网 .... 选择已有VPC下的所有私网子网
监听器1协议 TCP
监听器1端口 8070
监听器1默认规则 FW 2 gw-zhy-mdm-test-apollo-8070 转发至已创建的目标群组
监听器2协议 TCP
监听器2端口 8090
监听器2默认规则 FW 2 gw-zhy-mdm-test-apollo-8090 转发至已创建的目标群组
监听器3协议 TCP
监听器3端口 8847
监听器3默认规则 FW 2 gw-zhy-mdm-test-apollo-8847 转发至已创建的目标群组

zuul ELB

项目名称 备注
类型 Network Load Balancer
名称 gw-zhy-mdm-test-zuul
模式 内网
VPC vpc-0f89b0d8d429ced6c 选择已有VPC, 该VPC应与内网打通
子网 .... 选择已有VPC下的所有私网子网
监听器协议 TCP
监听器端口 8080
监听器默认规则 FW 2 gw-zhy-mdm-test-zuul 转发至已创建的目标群组

portal ELB

项目名称 备注
类型 Network Load Balancer
名称 gw-zhy-mdm-test-eureka
模式 内网
VPC vpc-0f89b0d8d429ced6c 选择已有VPC, 该VPC应与内网打通
子网 .... 选择已有VPC下的所有私网子网
监听器协议 TCP
监听器端口 80
监听器默认规则 FW 2 gw-zhy-mdm-test-portal 转发至已创建的目标群组

app ELB

项目名称 备注
类型 Network Load Balancer
名称 gw-zhy-mdm-test-app
模式 内网
VPC vpc-0f89b0d8d429ced6c 选择已有VPC, 该VPC应与内网打通
子网 .... 选择已有VPC下的所有私网子网
监听器1协议 TCP
监听器1端口 7000
监听器1默认规则 FW 2 gw-zhy-mdm-test-appmdmui 转发至已创建的目标群组
监听器2协议 TCP
监听器2端口 7001
监听器2默认规则 FW 2 gw-zhy-mdm-test-appcore 转发至已创建的目标群组

创建ECS任务

任务名遵循以下原则: gw-zhy-mdm-test-SERVICE

创建Eureka服务

  1. 创建任务定义

    项目名称 备注
    任务定义名称 gw-zhy-mdm-test-eureka
    任务角色 ecsTaskExecutionRole
    网络模式 桥接
    兼容性 EC2
    任务执行角色 ecsTaskExecutionRole
    任务内存 (MiB) 1024
    任务 CPU (单元) 1024
    容器名称 gw-zhy-mdm-test-eureka
    映像 774564366034.dkr.ecr.cn-northwest-1.amazonaws.com.cn/mdm-test/appeureka:latest
    内存限制 (MiB) 硬限制 1024
    端口映射 主机端口 0, 容器端口 8761, 协议TCP 8761为Eureka默认注册服务暴露端口
    环境变量 KEY=JAVA_XMS, 类型VALUE, VALUE=1024m 设置JVM虚拟机最小内存容量
    环境变量 KEY=JAVA_XMX, 类型VALUE, VALUE=1024m 设置JVM虚拟机最大内存容量

    其他参数保持默认即可

    Eureka-任务定义
    Eureka容器定义
    Eureka JVM配置
  2. 点击任务定义的操作->创建服务

    项目名称 备注
    启动类型 EC2
    集群 MDM-zhy-TEST
    服务名称 gw-zhy-mdm-test-eureka
    服务类型 REPLICA
    任务数 1
    最小正常运行百分比 100
    最大百分比 200
    部署类型 滚动更新
    放置模板 AZ 均衡分散
    启动ECS管理标签
    传播以下来源的标签 服务
    运行状况检查宽限期 300
    负载均衡器类型 Network Load Balancer
    为服务选择IAM角色 ecsServiceRole
    负载均衡器名称 gw-zhy-mdm-test-eureka
    目标组名称 gw-zhy-mdm-test-eureka
    服务Auto Scaling 请勿调整服务的预期计数
    Eureka 创建服务
    Eureka 配置网络
    Eureka 设置AS
    Eureka服务总览
  3. 等待服务启动完成, 登录ELB地址:8761查看Eureka是否正确启动

创建Apollo服务

  1. 创建任务定义

    创建任务定义

    项目名称 备注
    任务定义名称 gw-zhy-mdm-test-apollo
    任务角色 ecsTaskExecutionRole
    网络模式 桥接
    兼容性 EC2
    任务执行角色 ecsTaskExecutionRole
    任务内存 (MiB) 1024
    任务 CPU (单元) 512
    容器名称 gw-zhy-mdm-test-apollo
    映像 774564366034.dkr.ecr.cn-northwest-1.amazonaws.com.cn/mdm-test/apollo-all:latest
    内存限制 (MiB) 硬限制 1024
    端口映射 主机端口 0, 容器端口 8847, 协议TCP 8847为Apollo的内置Eureka默认注册服务暴露端口
    端口映射 主机端口 0, 容器端口 8070, 协议TCP 8070为Apollo Web默认服务暴露端口
    端口映射 主机端口 0, 容器端口 8090, 协议TCP 8090为Apollo Admin默认服务暴露端口
    环境变量 KEY=DEV_ADMIN_PORT, 类型VALUE, VALUE=8090
    环境变量 KEY=DEV_CONFIG_PORT, 类型VALUE, VALUE=8847
    环境变量 KEY=DEV_DB, 类型VALUE, VALUE=jdbc:mysql://mdm-zhy-test.cmwyyp2qd6fi.rds.cn-northwest-1.amazonaws.com.cn:3306/apolloconfigdb?characterEncoding=utf8
    环境变量 KEY=DEV_DB_PWD, 类型VALUE, VALUE=Initial-1
    环境变量 KEY=DEV_DB_USER, 类型VALUE, VALUE=a_admin
    环境变量 KEY=JAVA_OPTS, 类型VALUE, VALUE=-Deureka.instance.ip-address=gw-zhy-mdm-test-apollo-5f97dee6484da0fc.elb.cn-northwest-1.amazonaws.com.cn
    环境变量 KEY=PORTAL_DB, 类型VALUE, VALUE=jdbc:mysql://mdm-zhy-test.cmwyyp2qd6fi.rds.cn-northwest-1.amazonaws.com.cn:3306/apolloportaldb?characterEncoding=utf8
    环境变量 KEY=PORTAL_DB_PWD, 类型VALUE, VALUE=Initial-1
    环境变量 KEY=PORTAL_DB_USER, 类型VALUE, VALUE=a_admin

    其他参数保持默认即可

  2. 创建服务

    因为apollo服务需要暴露3个端口对外提供服务, 因此无法使用console正常配置, 需要使用CLI或者CF进行创建

    结果来源: 7745账号工单:1521119754

    更多信息: 向服务注册多个目标组 跳转至示例:从同一容器公开多个端口

    1
    2
    # 查看已有配置JSON数据
    aws --profile 7745 ecs describe-services --cluster MDM-zhy-TEST --services gw-zhy-mdm-test-eureka

    结果如下:

    点击展开

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    {
    "services": [
    {
    "launchType": "EC2",
    "enableECSManagedTags": true,
    "loadBalancers": [
    {
    "containerName": "gw-zhy-mdm-test-eureka",
    "targetGroupArn": "arn:aws-cn:elasticloadbalancing:cn-northwest-1:774564366034:targetgroup/gw-zhy-mdm-test-eureka/abef9286efe2da15",
    "containerPort": 8761
    }
    ],
    "desiredCount": 1,
    "clusterArn": "arn:aws-cn:ecs:cn-northwest-1:774564366034:cluster/MDM-zhy-TEST",
    "serviceArn": "arn:aws-cn:ecs:cn-northwest-1:774564366034:service/MDM-zhy-TEST/gw-zhy-mdm-test-eureka",
    "deploymentConfiguration": {
    "maximumPercent": 200,
    "minimumHealthyPercent": 100
    },
    "createdAt": 1627436994.237,
    "healthCheckGracePeriodSeconds": 0,
    "schedulingStrategy": "REPLICA",
    "placementConstraints": [],
    "deployments": [
    {
    "status": "PRIMARY",
    "pendingCount": 0,
    "launchType": "EC2",
    "createdAt": 1627436994.237,
    "desiredCount": 1,
    "taskDefinition": "arn:aws-cn:ecs:cn-northwest-1:774564366034:task-definition/gw-zhy-mdm-test-eureka:2",
    "updatedAt": 1627437282.008,
    "id": "ecs-svc/2374878498494776031",
    "runningCount": 1
    }
    ],
    "serviceName": "gw-zhy-mdm-test-eureka",
    "events": [
    {
    "message": "(service gw-zhy-mdm-test-eureka) has reached a steady state.",
    "id": "cadf0eba-09b1-43f3-a3bd-67ad78f703a7",
    "createdAt": 1627437282.016
    },
    {
    "message": "(service gw-zhy-mdm-test-eureka) (deployment ecs-svc/2374878498494776031) deployment completed.",
    "id": "c9b5310a-1369-4f24-b74e-e6d851530fa2",
    "createdAt": 1627437282.015
    },
    {
    "message": "(service gw-zhy-mdm-test-eureka) registered 1 targets in (target-group arn:aws-cn:elasticloadbalancing:cn-northwest-1:774564366034:targetgroup/gw-zhy-mdm-test-eureka/abef9286efe2da15)",
    "id": "0afebc5e-421e-4e83-96a8-63205d7bfd04",
    "createdAt": 1627437007.355
    },
    {
    "message": "(service gw-zhy-mdm-test-eureka) has started 1 tasks: (task 3b7fa3a2c5f340f3b5e53a021643500b).",
    "id": "c12e6e74-5fda-4305-88e8-5aae1d6f91fb",
    "createdAt": 1627436995.845
    }
    ],
    "runningCount": 1,
    "status": "ACTIVE",
    "serviceRegistries": [],
    "pendingCount": 0,
    "createdBy": "arn:aws-cn:iam::774564366034:role/admin_role",
    "placementStrategy": [
    {
    "field": "attribute:ecs.availability-zone",
    "type": "spread"
    },
    {
    "field": "instanceId",
    "type": "spread"
    }
    ],
    "propagateTags": "NONE",
    "roleArn": "arn:aws-cn:iam::774564366034:role/ecsServiceRole",
    "taskDefinition": "arn:aws-cn:ecs:cn-northwest-1:774564366034:task-definition/gw-zhy-mdm-test-eureka:2"
    }
    ],
    "failures": []
    }

    保存并按照需求修改JSON, 并保存为gw-zhy-mdm-test-apollo.json

    点击展开

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    {
    "cluster": "MDM-zhy-TEST",
    "serviceName": "gw-zhy-mdm-test-apollo",
    "taskDefinition": "gw-zhy-mdm-test-apollo:9",
    "loadBalancers": [
    {
    "targetGroupArn": "arn:aws-cn:elasticloadbalancing:cn-northwest-1:774564366034:targetgroup/gw-zhy-mdm-test-apollo-8070/4112625ab77c268b",
    "containerName": "gw-zhy-mdm-test-apollo",
    "containerPort": 8070
    },
    {
    "targetGroupArn": "arn:aws-cn:elasticloadbalancing:cn-northwest-1:774564366034:targetgroup/gw-zhy-mdm-test-apollo-8090/f5be0d4ab31aa942",
    "containerName": "gw-zhy-mdm-test-apollo",
    "containerPort": 8090
    },
    {
    "targetGroupArn": "arn:aws-cn:elasticloadbalancing:cn-northwest-1:774564366034:targetgroup/gw-zhy-mdm-test-apollo-8847/de25571bfd4d68be",
    "containerName": "gw-zhy-mdm-test-apollo",
    "containerPort": 8847
    }
    ],
    "serviceRegistries": [],
    "desiredCount": 1,
    "clientToken": "",
    "launchType": "EC2",
    "role": "",
    "deploymentConfiguration": {
    "maximumPercent": 200,
    "minimumHealthyPercent": 100
    },
    "placementStrategy": [
    {
    "field": "attribute:ecs.availability-zone",
    "type": "spread"
    },
    {
    "field": "instanceId",
    "type": "spread"
    }
    ],
    "healthCheckGracePeriodSeconds": 600,
    "schedulingStrategy": "REPLICA",
    "deploymentController": {
    "type": "ECS"
    },
    "enableECSManagedTags": true,
    "propagateTags": "SERVICE"
    }

    : "healthCheckGracePeriodSeconds": 600这行配置表示服务启动检查时间, 默认为0, 因为apollo服务启动大致需要10分钟左右, 因此需要将这个值设置为600, 避免服务未启动完就被ECS判定为失败

    使用命令创建服务

    1
    2
    # 使用JSON创建服务
    aws --profile 7745 ecs create-service --cluster MDM-zhy-TEST --cli-input-json file://gw-zhy-mdm-test-apollo.json

    返回结果

    点击展开

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    {
    "service": {
    "launchType": "EC2",
    "enableECSManagedTags": true,
    "loadBalancers": [
    {
    "containerName": "gw-zhy-mdm-test-apollo",
    "targetGroupArn": "arn:aws-cn:elasticloadbalancing:cn-northwest-1:774564366034:targetgroup/gw-zhy-mdm-test-apollo-8070/4112625ab77c268b",
    "containerPort": 8070
    },
    {
    "containerName": "gw-zhy-mdm-test-apollo",
    "targetGroupArn": "arn:aws-cn:elasticloadbalancing:cn-northwest-1:774564366034:targetgroup/gw-zhy-mdm-test-apollo-8090/f5be0d4ab31aa942",
    "containerPort": 8090
    },
    {
    "containerName": "gw-zhy-mdm-test-apollo",
    "targetGroupArn": "arn:aws-cn:elasticloadbalancing:cn-northwest-1:774564366034:targetgroup/gw-zhy-mdm-test-apollo-8847/de25571bfd4d68be",
    "containerPort": 8847
    }
    ],
    "desiredCount": 1,
    "clusterArn": "arn:aws-cn:ecs:cn-northwest-1:774564366034:cluster/MDM-zhy-TEST",
    "serviceArn": "arn:aws-cn:ecs:cn-northwest-1:774564366034:service/MDM-zhy-TEST/gw-zhy-mdm-test-apollo1",
    "deploymentConfiguration": {
    "maximumPercent": 200,
    "minimumHealthyPercent": 100
    },
    "createdAt": 1627457136.545,
    "healthCheckGracePeriodSeconds": 0,
    "schedulingStrategy": "REPLICA",
    "placementConstraints": [],
    "deployments": [
    {
    "status": "PRIMARY",
    "pendingCount": 0,
    "launchType": "EC2",
    "createdAt": 1627457136.545,
    "desiredCount": 1,
    "taskDefinition": "arn:aws-cn:ecs:cn-northwest-1:774564366034:task-definition/gw-zhy-mdm-test-apollo:9",
    "updatedAt": 1627457136.545,
    "id": "ecs-svc/3367682516307587244",
    "runningCount": 0
    }
    ],
    "serviceName": "gw-zhy-mdm-test-apollo",
    "events": [],
    "runningCount": 0,
    "status": "ACTIVE",
    "serviceRegistries": [],
    "pendingCount": 0,
    "createdBy": "arn:aws-cn:iam::774564366034:user/zhouruixi",
    "placementStrategy": [
    {
    "field": "attribute:ecs.availability-zone",
    "type": "spread"
    },
    {
    "field": "instanceId",
    "type": "spread"
    }
    ],
    "propagateTags": "SERVICE",
    "roleArn": "arn:aws-cn:iam::774564366034:role/aws-service-role/ecs.amazonaws.com/AWSServiceRoleForECS",
    "taskDefinition": "arn:aws-cn:ecs:cn-northwest-1:774564366034:task-definition/gw-zhy-mdm-test-apollo:9"
    }
    }
  3. 等待服务启动完成, 登录ELB地址:8070查看Apollo服务是否正确启动

创建Zuul服务

  1. 创建任务定义

    项目名称 备注
    任务定义名称 gw-zhy-mdm-test-zuul
    任务角色 ecsTaskExecutionRole
    网络模式 桥接
    兼容性 EC2
    任务执行角色 ecsTaskExecutionRole
    任务内存 (MiB) 1024
    任务 CPU (单元) 1024
    容器名称 gw-zhy-mdm-test-zuul
    映像 774564366034.dkr.ecr.cn-northwest-1.amazonaws.com.cn/mdm-test/appzuul:latest
    内存限制 (MiB) 硬限制 1024
    端口映射 主机端口 0, 容器端口 8080, 协议TCP 8080为Zuul默认网关服务暴露端口
    环境变量 KEY=JAVA_XMS, 类型VALUE, VALUE=1024m 设置JVM虚拟机最小内存容量
    环境变量 KEY=JAVA_XMX, 类型VALUE, VALUE=1024m 设置JVM虚拟机最大内存容量
    环境变量 KEY=apollo.bootstrap.namespaces, 类型VALUE, VALUE=application,MySQL27Conf 设置Apollo服务读取配置文件名称
    环境变量 KEY=ENV, 类型VALUE, VALUE=DEV 设置当前运行环境
    环境变量 KEY=apollo.meta, 类型VALUE, VALUE=http://gw-zhy-mdm-test-apollo-5f97dee6484da0fc.elb.cn-northwest-1.amazonaws.com.cn:8847/ 设置Apollo的Eureka注册地址

    其他参数保持默认即可

  2. 点击任务定义的操作->创建服务

    项目名称 备注
    启动类型 EC2
    集群 MDM-zhy-TEST
    服务名称 gw-zhy-mdm-test-zuul
    服务类型 REPLICA
    任务数 1
    最小正常运行百分比 100
    最大百分比 200
    部署类型 滚动更新
    放置模板 AZ 均衡分散
    启动ECS管理标签
    传播以下来源的标签 服务
    运行状况检查宽限期 300
    负载均衡器类型 Network Load Balancer
    为服务选择IAM角色 ecsServiceRole
    负载均衡器名称 gw-zhy-mdm-test-zuul
    目标组名称 gw-zhy-mdm-test-zuul
    服务Auto Scaling 请勿调整服务的预期计数
  3. 等待服务启动完成, 登录ELB地址:8080查看Zuul是否正确启动

创建AppCore服务

  1. 创建任务定义

    项目名称 备注
    任务定义名称 gw-zhy-mdm-test-appcore
    任务角色 ecsTaskExecutionRole
    网络模式 桥接
    兼容性 EC2
    任务执行角色 ecsTaskExecutionRole
    任务内存 (MiB) 4096
    任务 CPU (单元) 4096
    容器名称 gw-zhy-mdm-test-appcore
    映像 774564366034.dkr.ecr.cn-northwest-1.amazonaws.com.cn/mdm-test/appcore:latest
    内存限制 (MiB) 硬限制 4096
    端口映射 主机端口 0, 容器端口 7001, 协议TCP 7001为Core默认服务暴露端口
    环境变量 KEY=JAVA_XMS, 类型VALUE, VALUE=4096m 设置JVM虚拟机最小内存容量
    环境变量 KEY=JAVA_XMX, 类型VALUE, VALUE=4096m 设置JVM虚拟机最大内存容量
    环境变量 KEY=apollo.bootstrap.namespaces, 类型VALUE, VALUE=application,MySQL27Conf 设置Apollo服务读取配置文件名称
    环境变量 KEY=ENV, 类型VALUE, VALUE=DEV 设置当前运行环境
    环境变量 KEY=apollo.meta, 类型VALUE, VALUE=http://gw-zhy-mdm-test-apollo-5f97dee6484da0fc.elb.cn-northwest-1.amazonaws.com.cn:8847/ 设置Apollo的Eureka注册地址
    环境变量 KEY=ENV_MQ, 类型VALUE, VALUE=8813

    其他参数保持默认即可

  2. 点击任务定义的操作->创建服务

    项目名称 备注
    启动类型 EC2
    集群 MDM-zhy-TEST
    服务名称 gw-zhy-mdm-test-appcore
    服务类型 REPLICA
    任务数 1
    最小正常运行百分比 100
    最大百分比 200
    部署类型 滚动更新
    放置模板 AZ 均衡分散
    启动ECS管理标签
    传播以下来源的标签 服务
    运行状况检查宽限期 300
    负载均衡器类型 Network Load Balancer
    为服务选择IAM角色 ecsServiceRole
    负载均衡器名称 gw-zhy-mdm-test-portal
    目标组名称 gw-zhy-mdm-test-appcore
    服务Auto Scaling 请勿调整服务的预期计数
  3. 等待服务启动完成, 登录ELB地址:7001查看AppCore是否正确启动, 正确结果应该是404 NotFound

创建AppHome服务

  1. 创建任务定义

    项目名称 备注
    任务定义名称 gw-zhy-mdm-test-apphome
    任务角色 ecsTaskExecutionRole
    网络模式 桥接
    兼容性 EC2
    任务执行角色 ecsTaskExecutionRole
    任务内存 (MiB) 1024
    任务 CPU (单元) 1024
    容器名称 gw-zhy-mdm-test-apphome
    映像 774564366034.dkr.ecr.cn-northwest-1.amazonaws.com.cn/mdm-test/apphome:latest
    内存限制 (MiB) 硬限制 1024
    端口映射 主机端口 0, 容器端口 80, 协议TCP 80为AppHome默认WEB服务暴露端口
    环境变量 KEY=APP_ZUUL_HOST, 类型VALUE, VALUE=gw-zhy-mdm-test-zuul-b36e86a95302fd92.elb.cn-northwest-1.amazonaws.com.cn:8080 设置Zuul地址

    其他参数保持默认即可

  2. 点击任务定义的操作->创建服务

    项目名称 备注
    启动类型 EC2
    集群 MDM-zhy-TEST
    服务名称 gw-zhy-mdm-test-apphome
    服务类型 REPLICA
    任务数 1
    最小正常运行百分比 100
    最大百分比 200
    部署类型 滚动更新
    放置模板 AZ 均衡分散
    启动ECS管理标签
    传播以下来源的标签 服务
    运行状况检查宽限期 300
    负载均衡器类型 Network Load Balancer
    为服务选择IAM角色 ecsServiceRole
    负载均衡器名称 gw-zhy-mdm-test-portal
    目标组名称 gw-zhy-mdm-test-portal
    服务Auto Scaling 请勿调整服务的预期计数
  3. 等待服务启动完成, 登录ELB地址:80/mdm/查看AppHome是否正确启动, 正确应弹出登录框

创建AppMDMUI服务

  1. 创建任务定义

    项目名称 备注
    任务定义名称 gw-zhy-mdm-test-appmdmui
    任务角色 ecsTaskExecutionRole
    网络模式 桥接
    兼容性 EC2
    任务执行角色 ecsTaskExecutionRole
    任务内存 (MiB) 4096
    任务 CPU (单元) 1024
    容器名称 gw-zhy-mdm-test-appmdmui
    映像 774564366034.dkr.ecr.cn-northwest-1.amazonaws.com.cn/mdm-test/appmdmui:latest
    内存限制 (MiB) 硬限制 4096
    端口映射 主机端口 0, 容器端口 7000, 协议TCP 7000为MDMUI默认服务暴露端口
    环境变量 KEY=JAVA_XMS, 类型VALUE, VALUE=4096m 设置JVM虚拟机最小内存容量
    环境变量 KEY=JAVA_XMX, 类型VALUE, VALUE=4096m 设置JVM虚拟机最大内存容量
    环境变量 KEY=apollo.bootstrap.namespaces, 类型VALUE, VALUE=application,MySQL27Conf 设置Apollo服务读取配置文件名称
    环境变量 KEY=ENV, 类型VALUE, VALUE=DEV 设置当前运行环境
    环境变量 KEY=apollo.meta, 类型VALUE, VALUE=http://gw-zhy-mdm-test-apollo-5f97dee6484da0fc.elb.cn-northwest-1.amazonaws.com.cn:8847 设置Apollo的Eureka注册地址
    环境变量 KEY=ENV_MQ, 类型VALUE, VALUE=8813

    其他参数保持默认即可

  2. 点击任务定义的操作->创建服务

    项目名称 备注
    启动类型 EC2
    集群 MDM-zhy-TEST
    服务名称 gw-zhy-mdm-test-appmdmui
    服务类型 REPLICA
    任务数 1
    最小正常运行百分比 100
    最大百分比 200
    部署类型 滚动更新
    放置模板 AZ 均衡分散
    启动ECS管理标签
    传播以下来源的标签 服务
    运行状况检查宽限期 300
    负载均衡器类型 Network Load Balancer
    为服务选择IAM角色 ecsServiceRole
    负载均衡器名称 gw-zhy-mdm-test-portal
    目标组名称 gw-zhy-mdm-test-appmdmui
    服务Auto Scaling 请勿调整服务的预期计数
  3. 等待服务启动完成, 登录ELB地址:7000查看AppMDMUI是否正确启动, 正确结果应该是404 NotFound

使用ELB地址进行登录验证

登录Portal所绑定的ELB地址, 使用admin/admin进行系统登录, 确认基础服务正常运行


经上述环境验证后, 证明可使用CF创建MDM服务部署


当前环境请求流程表

步骤 请求来源 请求目标 说明 备注
1 用户 NLB-Portal 用户请求发送至NLB
2 NLB-Portal ECS-Container-AppHome NLB请求转发至ECS定义的服务AppHome
3 ECS-Container-AppHome NLB-Zuul AppHome将流量请求转发至Zuul网关 该Zuul网关信息在容器定义时以环境变量形式指定
4 NLB-Zuul ECS-Container-Zuul NLB请求转发至ECS定义的服务Zuul
5 ECS-Container-Zuul NLB-Eureka Zuul网关询问Eureka注册服务该流量转发地址 该Zuul容器在启动时将Apollo地址以环境变量形式指定, 在Apollo中配置了Eureka地址, 所有服务都将注册到Eureka
6 NLB-Eureka ECS-Container-Eureka NLB请求转发至ECS定义的服务Eureka
7 ECS-Container-Eureka NLB-Eureka 返回解析结果
8 NLB-Eureka ECS-Container-Zuul 返回解析结果给Zuul网关
9 ECS-Container-Zuul NLB-App 解析结果均为注册到NLB-App的容器 所有其他服务类容器都会注册到NLB-App这个ELB上
10 NLB-App ECS-Container-Core/ECS-Container-MDMUI NLB转发请求至服务容器