标签: load-balancing

nginx 自动故障转移负载均衡

我正在使用 nginx 和 NginxHttpUpstreamModule 进行负载平衡。我的配置很简单:

upstream lb {
    server 127.0.0.1:8081;
    server 127.0.0.1:8082;
}

server {
    listen  89;
    server_name localhost;

    location / {
            proxy_pass      http://lb;
            proxy_redirect  off;
            proxy_set_header        Host            $host;
            proxy_set_header        X-Real-IP       $remote_addr;
            proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}
Run Code Online (Sandbox Code Playgroud)

但是使用此配置,当 2 个后端服务器之一关闭时,nginx 仍将请求路由到它,并且导致一半时间超时:(

是否有任何解决方案可以让 nginx 在检测到关闭的服务器时自动将请求路由到另一台服务器。

谢谢你。

cluster nginx failover load-balancing

30
推荐指数
1
解决办法
6万
查看次数

30
推荐指数
4
解决办法
3万
查看次数

HAProxy reqrep 在后端请求中删除 URI

关于 HAProxy reqrep 的真正快速问题。我正在尝试重写/替换发送到后端的请求。

我有以下示例域和 URI,它们共享相同的域名,但后端 Web 服务器池不同。

http://domain/web1
http://domain/web2
Run Code Online (Sandbox Code Playgroud)

我希望 web1 转到后端 webfarm1,而 web2 转到 webfarm2。目前这确实发生了。但是,当请求发送到后端时,我想去掉 web1 或 web2 URI。

这是我的 haproxy.cfg

frontend webVIP_80
        mode http
        bind    :80
        #acl routing to backend
        acl web1_path path_beg /web1
        acl web2_path path_beg /web2

        #which backend
        use_backend webfarm1 if web1_path
        use_backend webfarm2 if web2_path
        default_backend webfarm1

backend webfarm1
        mode http
        reqrep ^([^\ ]*)\ /web1/(.*)     \1\ /\2
        balance roundrobin
        option httpchk HEAD /index HTTP/1.1\r\nHost:\ example.com
        server webtest1 10.0.0.10:80 weight 5 check slowstart 5000ms
        server …
Run Code Online (Sandbox Code Playgroud)

rewrite load-balancing haproxy uri

30
推荐指数
2
解决办法
5万
查看次数

硬件与软件负载平衡器:只是成本问题?

如果成本不是问题,与硬件负载均衡器相比,为 Web 流量部署软件负载均衡器是否有任何好处?

load-balancing

27
推荐指数
1
解决办法
4万
查看次数

如何在 Amazon EC2 上部署可扩展、可靠的 haproxy 集群?

我们需要一些比 ELB 提供的更高级的功能(主要是 L7 检查),但是如何使用 EC2 使用诸如 haproxy 之类的东西来处理诸如心跳和高可用性之类的事情并不明显。我们很有可能在集群中需要 3 个或更多 haproxy 节点,因此两个节点之间的简单心跳是行不通的。

似乎在 haproxy 节点前面有一个心跳层是可行的方法,可能使用 IPVS,但是随着 EC2 集群的变化处理配置更改(通过有意的更改,如扩展,或无意的,如丢失EC2 节点)似乎很重要。

优选地,该解决方案将跨越至少两个可用区。

回答问题:不,会话没有粘性。是的,我们需要 SSL,但理论上这可以完全由另一个设置处理 - 我们能够将 SSL 流量定向到与非 SSL 流量不同的位置。

load-balancing heartbeat haproxy amazon-ec2 amazon-web-services

26
推荐指数
1
解决办法
1万
查看次数

负载平衡器选项

我正在研究多种可能的负载平衡选项。

到目前为止,我仅限于以下选项:

  • DNS 服务器负载平衡器,平衡到一组 tomcat 服务器,使用 terracotta 进行会话复制。优点 - 不必购买新套件。缺点 - DNS lb 可以继续指向损坏的服务器。

  • 硬件负载平衡器,直接到 tomcat 服务器集群。优点 - 可以有第二个盒子用于故障转移磅。缺点 - 费用。

  • Apache 服务器负载平衡器。优点 - apache 的 lb 轮询损坏的服务器。缺点 - apache 服务器是单点故障,另外需要购买另一台服务器。

还有其他我应该考虑的选择吗?

谢谢。

更新:感谢到目前为止的所有答案+1。尚未接受答案,以保持更多想法。

domain-name-system tomcat load-balancing apache-2.2

25
推荐指数
3
解决办法
3736
查看次数

第 4 层与第 7 层负载平衡

我正在尝试决定是为我的数据中心使用第 4 层负载平衡解决方案还是使用第 7 层解决方案。不幸的是(就我的理智而言),我的用例很简单,两种解决方案都可以很好地工作,避免了大多数弱点并且没有真正利用另一个的优势。无论我们最终使用什么解决方案,它都必须具有高可用性和高吞吐量。但我们只打算用它来平衡一组 Web 服务器的负载,这些服务器对“粘性”会话管理(cookie 或 IP)、复杂的重写规则没有任何要求——或者,就此而言,任何重写规则都在全部。

负载平衡器将连接到两台交换机,两者都具有到数据中心聚合层的独立连接,并使用快速生成树和交换机用于虚拟化的任何专有协议合并在一起。负载平衡器也将通过交叉电缆相互交叉链接。集群中的所有服务器都连接到两台交换机。负载均衡器所要做的就是将流量指向它们。

由于它只是 HTTP,我可以使用 HAProxy 或 nginx 等第 7 层负载平衡解决方案。但我也可以将 LVS 项目与 ldirectord 或 keepalived 一起使用。

我试图打破我所看到的利弊,但最终还是洗白了。你会推荐什么,为什么?我错过了什么吗?

networking load-balancing architecture datacenter linux-networking

25
推荐指数
2
解决办法
2万
查看次数

如何平衡单个 IP 地址的负载?

我知道“round robin DNS”负载平衡,但如何对单个 IP 地址进行负载平衡?

例如 Google 的 DNS 服务器,8.8.8.8以及8.8.4.4. 维基百科的负载平衡文章指出:

对于 Internet 服务,负载均衡器通常是一个软件程序,它侦听外部客户端连接访问服务的端口。负载平衡器将请求转发到“后端”服务器之一,后者通常会回复负载平衡器。

..这在与循环 DNS 一起使用时似乎很合理,但是对于 Google 的 DNS 服务器之类的服务器来说,这似乎不是一个非常冗余或功能强大的设置。

load-balancing dns-server

23
推荐指数
1
解决办法
5457
查看次数

LVS vs HAProxy,我应该选择哪个?

我正在寻找负载平衡和故障转移策略的解决方案,主要用于大型 Web 应用程序。我们有许多服务需要平衡,例如 web、MySQL 和许多其他基于 HTTP 或 TCP 的服务。但我不确定它们的优缺点是什么,我应该选择哪个。

failover load-balancing haproxy lvs

22
推荐指数
2
解决办法
3万
查看次数

如何安装中间证书(在 AWS 中)?

我已经在 Amazon Load Balancer 上安装了私钥(pem 编码)和公钥证书(pem 编码)。但是,当我使用site test tool检查 SSL 时,出现以下错误:

检查 SSL 证书时出错!!无法获取证书的本地颁发者。找不到本地查找证书的颁发者。通常这表示并非所有中间证书都安装在服务器上。

我使用本教程中的这些命令将 crt 文件转换为 pem :

openssl x509 -in input.crt -out input.der -outform DER
openssl x509 -in input.der -inform DER -out output.pem -outform PEM
Run Code Online (Sandbox Code Playgroud)

在设置 Amazon Load Balancer 期间,我遗漏的唯一选项是证书链。(pem 编码)但是,这是可选的。这可能是我的问题的原因吗?如果是这样; 如何创建证书链?

更新

如果您向 VeriSign 提出请求,他们会给您一个证书链。该链包括公共crt、中间crt和根crt。在将公共 crt 添加到您的 Amazon Load Balancer 的认证链框之前,请确保从您的证书链(这是最顶部的证书)中删除公共 crt。

如果您从 Android 应用程序发出 HTTPS 请求,则上述说明可能不适用于较旧的 Android 操作系统,例如 2.1 和 2.2。要使其在较旧的 Android 操作系统上运行:

  • 到这里
  • 单击“retail ssl”选项卡,然后单击“secure site”>“CA Bundle for Apache Server”
  • 将这些中间证书复制并粘贴到证书链框中。以防万一,如果您还没有找到, …

ssl load-balancing amazon-ec2

22
推荐指数
3
解决办法
4万
查看次数