Articles of 负载平衡

负载平衡消息中间件

我正在寻找关于面向消息的中间件,ESBtypes应用程序的负载平衡stream量的build议。 该应用程序是群集不知道的,不能在其内部分配负载。 因此,这是必须平衡的传入/传出消息stream量。 在我们的环境中,多个系统使用长时间的TCP连接连接到中央服务器,并在build立连接后使用MLLP交换消息。 中间件用于映射消息并将消息路由到多个其他连接的系统。 连接: System A (via TCP) <-> Middleware App (via TCP) <-> System B (via TCP) System C (via TCP) <-> MLLP: 0x0B field.1|field.2|…|field.N 0x1C 0x0D 消息是用可变长度字段pipe道分隔的。 平衡会模仿一个粘滞的会话,但是不是使用客户端的IP,而是必须在每个消息中使用一个字段。 该字段将充当粘性会话“密钥”,以将整个消息转发到先前select的服务器,或者select新的服务器。 在研究这个话题的同时,我发现了一个类似F5的商业解决scheme: 基于消息的负载平衡 更新#1 问题背后的总体思路是集成(主动/主动)集成引擎(面向消息的中间件)。 引擎维护大量长时间运行的TCP连接,以便在连接的系统之间以FIFO顺序路由MLLP消息。 连接专用于系统之间交换的不同消息types,即200多个连接。 来自系统A的消息通过已build立的TCP连接和遗忘方法发送到引擎。 引擎然后负责将消息路由到下游系统(系统B)。 只有在属于同一客户端ID(每个消息中的一个字段的值)的消息的上下文中,FIFO顺序才是关键的。 不同客户端的消息可以同时路由和传输。 目前,我们的集成引擎应用程序无法集群。 因此需要外部解决scheme。 而目前的一个节点负责路由和维护秩序。 我正在寻找一个平台build议,这将允许我们添加另一个集成引擎,并pipe理两个引擎之间的MLLP消息stream量。

编写一个Numa负载平衡器

我最初在StackOverflow上问这个问题,但是因为没有find答案,而且这个问题更多的是关于如何configuration一个服务器,所以这个问题可能更适合于ServerFault。 我有一些使用Windows START命令启动的应用程序。 使用/ AFFINITY选项强制Numa节点的所有内核上的进程。 我想包含一些负载平衡逻辑(例如,第一个应用程序在节点0上启动,下一个在节点1上,下一个在节点0上启动)。 其他要素: 我不想将进程从一个Numa节点移动到另一个节点,因此不需要dynamic更改进程关联掩码。 我想跟踪所有正在运行的进程,以便正确地平衡新启动的进程。 我想为stream程添加一种权重(我有沉重的stream程和轻量级stream程),这样我就可以在同一个节点上安排多个轻量级stream程,但是会在不同的Numa节点上分散繁重的stream程 自己编写这个逻辑并不困难(一些中央服务器应用程序可以简单地跟踪所有已启动的进程),但是我想知道这样的软件是否已经存在。 不需要在不同计算机上进行负载平衡。 这种软件是否已经存在? 还是自己写这个更好?

负载平衡负载平衡器(HAProxy)

我正在尝试负载平衡负载平衡器(HAProxy)。 这意味着我想创build一个负载平衡器集群/农场。 农场将使用不同的绑定/规则来根据规则将不同的请求负载均衡分配给具有不同目的的其他几个集群。 我似乎无法find关于这个主题的更多信息,我发现只有2个实例的主动 – 被动设置…我需要计划其中的许多,而不仅仅是2.然后我来到这个职位: http:// www.serverphorums.com/read.php?10,672865 其中提到: HAProxy可以共享1.5的连接表,这真的是一个赞赏的function:) 我打算使用具有负载均衡function的防火墙(Fortinet)来平衡对活动HAProxy实例的请求,然后相应地负载平衡请求。 那么有没有一种方法可以在实例之间共享连接表,以便我可以实现HAProxy本身的真正主动/主动负载平衡? 有没有更好的办法?

Nginx负载均衡https

当通过nginx作为负载平衡器提供https服务时,我遇到了问题。 我有以下configuration: server { listen 443 ssl; listen [::]:443 ssl; server_name sub.domain.com; root /usr/share/nginx/html; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; ssl_certificate /etc/ssl/[cert].crt; ssl_certificate_key /etc/ssl/private/wildcard.[cert].com.key; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers '[…]' ssl_prefer_server_ciphers on; ssl_dhparam /etc/pki/tls/certs/dhparams.pem; location /application { proxy_pass http://server0; } location / { return 301 http://www.domain.com; } } 我正在服务一个运行在“server0”上的tomcat的站点。 […]

当服务器场中的一台服务器closures时,haproxy不会负载平衡

我有三个后端服务器使用HAProxy进行负载平衡。 当所有3个这些都是我看到每个服务器Id(1,2,3)连续在HTTPS响应。 IE 1,2,3,1,2,3。 正如所料。 但是,如果我拿一个后端服务器,我只能看到一个服务器ID重复。 即如果我把服务器1下来,然后我只能看到服务器ID 2(2,2,2,2 …),当我应该看到服务器ID的2,3(2,3,2,3,2,3 … ..) 我已经尝试了最简单和循环平衡,并且都performance出相同的行为 为什么HAProxy以这种方式performance? 如何修改我的HAProxyconfiguration以在剩余的活着的后端服务器之间进行负载均衡? HA代理版本是1.6.9。 HA代理服务器是Ubuntu 14.04。 所提供的HTTP是一个通过HTTPS返回一些JSON的API。 它是一个平静的API,所以不需要或不需要会话持久性。 haproxy的configuration如下。 global log /dev/log local0 log /dev/log local1 notice chroot /var/lib/haproxy stats socket /run/haproxy/admin.sock mode 660 level admin stats timeout 30s user haproxy group haproxy daemon maxconn 3072 # Default SSL material locations ca-base /etc/ssl/certs crt-base […]

stickysession不能在Apache和两个Glassfish实例中正常工作

我有两个应用程序在两个Glassfish实例中运行,我configuration我的Apache使用sticky session如下所示: ProxyPass / balancer://Appcluster/ stickysession=JSESSIONID 但是这并不是100%正确的,当客户端从App1转到App2时,它会改变一些实例。 我检查我的导航器中的cookies显示我这样的事情: 我在web.xml发现了另一个configuration,如下所示: <session-config> <session-timeout> 30 </session-timeout> <cookie-config> <path>/</path> </cookie-config> </session-config> 所以当我这样做这样的path,每件事情都很好,但它创造了一个新的上下文之间的每个导航这两个应用程序之间。 现在我configuration我的GlassFish并设置App1像一个默认的Web模块 ,这工作正常,上下文是一样的,服务器创build一个新的cookie像这样: 但是,当我尝试连接没有默认的Web模块 ,它使用两个实例。 你能否提出Apache和Glassfish的正确configuration以在集群环境中运行多个应用程序? 编辑 我通知了一些事情,所以当客户端从App1到App2和VS,每次创build一个新的cookie如下: +——-+—————————————-+ | APP | Cookie | +——-+—————————————-+—–+ | app1 | b5a1cd4befdc306f6e569d835b5e.instance2 | New | +——-+—————————————-+—–+ | app2 | b6caf890638a506216d625f7c82b.instance2 | New | +——-+—————————————-+—–+ | app1 | b6d1870ad8f3d044cc768b31e810.instance2 | New | […]

带有HAProxy设置的AWS ELB

我们希望使用单个ELB来处理AWS通用SSL / TLS证书和通配符。 例如,我们有n台服务器app1.example.com app2.example.com … appn.example.com每个应用程序都有自己的服务器或服务器集合。 我们希望使用HAProxy来解决这个问题,因为AWS elb不能做到layer7子域平衡,我们希望利用aws ssl / tls免费证书。 像这样: 基础设施图 HAProxyconfiguration文件如下。 global daemon maxconn 15000 defaults mode http timeout connect 5000ms timeout client 5000ms timeout server 5000ms frontend http-in bind *:80 # Define hosts acl host_app1 hdr(host) -i app1.example.com acl host_app2 hdr(host) -i app2.example.com acl host_app3 hdr(host) -i app3.example.com ## figure […]

负载均衡器(http / https)后面的Apache(http) – redirect不保留https

我有两种configuration(开发和分段) – 具有(假定)相同的configuration:一组仅包含HTTP的Apache实例,位于Citrix负载均衡器之后,允许HTTP和HTTPS连接。 Apache VirtualHost定义包含以下指令: RedirectMatch permanent /something/endpoint(.*)$ /something/otherendpoint$1 SSLProxyEngine On ProxyPass /something/endpoint ! ProxyPass /something https://192.168.1.100:6443/something <Location /something> ProxyPassReverse https://192.168.1.100:6443/something </Location> 所以,我想代理任何请求/something到不同的后端HTTPS服务器,除了/something/endpoint ,我需要redirect。 现在,在我的开发环境中一切正常。 我可以访问http://hostname/something/endpoint ,它会将我redirect到http://hostname/something/otherendpoint 。 同样,我可以访问https://hostname/something/endpoint ,它会将我redirect到https://hostname/something/otherendpoint 。 但是在暂存环境中, http://hostname/something/endpoint和https://hostname/something/endpointredirect到http://hostname/something/otherendpoint – 它不保留HTTPS。 我一直在拉我的头发,试图找出两种configuration之间的区别。 必须有东西导致Apache不尊重访问协议,但我无法隔离它。 在两种环境中,HTTP响应标头都是相同的,除了指定http而不是https的redirectLocation标头。 任何关于什么configuration差异可能会导致这种想法?

HAProxydocker集装箱做L4负载平衡不透明

使用官方最新的HAProxy Docker容器和下面的configuration文件: frontend logging_frontend bind *:1514 mode tcp timeout client 1m default_backend logging_backend backend logging_backend mode tcp balance roundrobin timeout connect 10s timeout server 1m server logstash-collector-01 logstash-collector-01:1514 check server logstash-collector-02 logstash-collector-02:1514 check server logstash-collector-03 logstash-collector-03:1514 check 我得到的日志(通过nxlog发送到1514通过TCP)不存储实际的客户端IP,而是泊坞窗网关IP。 例如: 2017-03-02T15:57:41.585Z 172.18.0.1 {“EventTime”:“2017-03-01 15:25:02”,“Hostname”:“server.mycompany.net”,“Keywords”:58096435992,“事件types “:” ERROR “ ”SeverityValue“:4, ”严重性“: ”ERROR“, ”事件ID“:551, ”SOURCENAME“: ”微软Windows的SMBSERVER“, ”ProviderGuid“:”{D48CE617-33A2-4BC3 -A5C7-11AA4F29619E} “ […]

Apache负载均衡器:将请求转发给多个平衡器成员

我有一个Apache负载均衡器和两个平衡器成员。 当一个特定的请求被发送到Apache服务器(例如“localhost:80 / replace”)时,我想把这个请求转发给所有的平衡器成员。 我怎样才能做到这一点? 我需要mod_perl吗?