微服务架构之Spring Boot(八十五)

2022-05-23 15:47:36 浏览数 (1)

63.5 Boxfuse和亚马逊网络服务

Boxfuse的工作原理是将您的Spring Boot可执行jar或war转换为可以在VirtualBox或AWS上无需部署的最小VM映像。Boxfuse为Spring Boot

提供深度集成,并使用Spring Boot配置文件中的信息自动配置端口和运行状况检查URL。Boxfuse利用这些信息来处理它产生的图像以及它提供

的所有资源(实例,安全组,弹性负载平衡器等)。

创建Boxfuse帐户后,将其连接到您的AWS账户,安装最新版本的Boxfuse客户端,并确保该应用程序是由Maven或Gradle构建的(例如,使

用 mvn clean package ),您可以使用类似于以下内容的命令将您的Spring Boot应用程序部署到AWS:

$ boxfuse run myapp-1.0.jar -env=prod

有关更多选项,请参阅 boxfuse run 文档。如果 boxfuse.conf 当前目录中存在文件,则会考虑该文件。

默认情况下,Boxfuse在启动时激活名为 boxfuse 的Spring个人资料。如果您的可执行jar或war包含一个

application-boxfuse.properties 文件,Boxfuse将其配置基于它包含的属性。

此时, boxfuse 为您的应用程序创建一个映像,上传它,并在AWS上配置和启动必要的资源,从而产生类似于以下示例的输出:

Fusing Image for myapp-1.0.jar ...

Image fused in 00:06.838s (53937 K) -> axelfontaine/myapp:1.0

Creating axelfontaine/myapp ...

Pushing axelfontaine/myapp:1.0 ...

Verifying axelfontaine/myapp:1.0 ...

Creating Elastic IP ...

Mapping myapp-axelfontaine.boxfuse.io to 52.28.233.167 ...

Waiting for AWS to create an AMI for axelfontaine/myapp:1.0 in eu-central-1 (this may take up to 50 seconds) ...

AMI created in 00:23.557s -> ami-d23f38cf

Creating security group boxfuse-sg_axelfontaine/myapp:1.0 ...

Launching t2.micro instance of axelfontaine/myapp:1.0 (ami-d23f38cf) in eu-central-1 ...

Instance launched in 00:30.306s -> i-92ef9f53

Waiting for AWS to boot Instance i-92ef9f53 and Payload to start at http://52.28.235.61/ ...

Payload started in 00:29.266s -> http://52.28.235.61/

Remapping Elastic IP 52.28.233.167 to i-92ef9f53 ...

Waiting 15s for AWS to complete Elastic IP Zero Downtime transition ...

Deployment completed successfully. axelfontaine/myapp:1.0 is up and running at http://myapp-axelfontaine.boxfuse.io/

您的应用程序现在应该在AWS上启动并运行。

请参阅有关在EC2上部署Spring Boot应用程序的博客文章以及Boxfuse Spring启动集成的 文档,以开始使用Maven构建来运行应用程序。

63.6 Google Cloud

Google Cloud有几个选项可用于启动Spring Boot应用程序。最容易上手的可能是App Engine,但您也可以找到在带有Container Engine的容

器中运行Spring Boot或在带有Compute Engine的虚拟机上运行的方法。

要在App Engine中运行,您可以首先在UI中创建项目,该项目为您设置唯一标识符并设置HTTP路由。将Java应用程序添加到项目中并将其留

空,然后使用Google Cloud SDK将Spring Boot应用程序从命令行或CI构建推送到该插槽。

App Engine Standard要求您使用WAR包装。按照 以下步骤 将App Engine Standard应用程序部署到Google Cloud。

或者,App Engine Flex要求您创建一个 app.yaml 文件来描述您的应用所需的资源。通常,您将此文件放在 src/main/appengine 中,它应该

类似于以下文件:

service: default

runtime: java

env: flex

runtime_config:

jdk: openjdk8

handlers:

- url: /.*

script: this field is required, but ignored

manual_scaling:

instances: 1

health_check:

enable_health_check: False

env_variables:

ENCRYPT_KEY: your_encryption_key_here

您可以通过将项目ID添加到构建配置来部署应用程序(例如,使用Maven插件),如以下示例所示:

<plugin>

<groupId>com.google.cloud.tools</groupId>

<artifactId>appengine-maven-plugin</artifactId>

<version>1.3.0</version>

<configuration>

<project>myproject</project>

</configuration>

</plugin>

然后使用 mvn appengine:deploy 进行部署(如果需要先进行身份验证,则构建失败)。

0 人点赞