我们有2个Web服务器,我们要负载平衡。 每个服务器都有一个主要的networking应用程序,受到公众的打击。 每个服务器还有一些由主应用程序在内部使用的相关微服务。 我们希望负载平衡器在检测到服务器的任何一个微服务被closures的情况下排除服务器。 http://server1/mainApp http://server1/microservice1 http://server1/microservice2 http://server1/mainApp http://server2/microservice1 http://server2/microservice2 所以如果http://server2/microservice2出现故障,我们希望server1为所有stream量提供服务。 或者,如果http://server1/microservice1宕机,我们希望server2到服务器通信。 HAproxy中可以实现这种逻辑吗? 还是有另一种技术可以为我们做到这一点? 谢谢!
伙计们, 我将我们的一个SaaS应用程序从一个郊狼点硬件负载平衡器移到一个运行nginx + haproxy的虚拟机上,haproxy处理哈希持久性。 我遇到的问题是应用程序需要会话粘性到单个后端服务器(以原始请求为准),但是当我对haproxy.cfg进行更改并执行haproxy服务重新加载时,会重新启动haproxy作为新进程并杀死这是一个旧的进程,终止任何现有的连接到特定的后端服务器,这意味着任何用户立即注销应用程序。 以下是HA-Proxy版本1.5.4 2014/09/02的haproxy后端configuration backend webapp balance hdr(X-Real-IP) hash-type consistent mode http server server1 192.168.10.50:8080 check port 8080 server server2 192.168.10.53:8080 check port 8080 server server3 192.168.10.55:8080 check port 8080 server server4 192.168.10.62:8080 check port 8080 backup 这对我们来说是一个很大的问题,因为当我需要对特定的后端服务器执行维护时,或者从后端池中添加/删除更多服务器时,我不能在不影响客户端应用程序体验的情况下执行此操作。 我如何dynamic地更改后端的服务器而不终止现有会话到后端如果Haproxy不会正常重新载入,我不会改变?
我在Google Cloudnetworking负载平衡器后面(在虚拟机上)设置了一个UDP服务器。 服务器绑定到0.0.0.0 。 UDP服务器可以接收发送给平衡器的消息,但回复不会返回给客户端。 没有错误报告, tcpdump没有显示任何exception。 我确定所有的防火墙规则都允许这个stream量,并且负载平衡器被设置为转发所有的端口。 我不是一个networking专家,但我怀疑 UDP服务器出了问题,因为收到消息的地址与用于回复( sendto() )的地址不同。 我在标准库中使用Python的socketserver模块作为echo服务器来testing所有这些: import SocketServer class MyUDPHandler(SocketServer.BaseRequestHandler): def handle(self): data = self.request[0].strip() socket = self.request[1] print "{} wrote:".format(self.client_address[0]) print data socket.sendto(data.upper(), self.client_address) if __name__ == "__main__": HOST, PORT = "0.0.0.0", 5029 server = SocketServer.UDPServer((HOST, PORT), MyUDPHandler) server.serve_forever() 虚拟机只有一个networking接口,本地IP为10.240.xx 如果我将UDPServer绑定到这个本地IP,那么这个服务器甚至不会收到消息。 没有负载均衡器,一切正常,即消息正确回显到客户端。 问题:我应该怎么做才能允许我的UDP服务器回复消息? 编辑: 这个讨论可能是相关的。
我有一个运行在Google Compute Engine实例上的WordPress网站,并且在Apache里面使用了SSL。 由于SSL和图像大小调整给这个实例带来了很大的压力,我build立了Google Compute Engine负载均衡器,在负载均衡器中设置了SSL并启用了CDN。 在Apache端,我禁用了*:443configuration,只剩下*:80configuration。负载均衡器现在接受端口443上的请求,并指向端口80上的实例。 <VirtualHost *:80> ServerAdmin [email protected] ServerName mysite.com ServerAlias www.mysite.com # Indexes + Directory Root. DirectoryIndex index.php index.html DocumentRoot /var/www/mysite/htdocs/ # Logfiles ErrorLog /var/www/mysite/logs/error.log CustomLog /var/www/mysite/logs/access.log combined </VirtualHost> 这工作,除了我现在得到混合内容错误,因为所有的资源仍然通过HTTP加载。 我现在尝试启用URL重写,以查看是否可以通过https访问所有内容: <VirtualHost *:80> ServerAdmin [email protected] ServerName mysite.com ServerAlias www.mysite.com # Indexes + Directory Root. DirectoryIndex index.php index.html DocumentRoot /var/www/mysite/htdocs/ # Logfiles […]
我想知道是否有优势或不知道每个后端服务器的loadavg,并要求HAProxy发送下一个请求到最低loadavg的计算机。 但是,我还没有看到任何在HAProxy中提供这种function的东西。 也许它不可用? 我发现这个post显示了一个使用use_backend命令的前端定义,但我认为地图将被加载一次并caching整个HAProxy运行期间。 否则,通过loadavgdynamic地改变地图sorting的项目将没有什么区别… frontend ft_items […] use_backend %[path,lower,map(/etc/haproxy/items.map,bk_default)] 目前还不清楚roundrobin对于我的应用程序是否足够好,因为有些请求需要50ms(图片,CSS等),而其他的可能需要2s(大型报告)。 所以检查计算机的loadavg似乎更适合这个应用程序的帐单。
我正在寻找与dynamic故障切换相结合的延迟(或地理位置)负载平衡解决scheme。 该基础设施基于OVH的3名专职服务器。 服务器位于3个不同的地理位置(加拿大,法国和澳大利亚)。 我正在努力实现的东西很less: 访问服务的客户端被redirect到最近的服务器,所以响应很快。 如果一台服务器停止服务,则请求将转到另一台服务器,最终用户将得到响应。 在故障转移条件下,用户得到答案更重要,而不是快速响应。 我需要有可能重新启动服务器升级或偶尔的事情。 所以魔法必须在主服务器之外。 stream量通过HTTPS,但HTTP将redirect到HTTPS。 问题的小例证 我只对HTTPstream量感兴趣。 每个请求必须去服务器,没有什么可以被caching,因为响应是非常dynamic的。 我已经看过AWS Route 53,这很棒,但它只是一个DNS,所以它不会解决故障转移的一部分。 OVH具有IP负载平衡,但是我不能使它工作,我没有find解决问题的选项1。 我对包括使用第三方服务在内的任何提示或解决scheme感兴趣。 我也在考虑在每个位置(靠近主服务器的每一个)购买3台VPS服务器,这些服务器将充当网关。 在这样的解决scheme中,我可以使用AWS Route 53为VPS服务器提供延迟负载平衡,服务器将处理故障转移。 根据定义,它们将在100%的时间内处于活动状态,而主服务器将在不停机的情况下进行重新启动。
我已经安装了Windows NLB,可以正常使用http。 但它不会将UDP回复转发给客户端。 背景: NLB – 192.168.1.10 主机1 – 192.168.1.11 客户端 – 192.168.1.5 我转发所有的端口,包括UDP和TCP协议。 但通过一个应用程序(从客户端)我发送字节到192.168.1.10(NLB),它已经达到了Host1(192.168.1.11)我可以看到日志。 但是从Host1发送的回复消息没有到达客户端。 在另一个尝试我直接运行相同的应用程序定位到Host1直接没有NLB。 全双工通信很好。 客户端和主机1可以通过UDP直接交换消息,但Windows NLB无法做到这一点?
让我来介绍一下,我不是一个负载平衡器专家,但是我知道,如果您卸载负载平衡器上的SSL证书,则具有多个优点。 我们的一个客户希望通过使用SSL的CDN来caching许多网站。 为了争辩,让我们假装这些网站是https://siteone.com和https://sitetwo.com 他们希望在负载均衡器上安装一个“错误的证书”(例如一个CN:origin.oursites.com的证书),这样他们就不必每次将新站点添加到CDNcaching。 他们说这可以做,因为CDN允许证书不匹配。 我的问题可能是一个愚蠢的问题,如下所示:如果证书不匹配,那么负载平衡如何解密每个包并找出正在请求的确切的URL,并确定包是哪个服务器发给? 我错过了什么? 你能帮我理解这是否真的可行,如果是的话,请问为什么这么做? 在此先感谢// Francesco
我们使用nginx进行负载平衡。 在推出之前,我们只是推出了一个新的服务器,并对我们的平台进行了大规模的升级testing。 我们希望确保它能正常工作,所以我们有权设置为将大约10%的stream量发送到该服务器。 问题是,我们需要确保如果用户是服务器的服务器,他们将永远得到该服务器为未来的会议。 这很容易用ip_hash完成,但我们真正想要的是其他服务使用循环策略,而只有一台服务器使用ip_hash。 有这样的可能吗? 这是我们的upstream.conf upstream apps { ip_hash; server 10.134.13.38:80 weight=3; # app-00 server 10.134.13.46:80 weight=3; # app-01 server 10.134.24.30:80 weight=3; # app-02 server 10.134.8.153:80 weight=1; # app-new-test }
我打算为高可用性scheme设置一个双节点主动 – 主动应用服务器集群。 现在,当其中一台服务器出现故障时,整个站点负载将在一台服务器上运行,直到另一台服务器重新启动。 在这种故障情况下最好的select是什么? 在降级模式下运行站点,假设发生故障的服务器将很快出现 始终以50%的负载运行每个应用程序服务器。 所以,如果一台服务器出现故障,它仍然能够支持整个站点负载,假设服务器可以在100%的负载下运行。 请指教。