MDM 测试环境部署手册
记录在AWS环境进行MDM测试系统部署过程
基础环境准备
创建AWS ECR, RDS, ElastiCache, ElasticsearchService
处理镜像, 传到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集群
创建类型: EC2 Linux + 联网
按照表格信息填充集群信息
项目名称 值 备注 集群名称 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 测试阶段, 该安全组对内网开放所有端口 点击创建, 创建好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的包会被操作系统丢弃!
创建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服务
创建任务定义
项目名称 值 备注 任务定义名称 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虚拟机最大内存容量 其他参数保持默认即可
点击任务定义的操作->创建服务
项目名称 值 备注 启动类型 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 请勿调整服务的预期计数
等待服务启动完成, 登录
ELB地址:8761查看Eureka是否正确启动
创建Apollo服务
创建任务定义
创建任务定义
项目名称 值 备注 任务定义名称 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 其他参数保持默认即可
创建服务
因为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"
}
}等待服务启动完成, 登录
ELB地址:8070查看Apollo服务是否正确启动
创建Zuul服务
创建任务定义
项目名称 值 备注 任务定义名称 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注册地址 其他参数保持默认即可
点击任务定义的操作->创建服务
项目名称 值 备注 启动类型 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 请勿调整服务的预期计数 等待服务启动完成, 登录
ELB地址:8080查看Zuul是否正确启动
创建AppCore服务
创建任务定义
项目名称 值 备注 任务定义名称 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 其他参数保持默认即可
点击任务定义的操作->创建服务
项目名称 值 备注 启动类型 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 请勿调整服务的预期计数 等待服务启动完成, 登录
ELB地址:7001查看AppCore是否正确启动, 正确结果应该是404 NotFound
创建AppHome服务
创建任务定义
项目名称 值 备注 任务定义名称 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地址 其他参数保持默认即可
点击任务定义的操作->创建服务
项目名称 值 备注 启动类型 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 请勿调整服务的预期计数 等待服务启动完成, 登录
ELB地址:80/mdm/查看AppHome是否正确启动, 正确应弹出登录框
创建AppMDMUI服务
创建任务定义
项目名称 值 备注 任务定义名称 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 其他参数保持默认即可
点击任务定义的操作->创建服务
项目名称 值 备注 启动类型 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 请勿调整服务的预期计数 等待服务启动完成, 登录
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转发请求至服务容器 |