Articles of 负载均衡

在持续高负荷下服务的常见背压策略

我想知道什么是人们使用他们的networking服务常见的背压战略? 想象一下,你的服务在重负载下运行,并且在某个时候负载达到你容量的120%。 你怎么处理这个? 我能想到的最好的策略是开始拒绝连接。 所以,如果一个主机达到了最高容量(例如,所有Apache员工都很忙),我会开始拒绝TCP连接,直到其中一个工作人员释放。 通过这种方式,所有被接受的连接都将被立即处理而不需要排队(所以延迟很小),过多的20%被拒绝,允许负载均衡器重新分配给其他主机或执行任何其他的负载减less策略(例如,redirect到静态/caching内容)。 我认为这种快速的方法比任何排队方式都要优越得多。 小的队列可以吸收短暂的stream量爆炸,但是由于过多的排队,您的系统在重负载下可能会失败。 例如,在没有任何AQM的FIFO队列处理的情况下,当所有处理的请求在客户端已经超时时,它可以进入状态,因此系统不进行前进。 我感到惊讶的是,这个策略听起来并不容易实现。 我的方法是在Web服务器上设置一个小的收听积压,期待所有不适合的连接被拒绝。 但是由于Linux内核2.2的变化,这种策略分崩离析(参见http://veithen.github.io/2014/01/01/how-tcp-backlog-works-in-linux.html )。 较新的Linux内核无条件地接受你的连接。 SYN-ACK响应被发送到客户端,根本不考虑监听积压大小。 启用tcp_abort_on_overflow选项也没有多大帮助。 这个选项使内核在连接不适合接受队列时发送RST,但此时客户端已经考虑了连接ESTABLISHED并可能已经开始发送数据。 这对HAProxy尤其有问题。 如果连接成功build立,它不会将请求重新发送到其他服务器,因为这个请求可能在服务器上有一些副作用。 所以我想我的问题是: 我试图执行这样的事情是我奇怪的吗? 有什么其他的策略来处理持续高负荷,你可以推荐? 是Linux内核的tcp_abort_on_overflow中断,应该应用于半开放队列吗? 提前致谢!

SAS平衡vsnetworking平衡

我想在MS Windows Server 2012 R2环境中configuration文件服务器,这会负载平衡stream量 。 我有一个带有2个SAS控制器的SAS磁盘arrays,它通过4个冗余SAS多path连接到2个Hyper-V群集节点: 控制器1 < – >节点1,控制器1 < – >节点2 , 控制器2 < – >节点1,控制器2 < – >节点2 。 我不知道如果我不平衡networking,SAS负载平衡是否会引人注意 ,也就是说,networking上只有一台服务器可以处理所有的文件I / O请求。 平衡networking似乎是复杂的,因为我不希望有2个文件服务器具有相同的数据副本(在磁盘arrays的RAID级别上保证冗余)。 我想要的是将一堆数据拆分为两个不相交的作用域,每个作用域位于单独的文件服务器上 (群集中的一个节点上的每个虚拟服务器),这将作为单个服务器或SMB共享。 用户不知道哪些数据在服务器A或B上,SMBpath应该是\\domain.com\home\username或\\domain.com\share\department ,家庭或部门应该分布在两台服务器上(例如首先以“AP”开头,其余的则以第二个开头)。 我有一个中央networking核心交换机,每个集群节点有5 GB / s的聚合链路。 其余的networking连接到交换机(每个接入交换机通过2 GB / s链路连接,客户端通过1 GB / s链路连接)。 我的问题是: 如果我不做networking负载平衡并保持SAS负载平衡,那么SAS负载平衡是否会显着? 是否有一些networking负载平衡聚类技术,我会达到上述结果? 我知道有很多因素取决于具体情况(例如同时连接的最大数量或分离的频率,可能的短连接数,读操作是否占主导地位等等),但是我是否应该尊重一般的最佳实践 ? 是不是最简单的(也可能是最好的)不负载均衡和pipe理简单的方法? 编辑: 非常感谢你! 其实DFS是我search的第一个想法之一,但我已经结束了,我想要的是DFS不可能的结果。 玩了一段时间后,我有以下的困惑: 一个DFS命名空间HOME,这两个文件服务器都作为命名空间服务器添加到它,因此每个在“C:\ DFSRoots […]

Amazon ELB工作stream程中的SSL / HTTPS

所以我有几个EC2实例充当ELB上的节点,并且想要设置通配符证书。 任何人有任何好的方向/链接,我可以看看? 我对CSR文件生成有点困惑。

在不同数据中心之间设置多个VPS的负载平衡/故障切换

我知道这个问题的很多变种已经被问到了,但我仍然无法find一个好的答案来满足我的需求。 我想要做的是设置一些(至less2个)VPS来托pipe我的networking应用程序。 我想提供一些负载平衡 (这是很容易实现与我们说的光油),和相对较高的可用性 – 这是我的问题。 使用负载平衡器(我需要在VPS的主机上托pipe)引入了单点故障 ,与只有一台机器服务内容几乎一样糟糕。 View post on imgur.com 而AFAIK DNS轮询方法不仅是负载平衡的好主意,而且也不提供故障切换机制 。 如果其中一台服务器出现故障,某些人(使用caching的DNS IP)仍将尝试连接到不可用的服务器。 忘记短TTL – 这不是正确的解决scheme。 View post on imgur.com 一个非常重要的事情要考虑:我想让我的VPS分布在许多数据中心 ,所以如果电力或ISP在一个数据中心失败,网站将不会崩溃。 我能想到的唯一的两个解决scheme是依靠dns循环(如果发生服务器故障,至less将某些内容提供给一定比例的用户,直到恢复),或者在数据中心购买一台专门的服务器,为数据中心做好充分的准备有几个互联网连接(与租用甚至10个VPS相比,这是非常昂贵的)。 所以问题是: 有几个负载均衡的VPS时,避免单点故障的正确方法是什么? 请原谅图像。 他们就是我所说的“尽可能基本”的例子。

Haproxy优雅重新加载

我正在寻找优雅的haproxy重新加载的解决scheme。 我有一个运行的nginx服务器将请求传递给Haproxy,有时我重新加载Haproxyconfiguration。 但我注意到,在重新加载时,所有现有的连接都被切断,haproxy后端队列显示0个请求(从haproxy的套接字统计获得)。 我正在使用几个博客文章中提到的方法和haproxy关于这个问题的文档: 重新加载: haproxy -f /etc/haproxy/haproxy.cfg -p /var/run/haproxy.pid -D -sf (</var/run/haproxy.pid) 开始: haproxy -D -f /etc/haproxy/haproxy.cfg -p /var/run/haproxy.pid 如果有人能提出任何解决scheme,我们将不胜感激。 以下是我的haproxyconfiguration文件 global maxconn 64000 ulimit-n 200000 log 127.0.0.1 local0 log 127.0.0.1 local1 notice spread-checks 5 stats socket /etc/haproxy/stats defaults log global mode http balance roundrobin maxconn 64000 option abortonclose option httpclose retries 3 option […]

Haproxy:带有自签名证书的SSLencryption后端

我正在configurationHAProxy,以便终止SSL,因此只有一个地方可以configuration购买的SSL证书。 不过,我宁愿与后端服务器的连接也使用SSL进行encryption。 我发现的一个build议是在后端服务器上创build自签名证书,然后在每个服务器行上设置“verify none”。 …因此,从浏览器到HAProxy的连接将使用正式购买的SSL证书,但是HAProxy到后端服务器的连接将使用自签名证书。 自签证书的好处是免费,不需要更新和维护(我可以在将来设置到期,避免每年都要安装新版本)。 然而,可以理解的是,这会打开MITM攻击的后端,而且我读过的一些消息并不build议这样做。 我可以configurationHAProxy,以便我可以在后端服务器上使用自签名证书,但可能会将HAProxy服务器上的自签名证书列入白名单? …所以HAProxy到后台连接将被encryption,它不会受到MITM攻击,HAProxy将知道信任来自后端服务器的自签名证书。 我所描述的是可能的吗? 我是HAProxy SSLterminal新手,所以任何意见是赞赏。 我的configuration的相关部分如下: frontend www-in bind *:80 bind *:443 ssl crt /etc/ssl-keys/my-public-ssl-key.pem no-sslv3 mode http default_backend https-backend # force redirect to https redirect scheme https if !{ ssl_fc } backend https-backend balance leastconn server web1 1.1.1.1:443 check ssl verify none server web2 2.2.2.2:443 check ssl […]

是否有可能实时同步TCP代理的状态(SLB的实际高可用性)?

考虑有两个服务器负载均衡器在tcp代理模式下工作(例如,对于L7负载平衡)。 是否有可能实时同步他们的状态,以便他们可以互相备份? 如果一个端口closures,另一个端口仍然具有所有必要的状态来不间断地支持所有现有的TCP连接。 我知道这很难,但我想知道任何免费/商业LB已经支持这个function。 谢谢!

nginx如何在与上游DNS名称关联的IP之间分配stream量?

有了这个configuration: upstream some_upstream { server some-elb.us-east-1.elb.amazonaws.com:80; } 如果某些-elb.us-east-1.elb.amazonaws.com映射到2个IP地址,nginx将如何在它们之间分配请求? 循环赛? (对于版本1.1.19,如果行为在某些时候改变了)。 另外,我在这里读到nginx在启动时cachingDNS结果。 如果你使用一个variables,它会刷新它们,但是只有你configuration了一个DNSparsing器。 因此,如果我没有configurationDNSparsing器,那么如果some-elb.us-east-1.elb.amazonaws.com中的某个IP发生更改,会发生什么情况? Nginx会继续发送stream量到它在启动时find的同一组IP吗?

同时pipe理多个Apache代理(mod_proxy_balancer)

我的Web应用程序的前端由当前两个Apache反向代理构成,使用mod_proxy_balancer在多个后端应用程序服务器上分配stream量。 前端反向代理,运行在不同的主机上,可以从互联网上访问。 DNS循环通过两者分配stream量。 将来,反向代理的数量可能会增长,因为networking应用的带宽非常大。 我的问题是:我如何保持反向平衡器/代理的状态同步? 例如,出于维护目的,我可能希望减less后端应用服务器之一的负载。 目前我可以通过访问每个代理上的Balancer-Manager Web表单来更改分配规则。 但是我必须手动在每个代理上执行此操作,并确保input相同的内容。 是否有可能“链接”mod_proxy_balancer的多个实例? 还是有一个工具,连接到一些实例,并更新所有相同的信息? 更新 :工具应该检索运行时状态并进行运行时更改,就像现有的Balancer-Manager一样,只能用于一些代理服务器 – 而不仅仅是一个代理服务器。 configuration文件的修改不是我感兴趣的(因为有很多工具)。

没有负载平衡器的负载平衡?

我有4个nginx驱动的图像服务器在他们自己的子域,用户随机访问。 我决定把它们全部放在HAProxy负载均衡器的后面,以提高可靠性,并从一个地方查看stream量统计信息。 这似乎是一个简单的方法。 不幸的是,这个举动完全失败了,因为负载平衡器的100mbit端口已经完全满足了所有的请求。 我想知道该怎么做 – 我可以得到一个端口升级($$)或返回到随机访问的4个独立的映像服务器。 我想把HAProxy放在每个映像服务器上,如果服务器的nginx服务有问题的话,映像服务器又会路由到另一台映像服务器。 你会怎么做? 我想不必花太多额外的钱。