标签: load-balancing

rackspace 和 centos 上的负载均衡器性能不佳

我正在对不同的负载平衡选项进行负载测试,但从 Nginx、haproxy 和 varnish 得到的结果很差。我在 Rackspace 有一个 4GB 的负载均衡器,可以运行 4x1GB 的应用服务器。

我正在访问一个名为“/slow”的 url,它在响应之前故意等待 500 毫秒。如果我直接访问应用程序服务器,它可以处理每秒 1600-1800 的连接速率。

如果我打 Nginx 负载均衡器,它只能处理大约 2000 个连接。我希望有更接近 4x1600 = 6000 的东西。下面是我用来测试它的命令。这是在 40 256 MB 实例上并行运行的。我特意将 num_call 设置为 1,因为我想看看连接性能。任何高于此值,我就会开始出现很多错误。

httperf --server 50.56.80.227 --port 1555 --uri /slow --rate 50 --num-call 1 --num-conn 100 --timeout 5
Run Code Online (Sandbox Code Playgroud)

这是我的 nginx 配置:https : //gist.github.com/1299501

所以,奇怪的是,无论我使用 nginx、haproxy 还是 varnish,我都会得到大致相同的结果。然而,我测试了 Rackspace 的新云平衡器,它们获得了更好的性能(在 7000/s 时表现良好)。由于 nginx 和其他都在我设置的实例上运行,而机架空间平衡器不是,我猜系统有问题。我宁愿使用我控制的平衡器,这样我就可以向其中添加缓存、gzip、ssl 和其他内容。

我怎样才能找出瓶颈是什么?有什么我应该在系统上调整以获得更好的性能吗?我需要超过 4GB 的内存吗?(测试过程中Ram使用率不高)。还有其他随意的想法吗?

更新:我只是将平衡器调整为 8GB,它的性能要好得多,高达 6000-7000,或者与机架空间平衡器相当。这没有任何意义,因为它之前没有耗尽 RAM。

更新:这是我重载平衡器时 httperf 的输出示例(在 8GB 版本上,比我之前能够运行的要高,但错误类似):https …

nginx centos varnish load-balancing haproxy

7
推荐指数
1
解决办法
2358
查看次数

使用 HAProxy,只在 ACL 中匹配根 URL

使用 HAProxy,我想创建以下设置:

  • 除 root (/)、/articles 和 /blogs 之外的所有请求都转到 server1
  • 所有对 root (/)、/articles 和 /blogs 的请求都转到 server2

我无法弄清楚如何在不依赖于设置默认服务器的情况下匹配 root,然后否定所有请求转到 server1 规则。

如何使用 HAProxy 表达上述内容?

正则表达式可能是解决此问题的方法,但我对正则表达式并不擅长,因此很难提出基于它的解决方案。

load-balancing haproxy

7
推荐指数
1
解决办法
8365
查看次数

nginx proxy_cache:限制对后端的并行请求

我使用 nginx 作为后端的反向代理。配置非常基本,例如核心只是:

upstream myservice {
    server 127.0.0.1:80;
    server 123.123.123.123:80;
}

location / {
    proxy_pass  http://myservice;
    proxy_set_header Host myservice;
}
Run Code Online (Sandbox Code Playgroud)

现在我的服务在计算上非常繁重,我希望 nginx 将活动并行(同时)请求的数量限制为单个上游后端,例如 10。

我查看了limit_req模块,但是这个模块似乎只关注每分钟传入的请求。我特别想限制活动后端连接的数量;即考虑请求是否已经返回。这可能吗?

在清漆中,这可以使用例如

backend cpu1 {
  .host = "127.0.0.1";
  .port = "80";
  .max_connections = 20;
}
Run Code Online (Sandbox Code Playgroud)

但是我需要为此使用nginx。

nginx varnish reverse-proxy load-balancing apache-2.2

7
推荐指数
1
解决办法
9158
查看次数

利用同一网络上的两个网关与负载平衡相同的接口

我的设置是单个接口和单个网络上的两个 ISP。我可以将我的默认网关设置为192.168.0.1或192.168.1.250并且要么工作。

编辑:网络掩码(如评论中所见)is 255.255.254.0-正如我所说,它们位于同一个子网上。

我的愿望是通过一些负载平衡来利用它们。我试图遵循这里给出的建议 https://serverfault.com/a/96586

#!/bin/sh                                                                                                                                                                                                                        
ip route show table main | grep -Ev '^default' \                                                                                                                                                                                 
   | while read ROUTE ; do                                                                                                                                                                                                       
     ip route add table ISP1 $ROUTE                                                                                                                                                                                              
done                                                                                                                                                                                                                             
ip route add default via 192.168.1.250 table ISP1                                                                                                                                                                                
ip route add default via 192.168.0.1 table ISP2                                                                                                                                                                                  

iptables -t mangle -A PREROUTING -j CONNMARK --restore-mark                                                                                                                                                                      
iptables -t mangle -A PREROUTING -m mark ! --mark 0 -j ACCEPT                                                                                                                                                                    
iptables -t mangle -A PREROUTING -j MARK …
Run Code Online (Sandbox Code Playgroud)

iptables load-balancing gateway iproute2

7
推荐指数
1
解决办法
4479
查看次数

消息队列与负载平衡。我真的不明白其中的区别

帮助我理解一些东西。我查看了几个企业应用程序架构,我注意到其中几个使用 Message Queue 服务,例如 ActiveMQ 或 RabbitMQ。我对消息队列服务器的作用有表面上的了解,但我真的不明白为什么我会选择构建一个使用它的应用程序基础设施,而不是标准的负载平衡技术,如 HAProxy 等。

两者之间的真正区别是什么?两者似乎都将流量和/或消息路由到订阅队列或池的节点。这些都有优点/缺点吗?

linux load-balancing message-queuing activemq rabbitmq

7
推荐指数
1
解决办法
7179
查看次数

是否有任何支持 HTTPS 的 DNS 系统或服务?

基本上,我需要 DNS 以不同的 CNAMES 响应,具体取决于请求是针对 HTTPS 还是 HTTP 对象发出的。

s.test.com -> IF(https) RESPONSE special.domain.com ELSE simple.domain.com
Run Code Online (Sandbox Code Playgroud)

是否可以?还有什么其他可能的方法来做到这一点?

domain-name-system https load-balancing

6
推荐指数
5
解决办法
1332
查看次数

Rails/Passenger 是否有后端感知负载平衡器?

我们在许多应用程序服务器上安装了 3 个 Ruby on Rails 应用程序(A、B 和 C)。我们的前端是 HAProxy,后端是 Apache + Phusion Passenger。最初我们在每个应用程序服务器上都安装了所有 3 个 Rails 应用程序,但是这个设置很慢,因为 HAProxy“不知道”给定的 Rails 应用程序在给定的支持服务器上是否“热”。

在此处输入图片说明

每个乘客实例配置为最多运行 8 个 Rails 应用程序实例。

考虑以下场景(简化):

  1. 应用程序 A 的 8 个同时请求进来,HAProxy 将它们全部调度到第一个应用程序服务器,因为其余请求“非常忙”处理其他请求。
  2. 乘客在此服务器上启动应用程序 A 的 8 个实例。
  3. 另一个请求传入应用程序 B,它也被分派到第一个应用程序服务器,因为其他应用程序服务器仍然太忙。
  4. 现在乘客必须关闭应用程序 A 的一个实例并创建应用程序 B 的一个实例。

在每分钟有大量请求的大计划中,所有 3 个 Rails 应用程序经常在每个应用程序服务器上启动和停止,这很慢。

在完美世界中,应用程序启动一次并处理大量请求,而无需关闭和重新启动。这就是为什么我们必须在 3 个 Rails 应用程序之间划分我们的应用程序服务器:

  • 应用程序 A 在 13 个服务器上运行。
  • 应用程序 B 在 5 个服务器上运行。
  • App C 在 2 个服务器上运行。

问题:是否有一个负载均衡器软件可以“感知”后端并且知道并使用以下信息来平衡负载:

  • 每个后端服务器当前有多少个每个应用程序的活动/热实例?
  • 这些实例中有多少当前正在处理请求?
  • 给定应用程序每分钟/小时的当前平均请求数是多少?
  • 是否需要“减少”一个应用程序并“增加”另一个应用程序? …

load-balancing haproxy ruby-on-rails phusion-passenger high-load

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

mod_jk 产生错误 smh errno=13

我正在尝试mod_jk用于负载平衡。

负载均衡器:172.17.8.189(HTTPD + mod_jk的)
节点1:172.17.8.193(的Apache Tomcat实例1)
节点2:172.17.8.196(的Apache Tomcat实例2)

我检查了我的 tomcat 实例,它们都在 8009 监听。但是,我不断收到这些错误。

[Tue Jun 18 17:49:14 2013][18057:47118810657648] [error] init_jk::mod_jk.c (3348): Initializing shm:/etc/httpd/logs/jk.shm.18057 errno=13. Load balancing workers will not function properly.
[Tue Jun 18 17:49:14 2013][18057:47118810657648] [info] init_jk::mod_jk.c (3365): mod_jk/1.2.37 initialized
Run Code Online (Sandbox Code Playgroud)

调试日志是

    [Tue Jun 18 18:14:00 2013][18778:47687756850032] [debug] jk_set_time_fmt::jk_util.c (461): Pre-processed log time stamp format is '[%a %b %d %H:%M:%S %Y]'
[Tue Jun 18 18:14:00 2013][18778:47687756850032] [debug] uri_worker_map_open::jk_uri_worker_map.c (865): rule map size is 2
[Tue …
Run Code Online (Sandbox Code Playgroud)

cluster tomcat load-balancing mod-jk

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

我无法在 AWS IAM 上上传服务器证书

我让AWS iam 在我的服务器上工作,并尝试上传一些证书:

aws iam upload-server-certificate --server-certificate-name domain2014 
--certificate-body file:///var/www/html/certificate.pem 
--private-key file:///var/www/html/private-key.pem 
--certificate-chain file:///var/www/html/ca.pem
Run Code Online (Sandbox Code Playgroud)

我得到:

Error parsing parameter '--certificate-body': file does not exist: /var/www/html/certificate.pem
Run Code Online (Sandbox Code Playgroud)

我尝试从我的 MAC 上传文件,我得到了相同的答案。

已经检查了这个问题,但是file://没有丢失,并且路由是可以的。

我确实有凭据,例如:

 AWSAccessKeyId=BKIAJQ1111111111111
 AWSSecretKey=H+2+2mko11111111111111cv+UFuA6
Run Code Online (Sandbox Code Playgroud)

还有一个配置文件。但老实说,我不明白在哪里或如何使用它来上传证书(使用aws configure 后我完成了信息,然后我不知道下一步该怎么做)。

所有这些过程都是昨天开始的,当时我没有问题地完成了上传负载均衡器的过程,但后来我意识到实际工作的证书是我之前在服务器上的自签名证书(这是我昨天发布的问题)

编辑:

如果我从终端尝试:

aws iam list-server-certificates
Run Code Online (Sandbox Code Playgroud)

我得到:

A client error (AccessDenied) occurred when calling the ListServerCertificates operation: User: arn:aws:iam::999990212999:user/admin is not authorized to perform: iam:ListServerCertificates on resource: arn:aws:iam:: 999990212999:server-certificate/
Run Code Online (Sandbox Code Playgroud)

编辑2 …

load-balancing ssl-certificate amazon-ec2 amazon-iam aws-cli

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

一个域和多个 IP 的 SSL 证书

我有一个关于 SSL 证书和多个服务器的问题。

题:

我有一个证书,一个域名,我有很多服务器保存我的网站代码。

Example.com 可以指向 IP 192.168.1.1、192.168.1.2、192.168.1.3 和 192.168.1.4。一个用于美国北部、美国南部、美国东部、美国西部。

  1. 我们如何将此证书应用于可以指向多个 IP 的域名?
  2. 是否需要负载均衡?

domain load-balancing ssl-certificate

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