Articles of 负载平衡

未在负载平衡环境中设置Cookie

我有一个Nginx负载平衡器负载平衡两个服务于PHP内容(Moodle)的nginx服务器。 他们共享相同的数据库,并使用一个单独的服务器上的NFS共享使用相同的会话目录。 我正在运行PHP 5.4.1和最新版本的Moodle。 现在负载平衡工作得很好,我可以使用代理访问两个工作节点。 但是,当login到Moodle时,我收到一个错误,指出cookies被禁用。 他们显然不是,login到其中一个工作节点工作得很好。 当单独访问节点时,MoodleSession cookie被设置,但是当通过负载平衡器访问它时,根本没有设置cookie。 我曾尝试更改Cookie模式以使用MySQL数据库,但这也不起作用。 我能做些什么获得多个工人节点来设置服务器存储在公共目录(NFS)的Cookie?

负载平衡器发送Http标题中的错误时间

我们的Intranetnetworking应用程序performance得非常奇怪。 非常经常回发(asp.net)保存表单input结束在无动作。 经过一个多月左右的通断故障排除后,我终于find了比较http请求和响应标题的地方。 基本上,我有2个浏览器会话,一个直接向Web服务器请求,另一个请求通过负载均衡器的URL。 2个答复之间的差异之一是Date标题。 来自LB的版本具有date标题,将来是6分钟。 另一个区别是Persistent-auth:LB响应为ON,直接响应为OFF。 我不是networkingpipe理员,所以我不会去捅。 我的印象是,http头是由Web服务器发出的,而不是负载平衡器。 这甚至是一个有效的情况? 我应该问什么我的pipe理员寻找?

你将如何设置多个SSL终止Haproxy实例,这本身是负载均衡?

我一直在做这方面的大量的研究和实验,而且我正在碰壁: 我正在尝试将HAProxy设置为高可用性环境的反向代理。 所有进出这个环境的stream量都是SSLencryption的,所以原来的devise是让HAProxy做SSLterminal,并将stream量清空传递到飞地,然后以另一种方式回传。 到目前为止,这么好,有很多关于这方面的恒星文档。 问题是这样的:单个SSL终止HAProxy框需要处理大量的stream量,因此需要多个SSL终止反向代理。 好吧,我已经看到了很高的和低的,并发现许多文章,似乎是在正确的方向领先,但总是结束了1主要HAProxy和1备份,(例如,所有的心跳和keepalived解决scheme,如同这里和这里一样 ),或者完全忽略SSL终止,并且讨论DNS负载均衡器。 所以我想我真正想要的是多个haproxy ssl终止盒同时分担负载的能力。 有没有办法做到这一点的DNS圆知更鸟? 我想我以为会有一种方式可以共享同一个虚拟IP地址,并且在它们之间同时分配stream量,全部是集群式的。 如果一个盒子坏了,那么故障转移可以用上面的keepalived方法解决,或者其他的东西。 这似乎不是一个常见的用例…甚至有可能吗? (当然,如何在HAProxy进程之间共享SSL会话是一个问题,但是如果不可行的话,偶尔重新build立一个新会话在这种情况下并不是一个杀手。 提前致谢!

一个清漆主pipe可以查询它包含的健康后端的数量吗?

在Varnish 3中,有没有办法检查一个董事是否有健康的后端? 我的使用案例是我有一个负载平衡器,它将stream量分配到两个清漆盒,而这两个清洁盒又坐在几个Web服务器的前面。 如果导演至less有一个健康的后端,而不需要将请求传递给实际的后端,我想让Varnish将200返回到负载均衡器的健康检查。 我正在寻找像这样的东西: if (req.url ~ "healthcheck.html") { if (my_director.has_healthy_backend) { return 200 } else { error 500 "No backends available" } }

除了CPU使用率之外的Windows Azure自动调节

我有一个相当简单的.NET MVC应用程序。 没有太多的计算能力需要。 但是,我们期待着巨大的stream量。 我一直在使用Blitz.IO来模拟并发用户,在大约8000个并发用户中,我开始注意到一个显着的减速,我想触发一个自动缩放事件。 问题是CPU使用率只有3%左右。 所以我的瓶颈不是CPU。 我们目前的设置是在三个不同地区的三个Web应用程序,最多30个VM。 我注意到,在Azure Web App部分,您可以通过Data in,Date Out,Http队列进行缩放。 我不完全确定要使用哪一个,或者每个人意味着什么。 而且我一直无法find这些指标是什么意思googline左右。

使HAProxy通过HTTPCHECK中的主机名

我正在尝试使用特定主机名在HAProxy中执行HTTP检查。 这里是我的后端configuration的一个片段: option httpchk HEAD / HTTP/1.1\r\nHost: example.com http-check expect rstatus (2)[0-9][0-9] 当我查看正在检查的服务器上的IIS日志时,主机名( cs-host )为空: #Fields: date time s-sitename s-ip cs-method cs-uri-stem cs-uri-query s-port cs-username c-ip cs(User-Agent) cs(Referer) cs-host sc-status sc-substatus sc-win32-status sc-bytes cs-bytes time-taken 2016-04-15 20:24:09 W3SVC3 123.123.123.123 HEAD / – 80 – 456.456.456.456 – – – 302 0 0 365 45 14 与来自浏览器的请求相比,主机名可见: […]

ServerIronGT不能ping真实的服务器

我有一个Foundry ServerIronGT负载平衡器,我正在尝试在其上设置SLB。 我在网上find了很多关于如何进行的例子,但是我遇到了一个奇怪的问题。 这是我的设置: Internet Gateway —-> Dell Switch —-> Server 1 (50.50.50.210) —-> Server 2 (50.50.50.211) —-> Server 3 (50.50.50.212) —-> ServerIronGT (50.50.50.220) 我已经安装了我的ServerIron的IP地址,以适应我的公共IP范围,我可以从networking内部或外部的任何地方ping通。 我也可以从networking内部或外部ping所有的服务器。 在这一点上,当我连接到ServerIron的控制台时,我可以很好地ping通网关,甚至可以从networking外ping IP,例如Google的DNS服务器。 我遇到的问题是我的服务器连接到Dell交换机可以ping我的ServerIron就好,但ServerIron无法ping任何服务器。 所以,当我安装我的虚拟服务器,它总是显示不健康,因为它不能到达我的真实服务器。 这是我的configuration: !Building configuration… !Current configuration : 512 bytes ! ver 10.2.01eTD2 ! module 1 bi-0-port-wsm6-management-module module 2 bi-jc-16-port-gig-copper-module module 3 bi-jc-8-port-gig-module ! context default ! […]

configurationHAProxy根据url_param路由stream量

我对HAProxy非常陌生。 我花了几个小时试图找出如何做到这一点,但没有得到任何线索。 我的要求是这样的: 如果请求的终点是/ special,那么我需要检查URL_PARAM。 例如:localhost / special?id = 10根据ID,我需要将它路由到3个服务器之一。 如果id <= 3 server1,如果id> 3并且id <= 6 server2 else server3。 如果端点不是所有3台服务器之间的特殊循环。 我如何实现这2级平衡?

Amazon ECS负载均衡器设置为端口9090不起作用

我在Amazon Web Services中创build了经典的负载平衡器,并且已将侦听器端口设置为9090.并且我已将负载平衡器与具有2个EC2实例的集群关联。 我已经为9090的实例给出了入站规则。 为了在集群中创build服务,我创build了如下的任务定义。 { "family": “my-spring-task“, "containerDefinitions": [{ "image": “my-docker-group/my-spring-app“, "name": "my-spring-app", "cpu": 10, "memory": 256, "essential": true, "portMappings": [{ "containerPort": 9090, "hostPort": 9090 }] }] } 然后我创build这个服务,给出上面的任务定义。 aws ecs register-task-definition –cli-input-json file://service90-task.json aws ecs create-service –cluster service90-cluster –service-name service90-service –load-balancers loadBalancerName=service90-load-balancer,containerName=my-spring-app,containerPort=9090 –task-definition service90-task –role ecs-service-role –desired-count 0 我的计划是运行一个Spring引导项目,它是用gradle和docker插件构build的。 我有运行端口8080的项目。它正在按预期工作。 但是当我尝试在9090端口上运行服务时,由于运行状况检查失败而无法运行。 我需要build议如何使端口9090或任何端口号。

Nginx的ip_hash不负载平衡meteor后端的连接

我无法获得nginx负载平衡与ip_hash启用内部连接。 我需要粘性会话,因为我在后端使用meteor,但是所有的请求总是碰到相同的后端。 nginx访问日志文件显示以下IP地址: 192.168.0.20 – – [xx/xxx/2017:xx:xx:xx +xxxx] "GET /favicon.ico HTTP/1.1" 404 5 "http://xxxx.lokal/" "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36" 192.168.0.11 – – [xx/xxx/2017:xx:xx:xx +xxxx] "GET /sockjs/602/dpkl6lfe/websocket HTTP/1.1" 101 55045 "-" "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36" 192.168.0.208 – – [xx/xxx/2017:xx:xx:xx +xxxx] "GET […]