练习 - 将 Spring Boot Redis 应用程序部署到 Azure

已完成

现在,所有内容都在本地运行,可以将应用程序部署到云,并在生产环境中测试其行为。

创建 Azure 应用服务实例

创建用于托管应用程序的 Azure 应用服务实例。 使用以下 Azure CLI 代码创建使用 Linux 的基本应用服务计划,然后在该计划中添加应用服务中的 Java 实例。

若要使用 Java 11 或 Java 17 而不是 Java 8,请使用 "JAVA|<version>-java<version>" 而不是 "JAVA|8-jre8" Web 应用程序运行时。

az appservice plan create \
    --resource-group $AZ_RESOURCE_GROUP \
    --name $AZ_REDIS_NAME-webapp-plan \
    --is-linux \
    --sku B1

az webapp create \
    --resource-group $AZ_RESOURCE_GROUP \
    --name $AZ_REDIS_NAME-webapp \
    --runtime "JAVA|8-jre8" \
    --plan $AZ_REDIS_NAME-webapp-plan

注释

前面的代码重复使用变量 $AZ_REDIS_NAME 来命名应用服务计划和应用服务实例,但可以使用不同的名称。 应用服务实例名称是 URL 的一部分,该 URL 在 Azure 中必须是唯一的。

在部署进行的同时,您可以执行下一步。

将 Spring Boot 应用程序部署到 Azure 应用服务

  1. 在项目的 pom.xml 文件中,在 <plugins> 节中添加以下新插件:

    <plugin>
        <groupId>com.microsoft.azure</groupId>
        <artifactId>azure-webapp-maven-plugin</artifactId>
        <version>2.11.0</version>
        <configuration>
            <schemaVersion>V2</schemaVersion>
            <resourceGroup>${env.AZ_RESOURCE_GROUP}</resourceGroup>
            <appName>${env.AZ_REDIS_NAME}-webapp</appName>
            <deployment>
                <resources>
                    <resource>
                        <directory>${project.basedir}/target</directory>
                        <includes>
                            <include>*.jar</include>
                        </includes>
                    </resource>
                </resources>
            </deployment>
        </configuration>
    </plugin>
    

    注释

    上述配置使用前面配置的环境变量。 若要使此配置正常工作,请确保正确设置变量 $AZ_RESOURCE_GROUP$AZ_REDIS_NAME 变量。

  2. 应用服务部署完成后,运行以下命令来打包应用程序并将其部署到 Azure:

    ./mvnw package azure-webapp:deploy
    
  3. 部署成功完成后,它将返回以下行:

    Successfully deployed the artifact to https://<redisName>-webapp.azurewebsites.net
    

    请记录正在运行的应用程序的 URL,如前面的输出所示,以便在下一步中使用。

在 Azure 上测试应用程序

使用您的应用程序 URL 在云环境中运行您在本地服务器上使用的相同客户端 URL (cURL) 命令。

  1. 若要添加数据项,请运行以下命令:

    curl -d '{"description":"another description", "details":"some more details"}' -H "Content-Type: application/json" -X POST https://$AZ_REDIS_NAME-webapp.azurewebsites.net
    
  2. 若要检索数据,请运行:

    curl https://$AZ_REDIS_NAME-webapp.azurewebsites.net
    
  3. 若要递增会话,请多次运行以下命令:

    curl -b cookie.txt -c cookie.txt https://$AZ_REDIS_NAME-webapp.azurewebsites.net/session
    

本地服务器和云服务使用相同的 Redis 实例,因此它们已群集化。 在一个实例中写入的数据在其他实例中可用。 云服务可以通过添加更多节点来扩展,这些节点都使用相同的 Redis 实例来存储业务数据和会话数据。