Questions tagged «load-balancing»

负载平衡处理涉及使用多个系统来处理高要求的技术,从而平衡多个系统之间的负载。是否使用专用硬件处理网络和服务器负载平衡问题。

5
通过TTL加权轮循-可能吗?
我目前使用DNS轮询进行负载平衡,效果很好。记录看起来像这样(我的TTL为120秒) ;; ANSWER SECTION: orion.2x.to. 116 IN A 80.237.201.41 orion.2x.to. 116 IN A 87.230.54.12 orion.2x.to. 116 IN A 87.230.100.10 orion.2x.to. 116 IN A 87.230.51.65 我了解到并不是每个ISP /设备都以相同的方式对待这种响应。例如,某些DNS服务器随机旋转地址,或始终循环访问它们。有些只是传播第一个条目,而另一些则通过查看IP地址来确定哪个最好(在区域附近)。 但是,如果用户群足够大(分布在多个ISP等上),则可以很好地保持平衡。从最高负载到最低负载的服务器的差异几乎都不超过15%。 但是,现在我遇到的问题是,我正在向系统中引入更多服务器,而并非所有服务器都具有相同的容量。 我目前只有1 Gbps服务器,但我想同时使用100 Mbps和10 Gbps服务器。 因此,我想介绍一种权重为100的10 Gbps服务器,权重为10的1 Gbps服务器和权重为1的100 Mbps服务器。 之前,我曾两次添加服务器以向它们带来更多流量(效果很好,带宽几乎增加了一倍)。但是将10 Gbps服务器100次添加到DNS有点荒谬。 所以我考虑使用TTL。 如果我给服务器A提供240秒的TTL,给服务器B仅提供120秒(这大约是用于轮询的最小时间,因为如果指定了较低的TTL,则许多DNS服务器都设置为120(所以我已经听说过))。我认为这样的事情应该在理想的情况下发生: First 120 seconds 50% of requests get server A -> …


6
为什么没有可水平扩展的软件负载均衡器来平衡SSL的示例?
关于ssl,本地会话和负载平衡,我有很多问题似乎相互关联,因此对于这个问题的长度,我事先表示歉意。 我有一个使用基于文件的会话的网站。该站点的性质是,大多数站点是http,但是某些部分是ssl。当前,由于基于文件的会话,任何ssl请求都必须与以前的http请求命中同一台服务器。 由于时间限制,我想做最简单的事情来平衡增加的http和ssl流量。 粘性负载平衡算法似乎有2个选择: 基于IP 基于cookie 基于ip的解决方案可能会起作用,但是当服务器关闭或添加服务器时,哈希算法可能会更改用户访问的服务器,这在当前基于文件的会话设置中是不希望的。我还假设用户在浏览网站时合法地更改ips在技术上是可能的。 基于cookie的算法似乎更好,但是用ssl加密时无法检查cookie似乎存在其自身的问题。 我一直在搜索有关如何对ssl进行负载平衡的示例,但似乎找不到任何可以进行基于cookie的负载平衡并且可以通过添加另一个ssl解码器来处理增加的ssl负载的设置的显式示例。 我见过的大多数显式示例在浏览器客户端和负载平衡器之间都装有ssl解码器(通常是硬件,apache_mod_ssl或nginx)。这些示例通常看起来像这样(从http://haproxy.1wt.eu/download/1.3/doc/architecture.txt修改): 192.168.1.1 192.168.1.11-192.168.1.14 ------- + ----------- + ----- + ----- + ----- + | | | | | +-+-+ +-+-+ +-+-+ +-+-+ +-+++ | LB1 | | A | | B | | C | | D | + ----- + …

5
防止拒绝服务攻击的最佳技术是什么?
目前,我一直在使用(D)DoS-Deflate来管理众多远程服务器上的这种情况,并使用Apache JMeter进行负载测试。 总体而言,它运行良好,尽管我想听听一些专家的建议,这些专家在这种情况下工作的时间比我更长。我敢肯定,那些在网络托管业务中工作的人在应对这些情况方面应有相当的份额。因此,我想知道在公司环境中解决此类问题的最佳实践是什么?

1
无法通过SSH进入AWS CloudFormation堆栈实例
我现在设置了一个可伸缩的负载平衡器,此模板通常遵循以下步骤: https://github.com/satterly/AWSCloudFormation-samples/blob/master/LAMP_Multi_AZ.template 将AWS::AutoScaling::AutoScalingGroup.CreationPolicy.ResourceSignal.Count密钥调整为0(基本上允许在没有收到成功信号的情况下加载堆栈)之后,我就能够加载堆栈,并且可以看到所有可用资源。 我可以看到正在创建的密钥的公共DNS,但是无法通过SSH进入实例。 我在实例规则中对所有人开放了SSH访问权限,可以在AWS控制台中确认这一点。 我还根据官方AWS文档中的建议为我的VPC配置了一条路由:https : //aws.amazon.com/premiumsupport/knowledge-center/ec2-linux-ssh-troubleshooting/ 我可以看到实例存在,但是似乎我在某些地方限制了自己的访问。但是,在AWS EC2控制台中,设置看起来与我可以SSH进入实例的外观相同。 这是我使用的JSON模板,您可以在其中查看所有设置,包括我的VPC,子网,安全组等:https : //gist.github.com/dambrogia/e4cd93a64ae6f3a79d4a58d466f144f8 我从以下命令收到超时错误:(我的id_rsa密钥在ec2中有效) ssh -i ~/.ssh/id_rsa ec2-user@<ec2_instance> 如何通过SSH进入实例?先谢谢您的帮助!

1
HAProxy基本体重问题
分配给服务器的权重是否仅影响特定后端内的平衡? 第一次实现权重时,如果我给后端中的所有服务器提供相同的编号,那与以前没有权重的情况一样吗? 如何通过按一定量调整权重来计算我要消耗的流量。例如: 服务器web1 10.10.10.10重量100 服务器web2 10.10.10.11重量100 服务器web3 10.10.10.12重量90 服务器web4 10.10.10.13重量90

2
HAProxy切换到出现500个错误和/或服务器关闭时进行备份
我在只有2个后端服务器的前面设置了HAProxy,并进行了特殊配置:任何请求都应发送到服务器A;但是,如果服务器A返回5xx错误代码,则所有请求都应转到备份服务器B。当A返回“启动”时,所有请求都应转到A。 我正在尝试此配置: backend example_cluster balance roundrobin option httpclose option forwardfor option httpchk HEAD /ping.html HTTP/1.0\r\nHost:www.example.com http-check disable-on-404 default-server error-limit 1 on-error mark-down redirect scheme https if !{ ssl_fc } server node1 1.2.3.4:80 check observe layer7 server node_back 5.6.7.8:443 backup ssl verify none 但这不起作用有两个原因: 即使node1(A)已启动,所有请求也都路由到服务器node_back(B)。 似乎没有对服务器A执行任何httpcheck;或更好,在syslog中,我看不到有关服务器A关闭的任何错误。 如果删除“ option httpchk”行以及该行下面的两行;并且我还删除了服务器A中的“观察层7”;HAProxy通过将所有请求路由到节点A来工作。但是,显然,当服务器A返回500时,HAProxy不会切换到B。因此,我假设问题可能出在选项httpchk配置中。

2
我如何知道我已被负载平衡到哪个服务器?
我想测试位于负载均衡器后面的两台服务器之间的单向同步的一些配置更改(这就是Rackspace Cloud基础设施FYI)。我遇到的问题是,我无法确定已将负载均衡到哪个服务器,因为给出的IP始终是负载均衡器的IP。 是否有一种简单(甚至不是很简单)的方法来告诉我实际上已定向到哪个服务器。理想情况下,我希望使用浏览器中的内容,因为这意味着非技术团队的成员也可以相对轻松地报告问题,但是最好的解决方法构想也应受到赞赏。 附加信息:两台服务器都运行Apache,并且负载平衡器已配置了会话持久性。

2
扩展HAProxy以支持超过64k的WebSocket
我们正在尝试设计一种能够处理超过64k WebSocket的体系结构。 我们首先尝试使用Amazon ELB,但其设计不允许流量或Websocket意外增加。(TCP模式意外使WebSocket超时) 使用HAProxy时,这些限制将不适用,但我们仅限于在HA与后端服务器之间维护的约64k websocket。 我想到了多种解决方案: 多个HAProxy实例,使用DNS进行负载平衡(Route53具有加权选项) 两个具有Keepalived,多个内部IP地址的HAProxy实例(不确定它是否可行) 有一个更好的方法吗 ?

4
如何限制会话数?
我需要一种跟踪和限制Web会话到Web应用程序的方法。“会话”被宽松地定义为浏览所述网络应用的页面的单个用户。我认为可以将其翻译为: 将会话定义为元组<clientIP,vHost>,<clientIP,serverIP,serverPort>或者将其定义为元组<cookie,vHost>,具体取决于层和可用数据 用户将身份验证数据发送到已定义的登录URI后,会话开始 用户点击定义的注销URI后,会话结束 如果在客户端请求最后一个对象后指定的超时时间已过,则会话结束 达到指定的会话限制后,应将下一个用户定向到自定义错误页面。我还需要一种方法来跟踪用于监视目的的当前会话数,以及能够将监视服务器列入白名单(该服务器定期向Webapp发出查询)并将其免于限制。 我可以使用的工具: Web应用程序已定义自己的服务器场并以反向代理模式运行的RadWare AppDirector 阿帕奇2.2 SLES 11 SP2 我宁愿不涉及其他代理服务器,但如果没有其他选择,会考虑使用它。 所有这些背后的基本原理是,上述Web应用程序很容易过载,并开始错误地拒绝请求,惹恼了(通常)在此过程中丢失表单输入数据的工作用户。通过指定一个不太可能发生过载情况的极限,我们希望创建一个定义明确的故障情况,如果负载可能达到峰值,则将告知用户稍后返回。 编辑:Web应用程序是3层实现,第一层(表示层,在Apache vHost中作为CGI代码实现)相当简单,并且显然仅限于基本错误处理和应用程序服务器之间的请求负载平衡。它不会在运行的Web服务器上施加任何重大负载-这就是为什么我们在AppDirector服务器场中仅以故障转移模式(无负载平衡)运行它的原因,这应该可以简化一些事情。 超出这一点的所有内容基本上对我们来说都是一个黑匣子-在数据层,我们拥有一个MSSQL数据库,但是几乎不可能从供应商那里获得有关表结构的任何有意义的信息。应用服务器是开源的,供应商使用了相当全面的框架来实现,但是似乎无法回答与操作有关的更为简单的问题。

2
F5负载平衡器重新发送超时请求
首先,我不是系统管理员,而是程序员。 最近,我们的系统管理员安装了F5负载平衡器。从那时起,我注意到,每当一个请求超时并最终抛出500时,负载均衡器都会向我们的其他服务器发送相同的请求。即使脚本实际上仍在运行,IIS也会发送超时响应。如果脚本运行超过5分钟,则即使POST请求也会重复。对我来说,这似乎是一个潜在的问题,尤其是在涉及客户计费的电子商务网站上。 这只是我们一些运行时间更长的脚本的问题(但这是一个严重的问题)。有人告诉我这是预期的行为,我们必须更改代码以使其符合要求。所以我的问题是: 这是预期的行为吗? 负载均衡器在超时后复制了请求,而不是让用户不必刷新,这有什么好处? 使用这种体系结构,如果运行了使服务器瘫痪或占用资源的脚本,则该脚本最终将在两个服务器上运行。那真的是最佳选择吗?

4
Active Directory身份验证负载平衡和故障转移
对于针对Active Directory DC进行身份验证的应用程序,显然最好将它们指向主域DNS记录,而不是将特定DC用于故障转移,负载平衡等。 那些迫使您对DC的IP进行硬编码的应用程序的最佳实践是什么?我们可以对负载均衡器的IP地址进行硬编码,因此,如果一个DC断开,该应用程序仍将能够进行身份验证。有更好的选择吗?

2
使用NameVirtualHosts并重定向到www时,应如何配置ELB运行状况检查?
我的ELB继续使我的实例停止服务,因为HTTP运行状况检查失败。 我们有一个DNS通配符,并将所有内容重定向到www: vhost.conf: ServerName www.example.com ServerAlias *.example.com RewriteEngine on RewriteCond %{HTTP_HOST} !^www\.example\.com$ [NC] RewriteRule ^ http://www.example.com/$1 [R=301,L] 对于实际的浏览器来说,这可以正常工作,但是对/的HTTP运行状况检查失败,大概是因为它收到302。 是使用TCP运行状况检查的最佳选择,还是有办法使HTTP正常工作?

5
haproxy-在TCP模式下传递原始/远程IP
我已经设置了带有keepalived的haproxy,以实现percona群集的负载平衡和ip故障转移,并且由于它工作得很好,我想对另一个服务/守护程序使用相同的lb /故障转移。 我已经通过以下方式配置了haproxy: listen my_service 0.0.0.0:4567 mode tcp balance leastconn option tcpka contimeout 500000 clitimeout 500000 srvtimeout 500000 server host1 xxx.xxx.xxx.xx1:4567 check port 4567 inter 5000 rise 3 fall 3 server host2 xxx.xxx.xxx.xx2:4567 check port 4567 inter 5000 rise 3 fall 3 负载平衡工作正常,但是服务看到的是负载平衡器的IP,而不是客户端的实际IP。在http模式下,让haproxy传递到远程IP是很容易的,但是在tcp模式下该如何做呢?由于需要负载均衡的服务的性质,这一点至关重要。 谢谢!维托


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.