Nginx 多个实例

问题描述 投票:0回答:5

我有一个 AWS 的 EC2 实例,我已经安装了 nginx 并创建了多个服务器块来服务多个应用程序。

但是,如果 nginx 宕机,所有应用程序也会宕机。

有没有办法为每个应用程序设置单独的 nginx 实例?因此,如果一个 nginx 实例出现故障,不会影响其他实例。

nginx webserver multiple-instances
5个回答
4
投票

是的,技术上可以在同一台服务器上安装 2 个 nginx 实例,但我会采用另一种方式。

1 - 您可以创建多个 EC2 实例。这种方法的缺点是,根据您想要的实例数量,维护起来可能会变得更加困难。

2 - 您可以使用 Docker 或其任何替代方案来创建容器并解决此问题。您可以创建所需数量的容器以及完全独立的 nginx 实例。尽管 docker 很容易学习并且可以立即开始使用它,但这种方法的缺点是您需要花费一些精力来学习它,并且您的主 EC2 实例需要有足够的资源在容器之间共享。

希望对你有帮助!


3
投票

如果可以使用ELB代替nginx。这会更方便,但如果 ELB 不适合你。 nginx 已经支持高可用模式,避免你提到的单点故障问题 它在这里正式记录 https://www.nginx.com/products/nginx/high-availability/ 这比为每个应用程序配备一台 nginx 机器更好,并且获得更多可用性


0
投票

您正在寻找的冗余类型在实践中通常由负载均衡器或反向代理提供。有很多方法可以在架构上实现这一点,但一般来说看起来像这样;

使用相同的服务器定义和诸如 haproxy 之类的平衡器运行多个 nginx 实例。这允许平衡器检查哪些 nginx 实例在线并依次向每个实例发送请求。然后,如果一个实例出现故障,或者协调器启动一个新实例,则请求只会发送到在线实例。

如果需要更频繁地分发请求,您可以为每个服务器配备 nginx 实例,并使用针对每个实例或节点的反向代理。


0
投票

如果你这样做的话,nginx 可能会产生一些开销,并且你的 nginx 以后可能很难维护,因为有很多 nginx 实例。前任。如果您需要更新或添加一些模块,那就更难了。

如果您尝试使用 EC2 自动缩放组(至少 1 个和所需的 1 个)怎么样?这样,如果当前实例出现故障,它将自动启动一个新实例。

如果您需要保留EC2的弹性IP等一些设置,您可以尝试搜索EC2实例恢复。与自动缩放组不同,它将恢复您的设置。

但是如果您使用像 ALB 这样的负载均衡器并且至少使用 2 个实例会更好。使用 ALB 也会让您更加安全。您可能还想了解 ALB 目标群体。它将为您提供更多关于如何解决当前问题的选择。


0
投票

只要您的 nginx 实例可以使用不同的端口,请查看这篇文章:https://serverfault.com/questions/1138876/how-can-you-run-two-instances-of-nginx-on-the-same-machine-without-docker

© www.soinside.com 2019 - 2024. All rights reserved.