AWS ECS服务的自动扩展行为

时间:2018-04-12 11:33:08

标签: amazon-web-services docker amazon-ecs

我正在尝试测试亚马逊ECS中的自动缩放行为。这是我测试的方式

import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.URL;

public class LoadHttp {

    private static final String GET_URL = "http://tournament-ecs-weather-lb-1526102172.ap-south-1.elb.amazonaws.com/status";

    public static void main(String[] args) throws IOException {

        System.out.println("GET DONE");
        while(true){
            sendGET();              
        }

    }

    private static void sendGET() throws IOException {

        Thread t = new Thread(() -> {
            URL obj;
            try {
                obj = new URL(GET_URL);
                HttpURLConnection con = (HttpURLConnection) obj.openConnection();
                con.setRequestMethod("GET");
                con.setConnectTimeout(5000);
                int responseCode = con.getResponseCode();
                System.out.println(responseCode);

            } catch (Exception e) {
                e.printStackTrace();
            }
        });

        t.start();

    }
}

并配置我正在运行的自动服务范围enter image description here

这是我的自动缩放组配置

enter image description here

enter image description here

我正在使用ECS服务来创建集群,我的服务正在docker容器中运行。在执行我的测试代码后,我发现我的服务没有被自动调整。容器实例的数量仍然是一个。如果您需要其他信息,我会很高兴。

1 个答案:

答案 0 :(得分:0)

如果我理解了您的问题,那么当当前实例中没有足够的可用资源来处理请求时,服务会自动调整。

在您的特定情况下,您已将实例的最小值设置为0,这表示即使没有实例正在运行,系统也应该做出反应。您需要为最小值至少设置1才能使整个群集运行正常。我相信由于这个原因,您的自动缩放不会启动任何实例。

另外,我建议您将Elastic Load平衡器添加到自动缩放组,当自动缩放中指定的最小实例数不健康时,它会要求自动缩放组启动更多实例。

最后,要测试自动扩展组是否正常工作,请检查实例的可用区域并注意该向下。现在终止你的实例。由于正在运行的实例终止,因此自动调节组应自动在不同的可用区中启动实例。如果它在不同的可用区域中启动新实例而不是终止的实例,则它可以正常工作。

希望这会有所帮助。