阿里云控制台找不到实例(Spring Boot Serverless 实战系列“部署篇”| Mall 应用)

简介:Spring Boot是一个基于Java Spring框架的套件,预装了Spring的一系列组件,开发者只需要很少的配置就可以创建独立的应用。在云原生环境中,有大量的平台可以运行Spring Boot应用,比如虚拟机、容器等等。但是最吸引人的是以无服务器的方式运行Spring Boot应用程序。

通过一系列文章,我将从架构、部署、监控、性能、安全五个方面分析在无服务器平台上运行Spring Boot应用的优缺点。在上一期《FC架构上的Spring Boot》中,我们对商城应用架构和无服务器平台做了基本介绍。在这篇文章中,我将告诉您如何将Mall应用程序部署到功能计算平台。为了让分析更有代表性,我选择了Github上50k多星的电商应用mall作为例子。

前置条件

准备阶段:

  • 你需要有一个阿里云账号;
  • 你需要有一台可以通过公共ip访问的机器,安装MySQL、Redis等商城应用的软件。
  • 你需要在运行依赖软件的机器上安装Git、docker、Java、maven软件;
  • 您需要安装和配置无服务器Devs工具。
  • 注意,如果使用云主机,请先检查主机对应的安全组配置是否允许传入网络请求。创建通用主机后,严格限制入站方向的网络端口访问。我们需要手动允许访问MySQL端口3306、Redis端口6379等等。如下图所示,我手动设置了安全组以允许所有传入的网络请求。

    部署依赖软件

    商城应用依赖于MySQL、Redis、MongoDB、ElasticSearch、RabbitMQ等软件。这些软件在云上都有相应的云产品。在生产环境中,建议使用云产品,以获得更好的性能和可用性。在个人开发或POC原型演示的场景中,我们选择一个虚拟机来封装和部署所有相关软件。

    1.1克隆代码仓库

    git clone https://github.com/hryang/mall's国内接入github网络不是很好。如果克隆太慢,可以用Gitee地址。

    git clone https://gitee.com/aliyunfc/mall.git1.2构建并运行Docker映像

    在代码根目录下的docker文件夹下,有一个docker文件对应着每一个依赖的软件。在代码的根目录下运行run.sh脚本将自动构建所有依赖于该软件并在这台机器上运行的Docker映像。

    Obashdocker.sh 1.3验证依赖软件的运行状态

    执行Docker ps命令,检查依赖软件是否正常运行。

    Sudokerps 部署商城应用2.1修改商城应用配置

    修改以下三个yaml文件,将host字段改为步骤1中安装MySQL等软件的节点的public ip,如图:

    mall-admin/src/main/resources/application-prod . yml

    商城-门户/src/main/resources/application-prod . yml

    商城-搜索/src/main/资源/应用-产品. yml



    2.2生成商城应用程序容器映像

    执行maven打包命令生成Docker镜像,镜像可以在本地的Java8或者Java11环境下。

    sudo -E mvn包成功后,将显示以下成功消息。

    阿里云控制台



    执行sudo docker images,应该能看到1.0快照版的商城/商城-管理、商城/商城-门户、商城/商城-搜索的图片。



    2.3将图像推送到阿里云图像仓库

    首先登录阿里云镜像仓控制台,选择个人版实例,让docker根据提示登录阿里云镜像仓。



    然后创建一个命名的空房间。如下图所示,我们创建了一个命名为空的房间,命名为quanxi-hryang。



    根据前面的步骤,我们已经在本地生成了商城/商城-管理、商城/商城-门户和商城/商城-搜索的图像。

    执行下面的命令,将mall-admin镜像推送到杭州quanxi-hryang命名为空的房间下的镜像仓库。

    请将以下命令中的cn-hangzhou和quanxi-hryang改为自己的镜像仓库区域,并命名为空房间。商城/商城-门户,商城/商城-搜索等等。

    sudo docker标签mall/mall-admin:1.0-SNAPSHOT registry . cn-Hangzhou . aliyuncs . com/quanxi-hryang/mall-admin:1.0-SNAPSHOT sudo ker推送Registry.cn-Hangzhou.aliyuncs.com/Quanxi-hryang/mall-admin: 1.0-SNAPSHOT2.4修改无服务器Devs工具的应用定义

    我们使用无服务器Devs工具来定义和部署应用程序。项目根目录下有s.yaml文件,是无服务器Devs工具的项目定义文件。这定义了函数计算的资源。

    如下图所示,我们已经在函数计算中定义了名为mall-admin的服务及其下的mall-admin函数。该函数定义了端口、内存大小、超时、运行时间和其他属性。红框中的内容需要根据自己的配置进行修改。

  • Access是您用s config配置的身份,默认值是default。如果您使用默认设置,则无需在此处进行更改。
  • 地区是您要部署的地区,有cn-杭、cn-沪、cn-京、cn-沈正等选项。
  • 当函数使用自定义容器运行时,需要指定镜像地址。请将s.yaml中的镜像地址更改为您在上一步中推送的mall-admin镜像地址。同样,您需要在s.yaml中更改商城门户和商城搜索的镜像地址


  • (建议:以上镜像地址最好是registry-vpc.cn-Hangzhou.aliyuncs.com/fc-demo/mall-admin: 1.0-快照的形式)

    2.5将商城部署到功能计算平台

    执行部署命令。成功部署后,您将看到相应的访问地址。



    在浏览器中输入生成的网址。如果显示“尚未登录或令牌已过期”,则服务部署成功。

    (注:Serverless的特点是,默认情况下,系统在请求到达之前不会创建实例,所以第一次启动需要很长时间,称为冷启动。商城应用一般需要30s左右启动。我们将在后面的性能调优文章中讨论这个问题,并使用一系列方法进行优化。)

    可以通过访问相应的swagger api调试页面host/Swagger-ui.html来调试相关的后端api。



    2.6查看应用程序日志

    我们已经在s.yaml中为每个服务设置了logConfig:auto,这意味着serverless-devs工具将自动为服务创建一个日志存储,所有服务共享一个日志存储。应用程序的所有日志都输出到。

  • 您可以使用s logs命令查看某个时间点的所有服务的日志;
  • 您也可以使用商城管理日志来查看商城管理功能的日志;
  • 也可以使用s mall-admin logs -t以跟进模式实时显示当前时间点之后的日志;
  • 您还可以使用small-admin logs-keyword = abc来查看包含关键字abc的日志。
  • 日志对于理解服务操作和诊断问题非常有用。比如我们执行mall-admin logs-t进入后续模式,然后在浏览器中访问mall-admin服务的端点,查看整个应用的启动和请求处理日志。



    2.7部署商城前端项目

    商城还提供了基于Vue+元素的前端界面。主要包括商品管理、订单管理、会员管理、促销管理、运营管理、内容管理、统计报表、财务管理、权限管理、设置等功能。这个项目在函数计算上也可以无缝运行。

    首先,在您的机器上安装nodejs12和npm,并下载项目源代码。

    GitClone在https://github.com/hryang/mall-admin-web.访问github网络不是很好如果克隆太慢,可以用下面的代理地址。

    git clone https://gitee.com/aliyunfc/mall-admin-web.git(注意:它必须是nodejs 12或14,太新版本的节点将无法编译)

    修改config/prod.env.js,将BASE_API改为之前在函数计算中部署成功的mall-admin的端点。



    在项目的根目录中执行以下命令来构建前端项目。

    n install NPM run build成功运行后,将生成dist目录。运行项目根目录下的docker.sh脚本来生成图像。

    Sudbash Docker.sh运行docker images命令,您将看到mall/mall-admin-web映像已经成功生成。将图像推送到阿里云图像仓库。

    同样,请将下面命令中的cn-hangzhou和quanxi-hryang改为自己的镜像仓库区域,并命名为空 room。

    sudo docker标签mall/mall-admin-web:1.0-SNAPSHOT registry . cn-Hangzhou . aliyuncs . com/quan Xi-hryang/mall-admin-web:1.0-SNAPSHOT sudo ker推送registry . cn-Hangzhou . aliyuncs . com/quan Xi-hryang/mall-admin-web:1.0-SNAPSHOT修改项目根目录下的s.yaml。类似于部署mall-admin,根据自己的配置调整访问和区域,将镜像更改为上一步成功推送的镜像地址。



    执行s deploy,部署成功后可以看到商城-管理-web服务的URL。通过浏览器访问,您将看到登录页面。填入密码macro123,就可以看到完整的效果。

    (注意:第一次由于冷启动,登录页面可能会报告超时错误。只需再次刷新页面。我们将在下面的性能调优文章中优化冷启动性能。)

    总结

    因为无服务器平台内置了网关,负责路由、实例拉取/运行/容错/自动扩容收缩等。,在上传应用程序代码包或映像后,开发者就已经发布了一个灵活且高可用的服务。综上所述,只要完成以下五个步骤,商城应用就将全面部署在功能计算平台上。对应用程序的后续更新只需要重复步骤4和5。可见,Serverless免去了环境配置、运维等重复性工作,大大提高了开发和运维的效率。

  • 克隆项目代码
  • 找到一个VM,运行脚本,一键安装MySQL、Redis等依赖软件。
  • 修改应用程序配置中的主机项目,并在步骤2中将值填写为VM public ip。
  • 生成应用映像,推送到阿里云映像仓库。
  • 部署到功能计算平台。
  • 文中网址汇总

    ①Spring Boot:

    https://spring.io/projects/spring-boot

    2)商城:

    https://github.com/macrozheng/mall

    3)无服务器Devs安装文档:

    http://server less-devs . com/zh-cn/docs/installed/CLI install . html

    原文链接:http://click . aliyun . com/m/1000318167/

    本文为阿里云原创内容,未经允许不得转载。

    您可以还会对下面的文章感兴趣

    使用微信扫描二维码后

    点击右上角发送给好友