AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题

问题[autoscaling](server)

Martin Hope
Learning from masters
Asked: 2022-04-21 05:30:22 +0800 CST

附加 EBS 的自动缩放图像

  • 0

我们有一个 AWS EC2 实例,它安装了一个大约 70GB 的 EBS gp3 SSD。有时,我们会执行一些 scp 命令来将新文件复制到此 EBS,但在其余时间,实例只会在 EBS 中执行读取操作。

此实例从 Internet 获取请求,并且对于每个请求,它必须读取 2000 个文件(约 60kb 的 1000 个和约 414b 的 1000 个)。现在我们想将此实例包含在自动缩放组中。我们应该如何处理这个 EBS?据我所读,我可以:

  1. 使用新的 EBS 创建新实例,每次创建时都会复制原始 EBS -> 它会复制 GB 并执行 IOPS,这最终意味着要花费 $ + 时间来复制 EBS。
  2. 使用多附加 EBS -> 更高的存储成本(它是预置 GB,不是通用的)
  3. 使用 EFS。较低的速度和较高的延迟。价格高于 EBS,但创建多个时会更便宜。
  4. 在具有 min:1 max:1 的自动缩放组的微型实例上使用 NFS 以避免失败,并在每次创建 EBS 时附加它。
  5. 使用 GlusterFS。我认为它在 AWS 上相当昂贵。是吗?

我认为从长远来看,我们共享的内存永远不会超过 100GB。您认为在这种情况下最好的方法是什么?我在 5) 中考虑,但由于成本,我在 4) 中考虑。

storage amazon-web-services autoscaling
  • 1 个回答
  • 41 Views
Martin Hope
Philip Couling
Asked: 2021-07-26 07:38:49 +0800 CST

Terraform ECS 容量提供程序不会按需生成新的 ECS 实例

  • 0

从我在这里读到的内容, ECS 容量提供者应该(通常)通过将任务置于“Provisioning”状态并启动新的 EC2 实例来防止任务立即因资源限制而失败

这意味着,例如,如果您调用 RunTask API 并且由于资源不足(意味着没有活动实例具有足够的内存、vCPU、端口、ENI 和/或 GPU 来运行任务)而没有将任务放置在实例上),而不是立即失败,任务将进入配置状态(但是请注意,只有在您为容量提供程序启用托管扩展时才会转换到配置;否则,找不到容量的任务将立即失败,就像他们之前所做的那样)。

我已经设置了一个 ECS 集群,在 terraform 中具有自动缩放组和 ECS 容量提供程序。自动缩放组设置为min_size = 1并立即启动单个实例......所以我相信我的启动配置很好。

但是,当我通过 API 反复调用“RunTask”(带有 的任务memory=128)时,我得到的任务无法立即以 reason 启动RESOURCE:MEMORY。也没有新的实例启动。

我无法弄清楚我配置错误的地方。


这都是在 terraform 中设置的:

resource "aws_ecs_cluster" "ecs_cluster" {
  name = local.cluster_name


  setting {
    name  = "containerInsights"
    value = "enabled"
  }
  tags = var.tags
  capacity_providers = [aws_ecs_capacity_provider.capacity_provider.name]

  # I added this in an attempt to make it spin up new instance 
  default_capacity_provider_strategy {
    capacity_provider = aws_ecs_capacity_provider.capacity_provider.name
  }

}

resource "aws_ecs_capacity_provider" "capacity_provider" {
  name = "${var.tags.PlatformName}-stack-${var.tags.Environment}"

  auto_scaling_group_provider {
    auto_scaling_group_arn         = aws_autoscaling_group.autoscaling_group.arn
    managed_termination_protection = "DISABLED"

    managed_scaling {
      maximum_scaling_step_size = 4
      minimum_scaling_step_size = 1
      status                    = "ENABLED"
      target_capacity           = 100
    }
  }

  tags = var.tags
}

#Compute
resource "aws_autoscaling_group" "autoscaling_group" {
  name                      = "${var.tags.PlatformName}-${var.tags.Environment}"
  # If we're not using it, lets not pay for it
  min_size                  = "1"
  max_size                  = var.ecs_max_size
  launch_configuration      = aws_launch_configuration.launch_config.name
  health_check_grace_period = 60
  default_cooldown          = 30
  termination_policies      = ["OldestInstance"]
  vpc_zone_identifier       = local.subnets
  protect_from_scale_in     = false

  tag {
    key                 = "Name"
    value               = "${var.tags.PlatformName}-${var.tags.Environment}"
    propagate_at_launch = true
  }

  tag {
    key                 = "AmazonECSManaged"
    value               = ""
    propagate_at_launch = true
  }

  dynamic "tag" {
    for_each = var.tags
    content {
      key = tag.key
      propagate_at_launch = true
      value = tag.value
    }
  }

  enabled_metrics = [
    "GroupDesiredCapacity",
    "GroupInServiceInstances",
    "GroupMaxSize",
    "GroupMinSize",
    "GroupPendingInstances",
    "GroupStandbyInstances",
    "GroupTerminatingInstances",
    "GroupTotalInstances",
  ]
}
amazon-ecs terraform autoscaling
  • 1 个回答
  • 584 Views
Martin Hope
Jonas Kölker
Asked: 2021-06-24 02:47:28 +0800 CST

如何从 terraform 中最小化 ecs 自动缩放反应时间?

  • 0

当您创建 ECS 弹性伸缩策略时,会同时标记两个警报:一个用于扩展(“out”),一个用于缩减(“in”)。

我看到创建的横向扩展似乎每分钟对 CPU 利用率(或感兴趣的指标)进行采样,并且仅在三个连续数据点超过阈值时触发自动扩展。

这意味着,如果我看到流量高峰,将在三分钟后发生横向扩展。(事实上​​,平均而言,阈值突破将发生在采样间隔的中间,因此延迟为三分半钟。)

我可以通过 AWS 控制台 Web 界面调整采样率和所需的数据点数量。

但是,我想通过 Terraform 管理我的基础设施。

我如何使用 Terraform 但没有手动点击来缩短(a)第一次违反阈值之间的时间;(b) 我开始向外扩展的时间点?(另外:这是一个愚蠢的尝试吗?我是否以 awk-basscards 的方式来处理它?)

据我所知,它看起来像滑冰上坡:创建自动缩放策略(我可以通过 Terraform 完成)会自动创建两个警报并将句柄返回给它们(请参阅https://docs.aws.amazon.com/autoscaling/ application/APIReference/API_PutScalingPolicy.html),但 Terraform 不会公开这些句柄(请参阅https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/appautoscaling_policy#attributes-reference)。在 Terraform 中还有可能吗?需要英勇的努力吗?

latency scaling amazon-web-services amazon-ecs autoscaling
  • 1 个回答
  • 223 Views
Martin Hope
Foobar
Asked: 2021-02-24 12:45:06 +0800 CST

在不使用弹性 IP 的情况下将自动扩展组中的实例连接到 EC2 实例(协调节点)?

  • 0

我有一个设置,我使用自动缩放组中的现货实例进行批量计算。

批量计算由一个“协调节点”协调,它只是一个 EC2 实例。我使用弹性 ip 来确保 Spot 实例可以连接到协调器节点。

这有缺点:AWS 限制了实例可以拥有的弹性 IP 的数量,而且这似乎没有必要,因为我不想将协调器暴露给外界。

有没有更好的方法让自动缩放组中的实例连接到协调器节点?

amazon-ec2 amazon-web-services autoscaling
  • 1 个回答
  • 189 Views
Martin Hope
RunThor
Asked: 2021-02-04 08:59:02 +0800 CST

AWS 自动扩展,“缩减”控制

  • 0

我正在尝试将运行许多作业的单一大型服务器转移到使用自动缩放来构建更多服务器的设计,因为运行更多作业。我在测试中发现的问题是,当默认的任务规模发生时,它终止了运行任务的服务器。

服务器是否可以告诉 AWS 它正在工作并且需要保持正常运行?或者能够在“可以终止”和“工作”之间切换,就好像它得到了一份新工作一样?

工作可能需要几分钟或几小时,因此一个扁平的冷却计时器无法提供正确的保护。

amazon-ec2 amazon-web-services autoscaling
  • 1 个回答
  • 63 Views
Martin Hope
Sadmi
Asked: 2020-11-17 07:32:09 +0800 CST

自动配置新的 Kubernetes 节点

  • 0

我在 AWS 中配置了一个带有 GPU 的 Kubernetes 集群,其中一个步骤是配置节点以默认启用 Nvidia 运行时。

因此,当我配置集群自动缩放器时,集群成功扩展,但新节点仍需要配置为使用 Nvidia 作为默认运行时。

我的目标是自动配置这一步,我想知道 Kubernetes 是否有办法做到这一点,比如在实例组中指定要在启动时执行的命令。(就像在 GCP 中您可以定义启动脚本或在 AWS 中称为用于启动脚本的用户数据一样)。

谢谢!

amazon-web-services kubernetes autoscaling gpu
  • 1 个回答
  • 31 Views
Martin Hope
Ben Davis
Asked: 2020-11-11 08:13:51 +0800 CST

为什么当节点有足够的可用资源时,Pod 无法调度?

  • 3

我的应用程序中的 pod 扩展为每个用户 1 个 pod(每个用户都有自己的 pod)。我对应用程序容器设置的限制如下:

  resources:
    limits:
      cpu: 250m
      memory: 768Mi
    requests:
      cpu: 100m
      memory: 512Mi

我的节点池中的节点每个都有 8GB 内存。我启动了一堆用户实例来开始测试,并看着我的资源指标随着我启动每个实例而上升:

中央处理器:

在此处输入图像描述

记忆:

在此处输入图像描述

在 15:40,我看到事件日志显示了这个错误(注意:第一个节点被排除在外):

0/2 nodes are available: 1 Insufficient memory, 1 node(s) didn't match node selector.

当内存/cpu 请求仍远低于总容量(cpu 约为 50%,mem 约为 60%)时,为什么会发生这种情况?

以下是一些相关信息kubectl describe node:

Non-terminated Pods:          (12 in total)
  Namespace                   Name                                                               CPU Requests  CPU Limits  Memory Requests  Memory Limits  AGE
  ---------                   ----                                                               ------------  ----------  ---------------  -------------  ---
  ide                         theia-deployment--ac031811--football-6b6d54ddbb-txsd4              110m (5%)     350m (18%)  528Mi (9%)       832Mi (15%)    13m
  ide                         theia-deployment--ac031811--footballteam-6fb7b68794-cv4c9          110m (5%)     350m (18%)  528Mi (9%)       832Mi (15%)    12m
  ide                         theia-deployment--ac031811--how-to-play-football-669ddf7c8cjrzl    110m (5%)     350m (18%)  528Mi (9%)       832Mi (15%)    14m
  ide                         theia-deployment--ac031811--packkide-7bff98d8b6-5twkf              110m (5%)     350m (18%)  528Mi (9%)       832Mi (15%)    9m54s
  ide                         theia-deployment--ac032611--static-website-8569dd795d-ljsdr        110m (5%)     350m (18%)  528Mi (9%)       832Mi (15%)    16m
  ide                         theia-deployment--aj090111--spiderboy-6867b46c7d-ntnsb             110m (5%)     350m (18%)  528Mi (9%)       832Mi (15%)    2m36s
  ide                         theia-deployment--ar041311--tower-defenders-cf8c5dd58-tl4j9        110m (5%)     350m (18%)  528Mi (9%)       832Mi (15%)    14m
  ide                         theia-deployment--np091707--my-friends-suck-at-coding-fd48ljs7z    110m (5%)     350m (18%)  528Mi (9%)       832Mi (15%)    4m14s
  ide                         theia-deployment--np091707--topgaming-76b98dbd94-fgdz6             110m (5%)     350m (18%)  528Mi (9%)       832Mi (15%)    5m17s
  kube-system                 csi-azurefile-node-nhbpg                                           30m (1%)      400m (21%)  60Mi (1%)        400Mi (7%)     12d
  kube-system                 kube-proxy-knq65                                                   100m (5%)     0 (0%)      0 (0%)           0 (0%)         12d
  lens-metrics                node-exporter-57zp4                                                10m (0%)      200m (10%)  24Mi (0%)        100Mi (1%)     6d20h

Allocated resources:
  (Total limits may be over 100 percent, i.e., overcommitted.)
  Resource                       Requests      Limits
  --------                       --------      ------
  cpu                            1130m (59%)   3750m (197%)
  memory                         4836Mi (90%)  7988Mi (148%)
  ephemeral-storage              0 (0%)        0 (0%)
  hugepages-1Gi                  0 (0%)        0 (0%)
  hugepages-2Mi                  0 (0%)        0 (0%)
  attachable-volumes-azure-disk  0             0
kubernetes azure aks autoscaling
  • 2 个回答
  • 3909 Views
Martin Hope
Ben Davis
Asked: 2020-11-05 14:43:11 +0800 CST

如何在资源耗尽之前自动缩放 Azure Kubernetes 节点池

  • 0

我今天在 Azure Kubernetes 上使用我的自动缩放设置进行了一些测试。我注意到,当触发自动缩放时,下一个节点需要一段时间才能启动,因此最后一个 pod 必须等待很长时间才能被调度。我想让它在我的服务器达到某个阈值时添加新节点,但仍然可以在已经运行的节点上安排 Pod。那可能吗?

kubernetes azure aks autoscaling
  • 1 个回答
  • 314 Views
Martin Hope
Chrono
Asked: 2020-10-23 08:08:41 +0800 CST

使用指向域名的静态 IP 使用 Google Compute Engine 进行自动缩放

  • 0

我希望通过我在此处找到的说明将自动缩放添加到我的 Google Compute Engine:https ://cloud.google.com/compute/docs/autoscaler

我原来的 Compute Engine 实例有一个静态 ip,我有一个指向这个静态 ip 的域(例如:domain.com)(通过 Google 域)。因此,当我的用户访问我的 domain.com 站点时,他们会被指向静态 ip 原始 Compute Engine 实例。这目前非常有效。但是,通过自动缩放,我相信新实例可能会使用不同于我原来的 Compute Engine 静态 ip 的不同临时 ip 启动。这个对吗?

因此,我担心/困惑的是,当有足够的流量启动多个服务器进入我的 domain.com 地址(指向我的静态 IP 原始 Compute Engine 实例)时,我不确定这些流量将如何分配到由于用户通过域访问我的站点(指向静态 ip)而不是启动实例的新 ip,因此启动的其他实例。

我的问题是:如何获取当前实例以及通过我的 domain.com 地址启动/运行的所有新实例?这是自动的吗?还是我需要在 Google Domains、托管实例组或其他地方做些什么?

google-cloud-platform domain autoscaling static-ip
  • 1 个回答
  • 137 Views
Martin Hope
Thulasya
Asked: 2020-07-07 23:10:41 +0800 CST

google cloud Stackdriver Metrics 以扩展管理实例组 - 区域

  • 0

我们可以使用哪些 Stackdriver 指标来自动扩缩区域管理实例组?当我检查文档时,它说区域托管实例组不支持过滤每个实例的指标。区域托管实例组不支持使用每组指标进行自动扩缩。

这是否意味着我不能使用除 CPU 之外的任何 Stackdriver Metrics 吗?

google google-compute-engine gcloud autoscaling google-stackdriver
  • 1 个回答
  • 107 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve