我想托管一个网络服务器,该网络服务器可在短时间内处理请求。在客户端连接到它时,它仅需要很少运行。在客户端连接的情况下将VM保持24/7全天候运行是很浪费的。
在公共云提供商(例如AWS,GCP,Azure等)上是否存在可以配置为唤醒/启动VM(或带有用户二进制文件的某种形式的容器实例)的服务。某个端口上的传入TCP连接?
当某些事件(创建对象,消息队列,REST API调用,http / https访问)发生时,存在可以按需启动容器或虚拟机的云服务。但是,我找不到用于处理常规TCP连接网络事件的任何内容。
用例:
我更喜欢AWS食谱,但也许其他云提供商中也有一些选择。也许某种负载均衡服务?我愿意为唤醒它付出几秒钟的小延迟。
答案 0 :(得分:1)
如果您控制客户端的代码,则可以将交互分为两部分。第一个向由lambda函数支持的HTTP端点发送请求。该功能将启动VM /容器,并使用服务器地址回复客户端。从那里,客户端可以照常继续。
由于您每次实际调用仅需为HTTP端点付费,因此不用时无需支付任何费用。
或者,可以创建一个最少有零个实例,最多有1个实例的AWS自动扩展组。由于某些时候您将有零个实例,因此无法基于监控自动扩展的指标在EC2实例上。因此,您需要在自动伸缩组前面安装一个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/