我正在开发一个需要大量不同服务的应用程序(Web应用程序+数据库+工作队列,用于消息传递的XMPP服务器,redis,通过LDAP的中央身份验证等)。在我第一次设计事物时,我估计需要大约15个大小不同的实例:数据库需要更多的RAM / SSD,Web服务器和LDAP需要更少的RAM / SSD,工作队列需要更多的核心,依此类推。

我不想使用大型云提供商(AWS,Azure,GCP)来解决成本问题。这仍然是我的引导程序,GCP定价计算器将其定为每月约5800美元。 Hetzner云中类似的规格(就CPU / RAM / SSD而言)约为每月430美元。

当然,价格的差异也带来一些功能上的差异。 Hetzner Cloud VM实例没有任何私有网络。因此,我想知道如何确保所有这些计算机都可以有效地受到公共互联网的保护。其中一些服务(Web服务器,xmpp服务器)也应该具有公共IP,但理想情况下,所有其他服务都应关闭所有端口(包括SSH)

我知道答案之一是“ build您自己的OpenVPN AS”。但是,(a)我以前从未做过,并且(b)我觉得这意味着要向此基础结构中添加更多服务。

我之前做过的一件事是通过尖刻。这不会为您提供专用网络,但至少可以确保只有那些拥有密钥的人才能连接到面向公众的计算机。

也:docker。我在Docker和Kubernetes方面的经验有限,但是如果我走这条路,看来我最终会屈从于大型提供商的怀抱,更不用说它仍然是另一件事,需要学习并花一些时间来进行应用程序开发。 Docker Swarm是否可以解决此要求?

评论

我无法回答您所有的问题,但是我想做类似的事情:相同的提供者,更少的主机。我将选择Kubernetes,在我的测试中,与纯Docker相比,它从主机上花费了约300MB以上的内存。为了保护您的网络,您可以选择chrislovecnm.com/kubernetes/cni/choosing-a-cni-provider之一或实施Wireguard。这可能也很有趣:romantomjak.com/posts/hetzner-private-networking.html

#1 楼

我将建议一种我不一定推荐的方法,因为我认为它不是一种可管理的,可伸缩的解决方案:

SSH端口转发。军刀在其功能方面。实际上,任何端口都可以安全地转发到远程计算机上的任何其他端口,甚至可以通过远程计算机转发到其他目标计算机。文档很多,但是我真的很喜欢这个答案中的图纸。我定期在堡垒主机上使用ssh,其方式与链接上的图类似。可能是更大解决方案的一个组成部分。

祝你好运!

评论


SSH转发和使用spiped在原理上几乎是等效的,主要区别在于spip似乎更具可伸缩性(只需在配置系统上为接收部分的每个端口的每个主机定义一个秘密,并访问需要进行通信的服务即可与)

–lullis
19年4月19日在11:28

#2 楼

另一个想法:ZeroTier。

我没有使用过,但是有一个DevOps的书呆子推荐它。