一个JSII构造库来构建AWS Fargate快速自动缩放器
cdk-fargate-fastautlscaler的Python项目详细描述
aws fargate快速自动缩放仪
AWS Fargate Fast Autosaler—一个无服务器的实现,用cdk-fargate-fastautlscaler
在几秒钟内触发AWS Fargate自动缩放。在
cdk fargate fargate Fartautlscaler公司
cdk-fargate-fastautlscaler
是AWS CDK的aws/jsii构造库。在
通过使用cdk-fargate-fastautoscaler
构建AWS CDK堆栈,您可以使用快速自动调整功能创建定制的Fargate工作负载。在
工作原理
在幕后,我们在PHP、NodeJS、Java或Python中的工作负载在单个AWS Fargate任务中使用nginx反向代理运行,该任务公开了用于生成实时连接信息的/nginx_status
端点。所有通过ALB到Fargate任务的流量都将在nginx反向代理到达后端服务器之前与nginx建立主动连接。在
我们正在运行一个AWS Step函数状态机,以周期性地调用AWS Lambda函数,并每隔3秒从每个Fargate任务中收集活动连接号,然后在状态机中确定我们的缩放策略,然后使用immediate ecs service update
来增加所需的Fargate任务数。在
AWS CDK样品
下面的CDK示例在AWS Fargate中创建一个PHP服务,nginx作为反向代理。在
# Example automatically generated without compilation. See https://github.com/aws/jsii/issues/826importaws_cdk.coreascdkimportaws_cdk.aws_ec2asec2fromaws_cdk.aws_ecsimportAwsLogDriver,ContainerImagefromcdk_fargate_fastautlscalerimportFargateFastAutoscalerimportpathaspathapp=cdk.App()env={"region":process.env.CDK_DEFAULT_REGION,"account":process.env.CDK_DEFAULT_ACCOUNT}stack=cdk.Stack(app,"FargateFastAutoscalerDemo",env=env)vpc=ec2.Vpc.from_lookup(stack,"Vpc",is_default=True)FargateFastAutoscaler(stack,"FargateFastAutoscaler",vpc=vpc,# create the backend PHP servicebackend_container={"image":ContainerImage.from_asset(path.join(__dirname,"../../sample/backend/php")),"cpu":0,"logging":AwsLogDriver(stream_prefix="echo-http-req")},# PHP service running on container port 2015backend_container_port_mapping=[{"container_port":2015}])
部署完成后,您将在输出中看到URL:
fargate快速-自动缩放.URL=http://farga-exter-1GW64WGQYNE4O-1567742142.us-west-2.elb.amazonaws.com
打开这个URL,您将看到带有phpinfo的Caddy web服务器欢迎页面。在
如果您在URL中附加/nginx_status
并重新加载页面,您将看到以下页面:
启动状态机
转到步骤函数控制台,在状态机上单击start execution。保留execution name和input列不变,再次单击start execution。你的状态机将运行。在场景后面,step函数将调用Lambda函数来从nginx reverse proxy收集每个fargate任务上的Active Connections个数,并确定新的所需fargate任务数量。通常情况下,它只需要不到10秒的就可以开始扩展。在
SNS服务集成
状态机中的SNSScaleOut任务利用直接Amazon SNS服务集成,向您的SNS主题发布通知。启动ServiceScaleOut任务时,您将收到SNS通知。在
指定snsTopic
属性来定义自定义SNS主题。如果未定义,则构造将创建一个默认的SNS主题。在
禁用缩放
默认情况下,disableScaleIn
设置为true,以防止工作负载扩大。如果希望启用缩放,请将disableScaleIn
设置为false
。在
许可证摘要
这个示例代码是在MIT-0许可证下提供的。请参见许可证文件。在
- 项目
标签: