paas服务上web dynos的自动伸缩
autoscalebot的Python项目详细描述
autoscalebot有一个简单的目标:让扩展paas服务成为您可以不用担心的事情。现在,它只支持heroku和简单的请求时间伸缩。
下一个版本将支持其他paas堆栈,以及可配置的度量和决策后端。autoscalebot也喜欢django,而且玩得很好。
``` pip安装autoscalebot```,并将其添加到'requirements.txt`
>2。在python路径的某个地方创建一个设置文件。我们通常称之为"autoscale\u settings.py",但您可以随意调用它。
3.为应用程序设置这些设置以及任何可选的调整设置。例如,请参见autoscale\u settings.py.dist。
``python
heroku\u app\u name="my app name"
heroku\u api\u key="1234567890abcdef1234567890abcdef"
```
4。将自动缩放添加到"procfile":
```
autoscaleworker:autoscalebot--settings=autoscale\settings
```
``` pip安装autoscalebot```,并将其添加到'requirements.txt`
>2。在"settings.py"中设置这些必需的设置,以及任何可选的调整设置。在下面设置列表中的所有名称前加上"autoscale"前缀
``python
autoscale\u heroku app\u name="my app name"
autoscale\u heroku api\u key="1234567890abcdef1234567890abcdef"
```
3。如果您想要内置的测试视图:
*settings.py:
`` python
已安装的应用程序+=("autoscalebot",)
`````
*url.py:
`` python
`` url patterns+=patterns('',
url(r'^',include('autoscalebot.urls,app_name="autoscalebot",namespace="autoscalebot"),,,
)
````
4.将其添加到您的proc文件中:
```
autoscaleworker:project/manage.py运行autoscalebot。如果它连续超出这些限制足够的次数,则会根据需要放大或缩小应用程序。该描述的每个部分都可以通过设置进行配置。请注意,运行autoscalebot需要一个工人dyno,所以如果您在大多数情况下都在运行一个dyno,那么它不会为您节省任何现金。不过,它不必在Heroku上运行-任何启用Internet的计算机都可以。
Available settings
---------
AutoScalebot有一系列设置,因此您应该能够根据大多数需要对其进行调整。
*`Heroku应用程序名`
**必需*。应用程序的名称,即"Dancing-Forest-1234"。
*`Heroku_API_key`
**必需*。您的API密钥-您可以在[帐户页](https://api.heroku.com/account)上获取该密钥。
*`heartbeat_interval_in_seconds`
*心跳检查之间的秒数。默认为"30"。
*`heartbeat\u url`
*应命中url autoscale,并期望在给定时间内得到响应。默认为`/autoscalebot/heartbeat/`
*`max_response_time_in_ms`
*在将响应计算为"太慢"之前,响应所需的最长时间。默认值为"1000"。
*`min_response_time_in_ms`
*在计算为"太快"之前,响应所需的最短时间。默认值为"200"。
*`在`
*自动缩放前的连续失败次数(超时或500秒)之后,无法缩放`。默认值为"3"。
*`在`
*自动缩放删除动态之前的连续通过次数。默认为"5"。
*`max_dynos`
*绝对最大动态数。默认为"3"。此值可以是整数,也可以是时间/最大值对的字典。例如,
`` python
`将绝对最大值设置为5 dynos
将最大值设置为5 dynos
本地时间上午9点到下午5点,否则设置为5 dynos,否则设置为2 dynos。
最大值设置为{
"0:00":2,
"9:00":5,
"17:00":2
}
对于Django,这是:
时区='America/Vancouver'
````
*`Min-dynos`
*绝对最小dynos数。默认为"1"。此值可以是整数,也可以是时间/最大值对的字典。例如,
`` python
将绝对最小值设置为2 dynos
min dynos=2
1
}
````
*`increment`
*缩放时要添加或删除的动态数。默认为"1"。
*`notification_backends`
*调用所有通知请求的后端列表。默认为`[]
*`notify_if_scale_diff_exceeds_threshold`
*(v0.3)与下面的设置配对,如果给定时间段内的比例差异超过阈值,此设置将调用"notify_backends"。例如,如果我在30分钟内看到一个超过10倍的比例尺,这个网站就会发生一些干扰。我可能想知道。默认为"无",并被禁用。
*`如果缩放差异超过间隔(单位:分钟)`
*(v0.3)计算差异的时间段,则通知。默认为"无"。
*"如果需要超过最大值,则通知"当应用程序处于"最大动态"且响应太慢时,调用"通知"后端。这可能意味着"max_dynos"太低了,但如果没有您的明确指示,autoscalebot将无法放大。默认为"true"。
*"notify_if_needs_below_min `
*当应用程序处于"min_dynos"时,调用"notify_backends",并且响应低于缩小最小值(但高于1)。如果"min_dynos"设置得太低,则有助于学习。默认值为"false"。
*"notify_on撸scale撸fails"
*如果对缩放API的调用因任何原因失败,则调用"notify撸backends"。请注意,缩放失败不会伤害任何东西,并且在下一次心跳中将再次尝试缩放。默认为"false"。
*`notify_on_every_scale`
*调用每个scale上的"notify_backends"。默认为"false"。
*"notify_on_every_ping"
*每次ping都调用"notify_backends"。默认为"false"。
notification
----
autoscalebot支持通知后端,因此可以在发生缩放时通知您。它带有一些后端。欢迎其他后端的拉式请求!内置的是:
*`consolebackend`,它将消息打印到控制台,
*`djangoemailbackend`,它在django项目中使用时向"管理员"发送电子邮件,
*`loggerbackend`,它将消息发送到python记录器。
*`testbackend`,它将消息添加到列表中,并用于r单元测试。
要使用后端,只需在"通知后端"中指定它们。例如:
``python
notification\u backends=[
`autoscalebot.backends.notification.djangoemailbackend',
`autoscalebot.backends.notification.consolebackend',
]
````
beat url将测试你的应用程序在扩展时最可能遇到的瓶颈。捆绑的django应用程序提供了一个访问缓存、数据库和磁盘IO。为了使autoscale适合您的应用程序,您最好编写一个自定义视图来模拟用户最常见的操作。
当然,问题是一旦heroku杀死了你的dyno,新的collectstatic必须重新运行,然后才能满足请求,这可能需要一段时间。` autoscalebot的心跳有一个非常好的副作用:如果你把它们设置得足够低(小站点每几分钟一次),并且你的大小适当的最小化,每个dyno都会有流量,而heroku永远不会杀死它们。*
*大修-切换到可插入后端以进行监视、决策、缩放和通知。
*基于时间的通知阈值
*设置为在缩放之间具有最小的冷却时间
—————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————或以任何方式隶属于希罗库的。"heroku"是heroku的版权所有。
autoscalebot本身的代码学分在authors文件中。
下一个版本将支持其他paas堆栈,以及可配置的度量和决策后端。autoscalebot也喜欢django,而且玩得很好。
``` pip安装autoscalebot```,并将其添加到'requirements.txt`
>2。在python路径的某个地方创建一个设置文件。我们通常称之为"autoscale\u settings.py",但您可以随意调用它。
3.为应用程序设置这些设置以及任何可选的调整设置。例如,请参见autoscale\u settings.py.dist。
``python
heroku\u app\u name="my app name"
heroku\u api\u key="1234567890abcdef1234567890abcdef"
```
4。将自动缩放添加到"procfile":
```
autoscaleworker:autoscalebot--settings=autoscale\settings
```
``` pip安装autoscalebot```,并将其添加到'requirements.txt`
>2。在"settings.py"中设置这些必需的设置,以及任何可选的调整设置。在下面设置列表中的所有名称前加上"autoscale"前缀
``python
autoscale\u heroku app\u name="my app name"
autoscale\u heroku api\u key="1234567890abcdef1234567890abcdef"
```
3。如果您想要内置的测试视图:
*settings.py:
`` python
已安装的应用程序+=("autoscalebot",)
`````
*url.py:
`` python
`` url patterns+=patterns('',
url(r'^',include('autoscalebot.urls,app_name="autoscalebot",namespace="autoscalebot"),,,
)
````
4.将其添加到您的proc文件中:
```
autoscaleworker:project/manage.py运行autoscalebot。如果它连续超出这些限制足够的次数,则会根据需要放大或缩小应用程序。该描述的每个部分都可以通过设置进行配置。请注意,运行autoscalebot需要一个工人dyno,所以如果您在大多数情况下都在运行一个dyno,那么它不会为您节省任何现金。不过,它不必在Heroku上运行-任何启用Internet的计算机都可以。
Available settings
---------
AutoScalebot有一系列设置,因此您应该能够根据大多数需要对其进行调整。
*`Heroku应用程序名`
**必需*。应用程序的名称,即"Dancing-Forest-1234"。
*`Heroku_API_key`
**必需*。您的API密钥-您可以在[帐户页](https://api.heroku.com/account)上获取该密钥。
*`heartbeat_interval_in_seconds`
*心跳检查之间的秒数。默认为"30"。
*`heartbeat\u url`
*应命中url autoscale,并期望在给定时间内得到响应。默认为`/autoscalebot/heartbeat/`
*`max_response_time_in_ms`
*在将响应计算为"太慢"之前,响应所需的最长时间。默认值为"1000"。
*`min_response_time_in_ms`
*在计算为"太快"之前,响应所需的最短时间。默认值为"200"。
*`在`
*自动缩放前的连续失败次数(超时或500秒)之后,无法缩放`。默认值为"3"。
*`在`
*自动缩放删除动态之前的连续通过次数。默认为"5"。
*`max_dynos`
*绝对最大动态数。默认为"3"。此值可以是整数,也可以是时间/最大值对的字典。例如,
`` python
`将绝对最大值设置为5 dynos
将最大值设置为5 dynos
本地时间上午9点到下午5点,否则设置为5 dynos,否则设置为2 dynos。
最大值设置为{
"0:00":2,
"9:00":5,
"17:00":2
}
对于Django,这是:
时区='America/Vancouver'
````
*`Min-dynos`
*绝对最小dynos数。默认为"1"。此值可以是整数,也可以是时间/最大值对的字典。例如,
`` python
将绝对最小值设置为2 dynos
min dynos=2
1
}
````
*`increment`
*缩放时要添加或删除的动态数。默认为"1"。
*`notification_backends`
*调用所有通知请求的后端列表。默认为`[]
*`notify_if_scale_diff_exceeds_threshold`
*(v0.3)与下面的设置配对,如果给定时间段内的比例差异超过阈值,此设置将调用"notify_backends"。例如,如果我在30分钟内看到一个超过10倍的比例尺,这个网站就会发生一些干扰。我可能想知道。默认为"无",并被禁用。
*`如果缩放差异超过间隔(单位:分钟)`
*(v0.3)计算差异的时间段,则通知。默认为"无"。
*"如果需要超过最大值,则通知"当应用程序处于"最大动态"且响应太慢时,调用"通知"后端。这可能意味着"max_dynos"太低了,但如果没有您的明确指示,autoscalebot将无法放大。默认为"true"。
*"notify_if_needs_below_min `
*当应用程序处于"min_dynos"时,调用"notify_backends",并且响应低于缩小最小值(但高于1)。如果"min_dynos"设置得太低,则有助于学习。默认值为"false"。
*"notify_on撸scale撸fails"
*如果对缩放API的调用因任何原因失败,则调用"notify撸backends"。请注意,缩放失败不会伤害任何东西,并且在下一次心跳中将再次尝试缩放。默认为"false"。
*`notify_on_every_scale`
*调用每个scale上的"notify_backends"。默认为"false"。
*"notify_on_every_ping"
*每次ping都调用"notify_backends"。默认为"false"。
notification
----
autoscalebot支持通知后端,因此可以在发生缩放时通知您。它带有一些后端。欢迎其他后端的拉式请求!内置的是:
*`consolebackend`,它将消息打印到控制台,
*`djangoemailbackend`,它在django项目中使用时向"管理员"发送电子邮件,
*`loggerbackend`,它将消息发送到python记录器。
*`testbackend`,它将消息添加到列表中,并用于r单元测试。
要使用后端,只需在"通知后端"中指定它们。例如:
``python
notification\u backends=[
`autoscalebot.backends.notification.djangoemailbackend',
`autoscalebot.backends.notification.consolebackend',
]
````
beat url将测试你的应用程序在扩展时最可能遇到的瓶颈。捆绑的django应用程序提供了一个访问缓存、数据库和磁盘IO。为了使autoscale适合您的应用程序,您最好编写一个自定义视图来模拟用户最常见的操作。
当然,问题是一旦heroku杀死了你的dyno,新的collectstatic必须重新运行,然后才能满足请求,这可能需要一段时间。` autoscalebot的心跳有一个非常好的副作用:如果你把它们设置得足够低(小站点每几分钟一次),并且你的大小适当的最小化,每个dyno都会有流量,而heroku永远不会杀死它们。*
*大修-切换到可插入后端以进行监视、决策、缩放和通知。
*基于时间的通知阈值
*设置为在缩放之间具有最小的冷却时间
—————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————或以任何方式隶属于希罗库的。"heroku"是heroku的版权所有。
autoscalebot本身的代码学分在authors文件中。