paas - 是否有允许在传入 TCP 连接上唤醒 VM/容器的云服务?
问题描述
我想托管一个在短时间内处理请求的网络服务器。它只需要不经常运行,而客户端连接到它。在客户端连接的情况下保持 VM 24/7 运行是一种浪费。
当有传入的 TCP 连接时,公共云提供商(例如 AWS、GCP、Azure 等)上是否有可以配置为唤醒/启动 VM(或带有用户二进制文件的某种形式的容器实例)的服务在某个端口上?
当某些事件发生时(创建的对象、消息队列、REST API 调用、http/https 访问),存在将按需启动容器或虚拟机的云服务。但是,我找不到任何用于处理通用 TCP 连接网络事件的东西。
用例:
- 一个低流量的邮件服务器,它只需要在客户端通过 IMAP 连接或通过 SMTP 接收邮件时执行工作。
- 当开发人员通过 SSH 连接时恢复的开发 VM。
我更喜欢 AWS 配方,但也许其他云提供商也有选择。也许某种负载平衡服务?我愿意为唤醒它支付几秒钟的延迟损失。
解决方案
如果您控制客户端的代码,则可以将交互分成两部分。第一个向由 lambda 函数支持的 HTTP 端点发送请求。该函数将启动虚拟机/容器并使用服务器地址回复客户端。从那里,客户端可以正常继续。
由于您只需为每次实际调用的 HTTP 端点付费,因此在不使用它时您无需支付任何费用。
或者,可以创建一个 AWS Auto Scaling 组,其中最少有 0 个实例,最多有 1 个实例。由于您有时会拥有 0 个实例,因此您监控的 Auto Scaling 指标不能基于 EC2实例。因此,您需要在您的 Auto Scaling 组前面安装一个 AWS Elastic Load Balancer (ELB)。ELB 将指标发布到 AWS CloudWatch,您的扩展组应使用动态扩展策略使用这些指标。
在这一点上,您应该问自己,仅保持一个 nano 实例 24x7 运行是否既便宜又容易 - https://aws.amazon.com/about-aws/whats-new/2015/12/introducing-t2- nano-the-smallest-lowest-cost-amazon-ec2-instance/
推荐阅读
- jwt - 在 Swagger UI 中,如何从“匿名”方法中删除挂锁图标?
- php - 写入文件在functions.php中不起作用 - Wordpress
- python - 插入几个小时的条件
- c# - 在python中实现c#解密客户端的问题
- jquery - 如何使用类在 div 中使用输入的值
- ecmascript-6 - 如何在 ESM 中导入 UMD?
- reactjs - Redux/React:每个下拉选项都会生成不同数量的字段,我是否需要为每个选项设置一个 action/reducer?
- python - 我尝试在 mac 上安装 pip install mysqlclient 出现一些错误?
- php - 为什么在 setasign 中更改源文件时出现“空响应”?
- c++ - 如何在 std::vector 中找到 std::pair 的第二个元素的最大值?