快速部署
本章节主要指导用户如何自动化部署“快速构建云原生订单管理系统”解决方案。
参数名称 |
类型 |
是否必填 |
参数解释 |
默认值 |
vpc_name |
String |
必填 |
虚拟私有云名称,该模板新建VPC,不支持重名。取值范围:1-54个字符,支持数字、字母、中文、下划线(_)、中划线(-)、点(.)。 |
cloud-native-order-management-system-demo |
cce_name |
String |
必填 |
云容器引擎CCE名称,不支持重名。取值范围:4-128个字符,以小写字母开头,由小写字母、数字、中划线(-)组成,且不能以中划线(-)结尾。 |
cloud-native-order-management-system-demo |
cluster_node1_name |
String |
必填 |
集群节点一名称,不支持重名。取值范围:1-50位,以小写字母开头,由小写字母、数字、中划线(-)组成,且不能以中划线(-)结尾。 |
cloud-native-order-management-system-demo-1 |
cluster_node1_password |
String |
必填 |
集群节点一密码,创建完成后,可参考部署指南登录ECS控制台修改密码。取值范围:8~26个字符,密码至少必须包含大写字母、小写字母、数字和特殊字符(!@$%^-_=+[{}]:,./?)中的三种。 |
空 |
cluster_node2_name |
String |
必填 |
集群节点二名称,不支持重名。取值范围:1-50位,以小写字母开头,由小写字母、数字、中划线(-)组成,且不能以中划线(-)结尾。 |
cloud-native-order-management-system-demo-2 |
cluster_node2_password |
String |
必填 |
集群节点二密码,创建完成后,可参考部署指南登录ECS控制台修改密码。取值范围:8~26个字符,密码至少必须包含大写字母、小写字母、数字和特殊字符(!@$%^-_=+[{}]:,./?)中的三种。 |
空 |
rds_name |
String |
必填 |
RDS数据库名称,不支持重名。取值范围:4-64个字符,以小写字母开头,由小写字母、数字、中划线(-)组成,且不能以中划线(-)结尾。 |
cloud-native-order-management-system-demo |
rds_password |
String |
必填 |
RDS数据库密码,创建完成后,可参考部署指南登录RDS控制台修改密码。取值范围:8~32个字符,密码至少必须包含大写字母、小写字母、数字和特殊字符(@#$%^-_=+?,()&)中的三种。 |
空 |
dms_name |
String |
必填 |
分布式消息服务名称,不支持重名。取值范围:1-50位,以小写字母开头,由小写字母、数字、中划线(-)组成,且不能以中划线(-)结尾。 |
cloud-native-order-management-system-demo |
dms_access_user |
String |
必填 |
分布式消息服务登录用户名,取值范围:1-50位,以小写字母开头,由小写字母、数字、中划线(-)组成,且不能以中划线(-)结尾。 |
saas |
dms_password |
String |
必填 |
分布式消息服务密码,创建完成后,可参考部署指南登录DMS控制台修改密码。取值范围:8~32个字符,密码至少必须包含以下字符中的三种:大写字母、小写字母、数字和特殊字符(`~!@#$%^&*()-_=+/|[{}]);''',<.>?)和空格,并且不能以中划线(-)开头。 |
空 |
- 登录华为云解决方案实践,选择“快速构建云原生订单管理系统”解决方案。数据中心下拉菜单可以选择需要部署的区域,单击“一键部署”,跳转至解决方案创建堆栈界面。
图1 解决方案实施库
- 在选择模板界面中,单击“下一步”。
图2 选择模板
- 在配置参数界面中,自定义填写堆栈名称,根据表1填写配置参数信息,单击“下一步”。
图3 配置参数
- 在资源栈设置页面中,权限委托选择“rf_admin_trust”,单击“下一步”。
图4 资源栈设置
- 在配置确认页面中,单击“创建执行计划”。
图5 配置确认
- 在弹出的创建执行计划框中,自定义填写执行计划名称,单击“确定”。
图6 创建执行计划
- 等待执行计划状态为“创建成功,待部署”后,单击“部署”,并且在弹出的执行计划确认框中单击“执行”。
图7 执行计划
图8 执行计划确认
- 待“事件”中出现“Apply required resource success”,表示该解决方案已经部署完成。
图9 部署完成
部署完成后,您可以登录控制台使用各项云服务。
- 登录华为云控制台,选择容器镜像服务SWR,单击右上角“创建组织”。进入页面后,输入组织名称。
图10 登录容器镜像服务SWR
图11 创建组织
创建组织完成后,单击右上角“上传镜像”,进入“页面上传”界面。单击图3-12所示红色框线处“使用客户端上传”。
图12 页面上传进入客户端上传页面后,单击图3-13红色框线处 “生成临时登录指令”。
图13 使用客户端上传
记录该临时登录指令备用。该临时登录指令由密钥及仓库地址组成。如图所示,马赛克处为密钥,swr.cn-north-4.myhuaweicloud.com为镜像仓库地址。该指令有效期为24小时。
图14 获取临时登录指令 - 登录云解析服务DNS,单击左侧导航栏处“域名注册”,域名注册需实名认证,认证时间约为1-3天。如图所示,“solutionascode.cn”即为创建成功的域名。
图15 域名注册
域名注册成功后,单击域名,进入域名页面。单击右上角“添加记录集”,为该域名添加记录集。
图16 进入域名页面此处需添加两个记录集,且皆为五级域名。例如“one.saas-housekeeper.cloudbu.solutionascode.cn”以及“ *.saas-housekeeper.cloudbu.solutionascode.cn”。第二个域名以“*”开头,且后四级域名需与第一个域名的后四级域名一致,即“saas-housekeeper.cloudbu.solutionascode.cn”该部分一致。其他配置如图所示,两个域名对应的解析值皆为负载均衡的公网ip地址。最后单击“确认”,成功添加记录集。此处公网ip地址,需等待前端Web模块工作负载资源创建成功,方可填入。
图17 添加记录集一图18 添加记录集二 - 登录华为云CCE云容器引擎控制台,选择“北京四”区域,在“资源管理 > 集群管理”中,可以看到该方案创建出来的CCE集群。
图19 CCE集群
- 在华为云CCE云容器引擎控制台的“资源管理 > 节点管理”中,可以看到该方案创建的集群节点。此处有两个节点,其中一个绑定了弹性公网EIP。
图20 节点管理
- 单击绑定弹性公网的节点的名称,弹出”前往云服务器详情”,单击确认。
图21 前往云服务器详情单击右上角”远程登录”界面,选择VNC登录节点,准备打包制作镜像以及初始化数据库。如果VNC使用过程中出现黑屏,刷新页面即可。图22 远程登录
- 登录弹性云服务器后,执行以下命令:
[root@saas ~]# wget https://documentation-samples.obs.cn-north-4.myhuaweicloud.com/solution-as-code-publicbucket/solution-as-code-moudle/build-a-cloud-native-order-management-system/userdata/config.sh
该命令用于下载后端配置脚本。
[root@saas ~]# source config.sh "docker login -u cn-north-4@******************* swr.cn-north-4.myhuaweicloud.com" "swr.cn-north-4.myhuaweicloud.com" "saas-housekeeper" "saas-housekeeper.cloudbu.solutionascode.cn"
该命令用于执行后端脚本。其中第一个引号内容替换为容器镜像仓库临时登录指令(见图14),第二个引号内容替换为容器镜像仓库地址,第三个引号内容替换为组织名称,第四个引号内容替换为您注册的域名的后四级域名。注意使用英文字符,并且传入脚本的各参数之间需空格,复制命令时应注意去除开头的#号,从部署文档pdf中复制命令可能会导致乱码,建议从web端中进行复制。
该步骤将用于打包后端Spring Cloud微服务模块及前端Vue模块,耗时较长,请注意不要中断网络。
[root@saas ~]# mysql -h 172.16.222.227 -P 3306 -u root -p123456 < /root/saas-housekeeper/db/initDB-V-1.0.4.sql
该命令用于执行数据库初始化,其中172.16.222.227部分替换为RDS数据库的内网ip地址,123456部分替换为RDS数据库的登录密码。
- 您可以登录容器镜像服务SWR页面,单击左侧导航栏“我的镜像”,即可查看各微服务模块的镜像。
图23 查看镜像
- 在华为云CCE云容器引擎控制台左侧导航栏的“资源 > 配置项与密钥”中,单击右上角“创建配置项”,配置集群运行所需环境变量。请填入配置项名称及配置数据,配置数据请参考表2:
图24 创建配置项
图25 查看配置项数据表2 参数配置填写说明 参数名称
类型
是否必填
参数解释
参考值
config.server
String
必填
配置中心负载域名地址:负载集群内访问端口3344,请按照参考值填写,无需修改
config-server.default.svc.cluster.local:3344
cse.ak
String
必填
配置中心密钥,请按照参考值填写,无需修改
9ZXLHCK7I6IID4A3KPMM
cse.config.server
String
必填
http://配置中心负载域名地址+负载集群内访问端口32179,请按照参考值填写,无需修改
http://config-server.default.svc.cluster.local:32179
eureka.defaultZone
String
必填
http://eurekaAdmin:123456@注册中心负载域名地址:负载集群内访问端口8100+/eureka,请按照参考值填写,无需修改
http://eurekaAdmin:123456@eureka.default.svc.cluster.local:8100/eureka
giteeUser
String
必填
gitee 登录用户名
空
giteePassword
String
必填
gitee 登录密码
空
mysql.host
String
必填
RDS数据库内网ip地址
空
mysql.username
String
必填
RDS数据库登录用户名,请按照参考值填写,无需修改
root
mysql.password
String
必填
RDS数据库密码
空
rabbitmq.host
String
必填
分布式消息服务RabbitMQ内网ip地址
空
rabbitmq.username
String
必填
分布式消息服务RabbitMQ登录用户名
空
rabbitmq.password
String
必填
分布式消息服务RabbitMQ登录密码
空
- 进入华为云CCE云容器引擎控制台的“工作负载”导航栏,在上方导航栏处选择“无状态工作负载”,单击右上角的“创建负载”添加工作负载。
图26 创建工作负载
- 进入“创建工作负载”页面后,基本信息栏,输入负载名称,选择命名空间,如果无命名空间,需创建命名空间。各负载名称及对应镜像请参考表3进行填写,请注意不要修改负载名称,nginx反向代理时将根据负载名称,通过域名访问其他负载。
图27 创建工作负载
创建工作负载时,首先创建eureka注册中心,其次创建config-server配置中心,接着再创建其他负载。
表3 参数配置填写说明 负载名称
镜像名称
frontend
front
event-tracking
saas-housekeeper-event-tracking
eureka
saas-housekeeper-eureka
config-server
saas-housekeeper-config-server
gateway
saas-housekeeper-gateway
tenantinfo-service
saas-housekeeper-tenantinfo-service
task-service
saas-housekeeper-task-service
order-service
saas-housekeeper-order-service
message-service
saas-housekeeper-message-service
service-publish-service
saas-housekeeper-service-publish-service
userinfo-service
saas-housekeeper-userinfo-service
- 在“创建工作负载”页面的容器配置栏,CPU配额及内存配额均设为“不限制”。单击“选择镜像”。
图28 配置容器信息
- 单击“选择镜像”后,我的镜像处将显示镜像名称,此处应包括11个镜像,其中10个后端微服务的镜像名称以“saas-housekeeper”开头,1个前端web的镜像名称为“front”。
图29 选择镜像
- 选择容器镜像后,镜像版本处选择“v-0.1”。
图30 选择镜像及版本
- 单击左侧导航栏处“环境变量“。单击加号,类型选择“配置项导入”,每个工作负载都需导入全部参数。
图31 创建工作负载
- 在“创建工作负载”页面的服务配置栏,单击加号,为该负载创建访问方式。例如,为“saas-housekeeper-event-tracking”模块配置集群内访问,访问类型选择“集群内访问”,端口配置选择“TCP协议”,服务端口为“8600”,容器端口为“8600”,如图3-32所示。前端web模块需要添加负载均衡,服务亲和为“节点级别”,负载均衡器处创建一个共享性负载均衡实例并开启公网访问,方便您从公网访问前端web模块,如图3-33所示。另外,部分模块还可添加“节点访问”,服务亲和为“节点级别”,方便您从集群外访问集群内的负载,如图3-34所示。各工作负载的服务配置参数请参考表4进行填写。
图32 为工作负载创建集群内访问服务
图33 为工作负载创建负载均衡服务
图34 为工作负载创建节点访问服务
表4 参数配置填写说明 负载名称
访问类型
服务端口
容器端口
节点端口
front
负载均衡
80
80
\
event-tracking
集群内访问
8600
8600
\
event-tracking
节点访问
8600
8600
32100
eureka
集群内访问
8100
8100
\
eureka
节点访问
8100
8100
31871
config-server
集群内访问
3344
3344
\
config-server
节点访问
3344
3344
32179
gateway
节点访问
9090
9090
31638
gateway
集群内访问
9090
9090
\
tenantinfo-service
集群内访问
8500
8500
\
tenantinfo-service
节点访问
8500
8500
31300
task-service
集群内访问
8090
8090
\
order-service
集群内访问
8300
8300
\
message-service
集群内访问
8175
8175
\
service-publish-service
集群内访问
8080
8080
\
userinfo-service
集群内访问
9093
9093
\
其中,config-server需要访问公网,拉取gitee上的配置,因此,config-server所在节点需配置弹性公网EIP。您可以将两个节点都配置弹性公网EIP,或者为config-server设置节点亲和,将其固定在已绑定弹性公网的节点上,如图所示。
图35 设置节点亲和考虑平台高可用性,您可以增加负载的实例个数。如果负载运行所需资源超过节点cpu或内存限制,您可以通过增加节点规格或者创建更多节点的方法进行调整。
- 创建工作负载完毕后,单击导航栏左侧“节点管理”,进入集群节点页面。单击上方导航栏处“安全组”,进入集群节点的安全组。单击红色框线处“配置规则”。
图36 进入集群节点安全组
单击导航栏“入方向规则”,单击“添加规则”,此处需添加两条入方向规则。第一条,优先级为“1”,协议端口为“全部协议”,源地址即红色框线处为RDS数据库和分布式消息服务RabbitMQ的安全组。该规则将用于连通后端节点。
图37 添加安全组入方向规则
第二条,添加入方向规则处,优先级为“1”,协议端口为“全部协议”,源地址为100.125.0.0/16,该网段放通后,负载均衡可以连通后端节点。
图38 添加安全组入方向规则 - 进入分布式消息服务DMS,查看创建的RabbitMQ的公网地址。由于RabbitMQ服务需要图形化界面进行配置,您可以通过在RabbitMQ的安全组下创建一个Windows服务器,从内网登录RabbitMQ,或者直接为RabbitMQ开启公网访问。本方案已经为您设置了公网访问,您可以在任意浏览器输入公网地址,端口为15672。输入RabbitMQ登录用户名及密码,单击“Login”。
图39 登录RabbitMQ
- 单击上方导航栏“Admin”,右边导航栏选择“Virtual Hosts”。最下方“Add a new virtual host”处填写“saas-housekeeper”,单击“Add virtual host”。
图40 创建virtual host
- 再次单击上方导航栏处单击“Admin”,下拉页面至“All user”处。单击图3-41所示红色框线处“saas”。
图41 单击进入user页面
- 下拉页面至“set permission”处,选择“saas-housekeeper”,单击“set permission”。
图42 添加virtual host
- 单击上方导航栏“Queues”,下拉页面至“Add a new queue”,“virtual host”选择“saas-housekeeper”,填写“message.queue”,单击“Add queue”。此处需再创建两个消息队列,名称分别为“order.task”,“task.order”,创建完毕后如图3-44所示。
图43 创建消息队列Queue
图44 创建三个消息队列Queue - 单击上方导航栏 “Exchanges”。单击saas-housekeeper对应的“amq.topic”。进入页面后,下拉至Bindings,如图3-46所示,分别添加“To queue”和“Routing key”。“message.queue”对应“message.#”,“order.task”对应“task.order.newOrder”,“task.order”对应“order.task.doTask”,单击“Bind”添加绑定。
图45 选择topic图46 添加Bindings图47 三个Bindings