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

已完成

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

创建 Azure 应用服务实例

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

要使用 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 实例来存储业务数据和会话数据的更多节点,云服务可以横向扩展。