如何根据 apache marathon 的正常运行时间缩减实例?
how to scale down instances based on their uptime with apache marathon?
我发现自己处于这样一种情况,我必须根据容器实例的实际生命周期缩减容器实例。通过 marathon 的 API 缩小规模时,似乎首先删除了新实例。 在 apache marathon 上缩减实例时,是否有任何我不知道的配置来实施这种策略或政策?
截至目前,我正在使用 marathon-lb-autoscale 自动调整 运行 实例的数量。但实际上在幕后发生的是 marathon-lb-autoscale
确实执行 PUT
请求更新当前应用程序的 instances
属性 当 req/s 增加或减少时。
scale_list.each do |app,instances|
req = Net::HTTP::Put.new('/v2/apps/' + app)
if !@options.marathonCredentials.empty?
req.basic_auth(@options.marathonCredentials[0], @options.marathonCredentials[1])
end
req.content_type = 'application/json'
req.body = JSON.generate({'instances'=>instances})
Net::HTTP.new(@options.marathon.host, @options.marathon.port).start do |http|
http.request(req)
end
end
end
我不知道在缩小实例时是否考虑了 upgradeStrategy
配置。使用默认设置我无法获得预期的行为。
{
"upgradeStrategy": {
"minimumHealthCapacity": 1,
"maximumOverCapacity": 1
}
}
实际
- 实例 1
- 实例 2
PUT /v2/apps/my-app {instances: 3}
- 实例 1
- 实例 2
- 实例 3
PUT /v2/apps/my-app {instances: 2}
- 实例 1
- 实例 2
预计
- 实例 1
- 实例 2
PUT /v2/apps/my-app {instances: 3}
- 实例 1
- 实例 2
- 实例 3
PUT /v2/apps/my-app {instances: 2}
- 实例 2
- 实例 3
可以直接在应用程序的配置中指定 killSelection
,并指定 YoungestFirst
首先杀死最年轻的任务,或者 OldestFirst
首先杀死最旧的任务。
参考:https://mesosphere.github.io/marathon/docs/configure-task-handling.html
我发现自己处于这样一种情况,我必须根据容器实例的实际生命周期缩减容器实例。通过 marathon 的 API 缩小规模时,似乎首先删除了新实例。 在 apache marathon 上缩减实例时,是否有任何我不知道的配置来实施这种策略或政策?
截至目前,我正在使用 marathon-lb-autoscale 自动调整 运行 实例的数量。但实际上在幕后发生的是 marathon-lb-autoscale
确实执行 PUT
请求更新当前应用程序的 instances
属性 当 req/s 增加或减少时。
scale_list.each do |app,instances|
req = Net::HTTP::Put.new('/v2/apps/' + app)
if !@options.marathonCredentials.empty?
req.basic_auth(@options.marathonCredentials[0], @options.marathonCredentials[1])
end
req.content_type = 'application/json'
req.body = JSON.generate({'instances'=>instances})
Net::HTTP.new(@options.marathon.host, @options.marathon.port).start do |http|
http.request(req)
end
end
end
我不知道在缩小实例时是否考虑了 upgradeStrategy
配置。使用默认设置我无法获得预期的行为。
{
"upgradeStrategy": {
"minimumHealthCapacity": 1,
"maximumOverCapacity": 1
}
}
实际
- 实例 1
- 实例 2
PUT /v2/apps/my-app {instances: 3}
- 实例 1
- 实例 2
- 实例 3
PUT /v2/apps/my-app {instances: 2}
- 实例 1
- 实例 2
预计
- 实例 1
- 实例 2
PUT /v2/apps/my-app {instances: 3}
- 实例 1
- 实例 2
- 实例 3
PUT /v2/apps/my-app {instances: 2}
- 实例 2
- 实例 3
可以直接在应用程序的配置中指定 killSelection
,并指定 YoungestFirst
首先杀死最年轻的任务,或者 OldestFirst
首先杀死最旧的任务。
参考:https://mesosphere.github.io/marathon/docs/configure-task-handling.html