HAproxy

haproxy和nginx负载均衡分析

旧巷老猫 提交于 2019-12-05 16:36:17
出于对负载均衡工具的疑问,分别对haproxy和nginx的负载均衡进行了抓包分析,分析的过程跟大家分享下。先说下对haproxy抓包得到的结论吧:haproxy在负载均衡的一台后端挂掉后,如果还没达到探测的时间点时,请求还会往挂掉的这台转发,请求会丢失。 haproxy负载均衡的实验过程如下: 1: 先看下haproxy的配置。配置inter 20000为20s检测一次,这个是为了更明显的抓下haproxy的负载均衡探测机制。 listen test9090 bind 127.0.0.1:9090 mode tcp server localhost90 127.0.0.1:90 check inter 20000 server localhost91 127.0.0.1:91 check inter 20000 2: 后端我是用nginx进行测试,看下nginx的配置如下。可在/var/www/html/建个index.html进行测试 server { listen 90; listen 91; location /{ root /var/www/html; } } 先用curl 127.0.0.1:9090进行测试,并在机器上开两个窗口看下抓包是否均衡正常,两个窗口运行的命令分别如下:tcpdump -i lo -nn 'port 90' tcpdump -i lo -nn

How to route traffic (reverse Proxy) with HAProxy based on request body

杀马特。学长 韩版系。学妹 提交于 2019-12-05 16:12:44
I am attempting to route the following request to the appropriate servers based on the URL identified in the POST body below. I am hoping to accomplish this via a reverse proxy using HAProxy. E.g. I would like to direct all requests to HAProxy, than have HAProxy check if certain values exist in the POST body (E.g. the notification url value "pingpong"), and if this is the case, route the traffic to an endopint I will specify in the configs. POST /someURL/file.jsp HTTP/1.1 Host: 10.43.90.190:80 Content-Type: application/json Connection: keep-alive Accept: */* Content-Length: 256 {"Info": {

[转]RabbitMQ集群原理与搭建

不打扰是莪最后的温柔 提交于 2019-12-05 15:36:36
摘要:实际生产应用中都会采用消息队列的集群方案,如果选择RabbitMQ那么有必要了解下它的集群方案原理 一般来说,如果只是为了学习RabbitMQ或者验证业务工程的正确性那么在本地环境或者测试环境上使用其单实例部署就可以了,但是出于MQ中间件本身的可靠性、并发性、吞吐量和消息堆积能力等问题的考虑,在生产环境上一般都会考虑使用RabbitMQ的集群方案。 对于RabbitMQ这么成熟的消息队列产品来说,搭建它并不难并且也有不少童鞋写过如何搭建RabbitMQ消息队列集群的博文,但可能仍然有童鞋并不了解其背后的原理,这会导致其遇到性能问题时无法对集群进行进一步的调优。本篇主要介绍RabbitMQ集群方案的原理,如何搭建具备负载均衡能力的中小规模RabbitMQ集群,并最后给出生产环境构建一个能够具备高可用、高可靠和高吞吐量的中小规模RabbitMQ集群设计方案。 一、RabbitMQ集群方案的原理 RabbitMQ这款消息队列中间件产品本身是基于Erlang编写,Erlang语言天生具备分布式特性(通过同步Erlang集群各节点的magic cookie来实现)。因此,RabbitMQ天然支持Clustering。这使得RabbitMQ本身不需要像ActiveMQ、Kafka那样通过ZooKeeper分别来实现HA方案和保存集群的元数据。集群是保证可靠性的一种方式

Haproxy 使用block 阻止域名访问到某个子目录报403

我的梦境 提交于 2019-12-05 14:17:18
配置教程如下: 1 acl is_https_com hdr_beg(host) www.baidu.com #定义规则域名 2 acl api_block_url_web url_dir -i /web/ #定义阻止目录 3 acl api_block_url_app url_dir -i /app/ #定义阻止目录 4 block if api_block_url_web is_https_com #如果只是单个子目录限制访问使用此项配置 5 block if api_block_url_web is_https_com || api_block_url_app is_https_com #如果出现多个子目录文件夹限制,需要使用 "或 "表达式 "||" 做判断 6 7 8 block if api_block_url_web !is_https_com #除is_https_com 之个规则之外所有域名规则都阻止访问web 目录 ACL 规则 来源: https://www.cnblogs.com/itusye/p/9615824.html

RabbitMQ高可用配置(Haproxy + Keepalived)

久未见 提交于 2019-12-05 11:14:43
网络结构如下图: 共有104、105、106三台RabbitMQ Server,互为集群 其中104和105安装了Haproxy,每个Haproxy承担三台RabbitMQ server的负载均衡 两台Harpoxy采用Keepalived互为主备,VIP是172.16.0.108 操作系统为Ubuntu 以下介绍操作步骤: 1、三台主机安装RabbitMQ apt-get install rabbitmq-server 开启RabbitMQ management,激活控制台以方便MQ的管理与监控 sudo rabbitmq-plugins enable rabbitmq_management 开启监控后可以输入http://ip:15672可以登录管理界面,默认账户guest/guest 2、配置MQ集群 2.1 cookie文件 因为RabbitMQ的集群是通过Erlang的集群来实现的,所以,要求三台机器的 /var/lib/rabbitmq/.erlang.cookie 文件内容一致,用VI等工具将它的内容修改为 zHDCGETPYWOWREASJUAB 由于RabbitMQ在启动Booker时会检查该文件的权限,必须为400,否则会报错,所以要修改文件的权限 chmod 400 .erlang.cookie 2.2 修改各机器hosts 172.16.0.104 pzs

Haproxy SNI vs HTTP Host ACL check performance

做~自己de王妃 提交于 2019-12-05 10:09:39
I have a HAproxy 1.5 setup which offloads SSL in front of a couple of webservers (this way, they deal only with HTTP) My SSL certificate is a wildcard and we are balancing to different backends based on the FQDN. My frontend config look like this : ... frontend my-frontend bind ip:443 ssl crt /var/etc/haproxy/wildcard_cert.pem mode http log global option httplog option forwardfor use_backend my-backend if { ssl_fc_sni my.domain.org } use_backend my-backend2 if { ssl_fc_sni my2.domain.org } acl is-domain hdr(host) -i my.domain.org acl is-domain2 hdr(host) -i my2.domain.org use_backend my

Can I have sticky sessions with HAProxy and socket.io with authentication?

假如想象 提交于 2019-12-05 10:01:37
I have several instances of socket.io with authentication running under HAProxy and I need to force that the authentication request and the socket connection go to the same instance. I've set up HAProxy based on this answer to a SO question with some modifications as so: global maxconn 4096 # Total Max Connections. This is dependent on ulimit nbproc 2 defaults mode http frontend all 0.0.0.0:80 timeout client 86400000 default_backend www_backend acl is_websocket hdr(Upgrade) -i WebSocket acl is_websocket hdr_beg(Host) -i ws use_backend socket_backend if is_websocket backend www_backend balance

Combine HAProxy stats?

荒凉一梦 提交于 2019-12-05 09:01:19
I have two instances of HAProxy. Both instances have stats enabled and are working fine. I am trying to combine the stats from both instances into one so that I can use a single HAProxy to view the front/backends stats. I've tried to have the stats listener on the same port for both haproxy instances but this isn't working. I've tried using the sockets interface but this only reports on one of the interfaces as well. Any ideas? My one haproxy config file looks like this: global daemon maxconn 256 log 127.0.0.1 local0 debug log-tag haproxy stats socket /tmp/haproxy defaults log global mode http

linux负载均衡总结性说明 四层负载和七层负载有什么区别

守給你的承諾、 提交于 2019-12-05 06:25:05
这篇文章主要为大家详细介绍了linux负载均衡的相关资料,什么是负载均衡?四层负载和七层负载有什么区别?具有一定的参考价值,感兴趣的小伙伴们可以参考一下 在常规运维工作中,经常会运用到负载均衡服务。负载均衡分为四层负载和七层负载,那么这两者之间有什么不同? 废话不多说,详解如下: 一、什么是负载均衡 1)负载均衡(Load Balance)建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。负载均衡有两方面的含义:首先,大量的并发访问或数据流量分担到多台节点设备上分别处理,减少用户等待响应的时间;其次,单个重负载的运算分担到多台节点设备上做并行处理,每个节点设备处理结束后,将结果汇总,返回给用户,系统处理能力得到大幅度提高。 2)简单来说就是:其一是将大量的并发处理转发给后端多个节点处理,减少工作响应时间;其二是将单个繁重的工作转发给后端多个节点处理,处理完再返回给负载均衡中心,再返回给用户。目前负载均衡技术大多数是用于提高诸如在Web服务器、FTP服务器和其它关键任务服务器上的Internet服务器程序的可用性和可伸缩性。 二、负载均衡分类 1)二层负载均衡(mac) 根据OSI模型分的二层负载,一般是用虚拟mac地址方式,外部对虚拟MAC地址请求,负载均衡接收后分配后端实际的MAC地址响应

udp traffic with Iperf for haproxy

坚强是说给别人听的谎言 提交于 2019-12-05 05:37:32
问题 I'm working on my personal project on "performance evaluation" of Haproxy using Docker Container. I'm programming with Python and uses iperf for traffic generation. I created several Docker containers as clients and servers. The clients are supposed to send udp traffic to servers via Haproxy container which acts as a load balancer. The issue is when I try to send udp traffic from clients to servers, Haproxy refuses the connexions. I did not find in the official documentation how to bind or