我想知道是否有优势或不知道每个后端服务器的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似乎更适合这个应用程序的帐单。
HAProxy需要处理每小时数百万次请求的主要资源是什么? 推荐什么硬件(CPU,Cored,Ram …)?
我对HAProxy非常陌生。 我花了几个小时试图找出如何做到这一点,但没有得到任何线索。 我的要求是这样的: 如果请求的终点是/ special,那么我需要检查URL_PARAM。 例如:localhost / special?id = 10根据ID,我需要将它路由到3个服务器之一。 如果id <= 3 server1,如果id> 3并且id <= 6 server2 else server3。 如果端点不是所有3台服务器之间的特殊循环。 我如何实现这2级平衡?
我正在尝试通过在POSTpath的节点上强制进行URL编码来纠正URL参数问题,这种情况经常发生。 在这个时候,最好是在代理层修复这个问题,直到开发出更好的解决scheme。但是Haproxy给了我这个问题,我还要提一下,我现在被Haproxy v1.5所困住了(从我可以告诉,也离开使用Lua列表的选项..引入v1.6?)。 这是一个例子是这样的.. 我通常以这种forms得到POST请求 http(s)://sub.domain.com/context/{context}/staticPath/location/{location}/material/{material} 所以,在实践中可能看起来更像这样。 http://sub.domain.com/context/smith/staticePath/location/columbus/material/abc/123 从另一端需要以下 http://sub.domain.com/context/smith/staticePath/location/columbus/material/abc%2F123 问题是,abc / 123是一个单一的材料,需要看起来更像“abc%2F123”,其中“/”斜线正在改变实际的path。 我试图在代理中捕捉到这一点,我可以得到正则expression式来捕获我所需要的,但似乎每当我尝试在捕获组中有一个“斜杠”/ /和/或试图把斜杠放回到取代部分它打破了重写。 下面是我尝试过的一些例子,同时请记住,我打算扩大抓取以抓取整个url,但正在简化尝试解决这些问题,同时我也试图从这个记忆中讲述一些故事点,所以请原谅,如果下面没有死..我尝试了许多,很多组合试图想出一个可行的战略。 通过这种方式.. reqrep (\w+\s?)\/(material)\/(\w+\s?)\/(.*) \1\2\3%2f\4 我可以让捕获组再次将URL重新组合起来,但path节点之间没有path定界符(“/”)。 像这样,它不会取代,它只会发送原始path。 reqrep (\w+\s?)\/(material)\/(\w+\s?)\/(.*) \1\/\2\/\3%2f\4 采取这样的策略… reqrep (\w+\s?)(\/)(material)(\/)(\w+\s?)\/(.*) \1\2\3\4\5%2f\6 我尝试的另一个策略是在捕获组中保留“/”,以便它们可以在replace中出现,而不在捕获组中留下不需要的“斜线”,如下所示。 reqrep (\w+\s?)(\/material\/)(\w+\s?)\/(.*) \1\2\3%2f\4 我也读了一下,看到一些正则expression式有空格,replace有一些间距的例子。我可以通过在replace中使用一些间距来closures,但是在最终的结果中留下不希望的空格。 也.. 如果我逃脱一个空间,然后加一个斜线,似乎更接近..前。 \1\ /\2但是,我会得到像(例如) location /material..东西,像上面提到的添加空间。 我注意到的模式是,当我试图在正则expression式中添加斜杠到捕获组时,它会弄乱replace,使我猜测像..这样的事情是否由于它们在捕获组中而不能逃脱? 而且,为什么我不能把它们放回文字replace? 这是我想象我可能已经偶然发现了一个错误的地步..但也意识到我可以搞砸了。 使用Nginx开发了一个解决scheme,但是如果能够让Haproxy做到这一点,在我们需要的前面站立一个实例也不是最实际的,主要是因为我们已经使用Haproxy来做相当多的其他东西已经。 我真的更喜欢用另一种方式来解决这个问题,但是现在使用代理似乎是我最好的select之一。 我也没有奢望强迫发起人给予更好的path。
我只有一个公共IP地址,三个LAN Web服务器。 我想将stream量从WANredirect到Web服务器,必须支持SSL/TLSstream量redirect: https://www.example.com (A Record)===> 1.1.1.1(Public IP) ===> 192.168.1.1(Web 1) https://www.example.net (A Record)===> 1.1.1.1(Public IP) ===> 192.168.1.2(Web 2) HAProxy可以完成这项工作吗?
我试图使用haproxy作为代理服务器来设置基本的基础架构。 这是我的基本环境 域名: example.com 代理服务器 操作系统:Linux的Ubuntu 16.04 软件:haproxy服务器 IP:100.100.100.101 代理configuration文件:已经添加/configuration了这两个部分 frontend http-frontend bind 100.100.100.101:80 reqadd X-Forwarded-Proto:\ http default_backend webserver backend webserver server 1-www 100.100.100.102:80 check #server 2-www private_ip_2:80 check # use for load balance networking服务器 操作系统:Debian Jessie 8.7 软件:Nginx / PHP-FPM / MySQL IP:100.100.100.102 DNS指向我的代理IP:100.100.100.101 Type A 100.100.100.101 CNAME example.com Obs .:在浏览器中调用域名时,redirect没有任何问题,但是没有下载来自Web服务器的内容(我得到了无法连接错误)。 我已经安装让我们encryption在我的Web服务器IP:100.100.100.102,也许这是造成这个问题? 同样在我的nginxconfiguration文件中,我创build了一个规则来redirect从HTTP到HTTPS,以防万一用户忘记使用https://。 我的疑问是,我是否应该在我的代理服务器或Web服务器(实际安装)中安装Let's […]
我目前有一个网站服务器运行我的网站,所有的要求直接在那里。 networking服务器在轨道上运行ruby,一切都很顺利,但随着我的网站的增长,我将需要一个更大的服务器,或扩大与更多的服务器处理额外的负载。 我想和第二种情况一起去。 我不想拥有一台巨大的服务器,而想要两台或者三台更小,更便宜的服务器。 这是我认为应该这样做的: 所有域指向xxx30(HAProxy)。当HAProxy收到一个GET请求时,它将这个请求发送给可用的最不繁忙的web服务器。 networking服务器直接响应客户端。 通过这种设置,我可以随时添加Web服务器,并通过将问题Web服务器从群集中解放出来,从而快速解决任何问题。 xxx30 <– HAProxy xxx31 <– webserver1: Rails/Passenger3 xxx32 <– webserver2: Rails/Passenger3 我的理解是否正确?
是否有可能阻止任何端口访问可以说,8080被阻止从外部世界除了我们的某个IP地址? 我知道如何阻止使用IP地址 listen … … acl bad_ip src XXX.XXX.XXX.XXX #Any Bad IP use_backend block_ip if bad_ip … backend block_ip mode http errorfile 403 /etc/haproxy/errors/403.http 但是我阻止了港口。
所以我的HAProxyconfiguration与此类似。 listen webaustin 0.0.0.0:80 mode http timeout connect 12000 timeout server 60000 timeout queue 120000 balance roundrobin option httpchk GET /index.html log global option httplog option dontlog-normal server web1 10.10.10.101:80 maxconn 600 check fall 10 server web2 10.10.10.102:80 maxconn 600 check fall 10 server web3 10.10.10.103:80 maxconn 600 check fall 10 server web4 10.10.10.104:80 maxconn […]
我只是想知道如果下面的情况是可能的,如何实现这一点。 假设有一个域服务有2个DNSlogging。 两个logging都指向两个不同的服务器HTTP服务器。 最近我不得不经常更换这些服务器,每次更换都需要更改IP地址。 因此,首先我必须创build新的服务器,更改DNSlogging指向新的服务器,等待几天,当旧的服务器停止接收stream量,然后删除旧的服务器。 我想创build第三个服务器(类似于haproxy的function),并将所有的DNSlogging指向这个新的服务器,并可能通过端口来区分stream量。 这个基于端口的第三台服务器将决定在哪里发送stream量。 所以下一次我将不得不改变服务器,我只会改变它在我的第三台服务器,并删除旧的。 就这样。 我认为haproxy不是正确的工具用于此。 我提到它是因为我熟悉它并在内部networking中使用它。 问题是我需要使用第三台服务器来浏览stream量。 谢谢!