似乎已经发布了与此类似的问题,所以我会继续问。
我正在从事一个项目,该项目可以从让两到四台服务器处理对后端 Web 服务的传入请求中受益。该服务不需要 SSL,但需要支持偶尔长时间运行的进程(最多 120 秒)。
该项目目前没有资金购买硬件负载均衡解决方案。
我以前使用 HAProxy 作为解决方案,发现它非常简单明了。是否有类似的 Windows 产品(服务器 2003 或 2008)提供类似的配置选项并作为轻量级服务运行?
由于我无法控制的原因,我无法设置 Linux 机器(物理或虚拟),因此我正在寻找可以部署在 Windows 机器上的行为。
我只能找到似乎属于这一类的 Perlbal。为了不保持这个开放性,我将归功于唯一的答案。
假设我正在使用 Amazon 的 EC2 负载均衡器。我将它连接到两个实例(如果我的术语不正确,请原谅)。如果负载均衡器出现故障会怎样?两个实例现在都无法工作吗?
我试图理解负载平衡的概念,以确保可用性和冗余,以便在出现问题时让用户满意,而不是为了向数百万用户提供极快的速度而进行负载平衡。
我们的预算有限,并试图坚持使用有大量可用知识的东西,因此在某些著名的搜索引擎收购我们之前,在 Ubuntu VPS 上运行 Apache 似乎是一种策略(包括星期六的讽刺,请注意)。
至少对我来说,这是一个完整的可用不同解决方案的丛林。Apache 自己的 mod_proxy 和 HAproxy 是我们通过快速谷歌搜索找到的两个,但是负载平衡的经验为零,我不知道什么适合我们的情况,或者我们在选择解决方案时会注意什么来解决我们的问题可用性问题。
对我们来说最好的选择是什么?我们应该怎么做才能在不超出预算的情况下获得高可用性?
我正在使用 Rackspace 负载平衡器,它使我能够在管理面板内设置我的 ssl 密钥/pem。一切正常,我可以同时使用 http 和 https 协议。但是,如果我尝试使用以下方法将 http 重定向到 https:
server{
listen *:80;
server_name mydomain.com www.mydomain.com;
rewrite ^ https://mydomain.com$request_uri? permanent;
Run Code Online (Sandbox Code Playgroud)
...我得到一个重定向循环。我意识到我没有在监听端口 443,但那是因为负载均衡器为我处理了这个。我也尝试将重写包装起来if ($scheme ~* http){无济于事。
我的问题的另一部分是我想从 url 中删除 www,我可以通过一次重写来做到这一点吗?上面的重写不应该处理这个问题吗?
谢谢你的帮助!
我是负载平衡的新手,我想知道是否可以使用多个负载平衡器将流量重定向到我的应用程序服务器。我真的不明白这是怎么做到的。域名不应该与某个服务器的 IP 地址(在这种情况下是一个负载均衡器的 IP)一一匹配吗?如果每个负载均衡服务器的 IP 不同,那么两个负载均衡器(或 10 个负载均衡器或 50 或 100 个)如何接收请求?
首先,我将向您说明我的情况。我正在运行一个相当受欢迎的网站作为一个副项目,所以我不能真正投入大量资金。我目前只有一台带有 HAProxy 的服务器在前端向 Apache 发送正常请求,向 Lighttpd 发送所有静态文件请求。这非常有效,因为所有 php 和 post 请求都由 Apache 处理,而所有图像都发送到更快的 Lighttpd(该站点主要是图像,所以这非常重要)。不必为提供图像而设置子域会很好,因为短 URL 也非常重要,因此我使用 HAProxy 的原因。
我找到了一个托管服务提供商,它提供了我一直在使用的非常便宜的未计量带宽,当我开始推出 100mbs 网卡可以处理的带宽时,问题就出现了,因此需要第二台服务器。
我已经考虑了很多我的选择,所以我会向你解释每一个。希望您能提供一些见解,了解哪个对我来说是最好的选择,或者也许还有另一种我还没有想到的选择。
要求:
甚至带宽分配也是必须的。我有一个非常强大的服务器,所以不能选择扩展。我需要向外扩展以获得更多带宽。
短网址。我真的不想设置子域,比如 img.example.com,来提供我的图像。example.com/image.jpg 是现在的样子,我真的希望它留下来。但如果没有其他办法,那我就明白了。
处理请求的最近服务器会非常好,但不是必须的。要记住的事情。
HAProxy 负载均衡:
DNS 循环:
直接服务器返回:
理想情况下,如果 HAProxy 支持 Direct Server Return,那么我的问题就可以解决了。我也不想使用 CDN,因为它们真的很贵,毕竟这只是一个副项目。
你明白我的问题吗?如果我没有解释正确或者您需要更多信息,请告诉我。
我希望使用 Heartbeat/Squid/Varnish/etc 之类的东西来平衡内部 apache 实例之间的传入流量。这必须是软件而不是硬件,因为我所有的东西都在 VPS 上运行。我在这方面没有很多经验,如果我滥用术语并选择了错误的包,那么很抱歉。
我已经草拟了一些东西来说明我所追求的。绿色部分是初始设置的样子,蓝色部分是由于流量增加而添加更多 apache 实例后的样子。这可能不是这些事情的工作方式,但理想情况下,我会将平衡器的 IP 添加到域的 DNS 中。然后平衡器将查看每个 apache 实例上有多少连接(通过一些内部 IP 或永久 IP 的配置列表)并平均分配连接。蓝色部分有第二个平衡器,因为我确信在某些时候平衡器也需要帮助。
也许我正在解决这个错误,但我正在寻找关于“平衡器/s”应该是什么以及如何设置它们的最佳实践的帮助。
任何帮助都会很棒。

假设您有一个成功的 Web 应用程序,它使用 ASP.NET 和 IIS 7。它会生成对 SQL Server 2008 数据库的许多调用,并且预计将以 99.9% 的正常运行时间(停机时间为 8 小时,每次 45 分钟)向公众开放。年)。
我们的目标是:
与负载平衡 ASP.NET 应用程序不同,负载平衡 SQL 似乎要困难得多。为使用 Microsoft 堆栈的 Micro-ISV 设置简单负载平衡 SQL Server 2008 R2 群集的最佳做法是什么?
我有一个 GCE http(s) 负载均衡器配置为将流量定向到 2 个后端: - 默认后端 - 带有单独主机/路径规则的第二个后端 ( <host>:/*)
两个后端都存在于同一个实例组中——一个容器集群,运行两个暴露不同 NodePort 的 kubernetes 服务。
实例组有两个命名端口,每个暴露的 NodePort 一个。
尽管两个后端都报告健康,但对第二个后端的所有请求都返回 502。
服务本身不是问题 - 如果我将第二个后端后面的服务切换为默认服务,它可以正常工作。
注意:自从它第一次发布以来,我已经大大更新/简化了这个描述,因为我能够用更简单的配置重现这个问题。
load-balancing google-compute-engine google-cloud-platform google-kubernetes-engine
我有一个运行在两个不同 AWS 实例上的应用程序,我想启用基于 IP 的“粘性”或“持久”会话,以便我可以以特定方式利用 Web 套接字技术。
我有两种不同的设置,都涉及ip_hash用于启用这些粘性会话。
在第一个设置中,应用程序进程与 Nginx 配置在同一实例上运行。这是有效的,会话按预期持续存在。
upstream my_app {
ip_hash;
# local servers
server 127.0.0.1:3001 weight=100 max_fails=5 fail_timeout=300;
server 127.0.0.1:3002 weight=100 max_fails=5 fail_timeout=300;
keepalive 8;
}
Run Code Online (Sandbox Code Playgroud)
在第二个设置中,我指向外部实例并试图达到相同的效果。此设置不起作用。换句话说,会话仍在进行负载平衡。
upstream my_app {
ip_hash;
# external servers
server 111.11.11.11:3001 weight=100 max_fails=5 fail_timeout=300;
server 222.22.22.22:3002 weight=100 max_fails=5 fail_timeout=300;
keepalive 8;
}
Run Code Online (Sandbox Code Playgroud)
我使用ip_hash正确吗?如何为外部服务器启用“粘性”基于 ip 的会话?
load-balancing ×10
haproxy ×3
nginx ×3
apache-2.2 ×2
windows ×2
.net ×1
amazon-ec2 ×1
bandwidth ×1
cache ×1
cluster ×1
failover ×1
heartbeat ×1
high-load ×1
networking ×1
redundancy ×1
sql ×1
sql-server ×1
squid ×1
varnish ×1