![在可扩展架构中管理主机和 iptables](https://linux22.com/image/614078/%E5%9C%A8%E5%8F%AF%E6%89%A9%E5%B1%95%E6%9E%B6%E6%9E%84%E4%B8%AD%E7%AE%A1%E7%90%86%E4%B8%BB%E6%9C%BA%E5%92%8C%20iptables.png)
假设我在 3 个应用服务器前面有一个负载均衡器。
假设我在某些 IP 上也提供这些服务:
- Postgres 服务器
- Redis 服务器
- ElasticSearch 服务器
- Memcached 服务器 1
- Memcached 服务器 2
- Memcached 服务器 3
因此,6 个节点位于 6 个不同的 IP 地址。当然,我的 3 个应用服务器中的每一个都需要与上述 6 个服务器通信。
然后,为了让它更有趣一点,我还有 3 个工作服务器。每个工作服务器也与上述 6 个服务器通信,但幸运的是,工作服务器和应用程序永远不需要相互通信。
现在到了关键时刻。一切都在 Digital Ocean VPS 上。这意味着:您没有私有网络,没有私有 IP。您在每台机器上只有单独的随机 IP 地址。您无法掩盖它们或做任何事情。
因此,为了构建一个安全的环境,我必须配置一些 iptables。例如:
- 打开应用服务器以供负载均衡服务器访问
- 开放redis、ES、PG、各memcached服务器供各app的IP和各worker的IP访问
这意味着每次我添加一个应用程序或工作程序时,我还必须在上述 6 台服务器中重新配置 iptables 以欢迎新的应用程序或工作程序。
有没有办法简化此类设置?
我在想——如果在应用程序/工作器和上述 6 台机器之间有一台网关机器会怎么样。这样,所有交互都会始终通过网关服务器进行,当我添加新应用程序或工作器时,我不需要教 6 台服务器让它进入。
如果我选择这种方式,那么我希望一台 512mb 的小型服务器可以处理这个问题,而且几乎没有任何开销。或者会有吗?
请帮助以最佳方式处理这种情况。我希望得到尽可能具体的答案。我认为这不是太具体,因为这种通用架构非常常见,而且 Digital Ocean 越来越受欢迎。许多人会非常感激这里的具体解决方案。
答案1
如果其他人在这里寻找解决方案,那么没有解决方案。您必须管理节点之间的多对多关系,并重新配置它们各自的 iptables 和主机。网关机器方法可能有效,但我没有采用它。