HAproxy

(总结)Nginx/LVS/HAProxy负载均衡软件的优缺点详解

浪尽此生 提交于 2019-12-03 21:46:30
PS: Nginx /LVS/ HAProxy 是目前使用最广泛的三种负载均衡软件,本人都在多个项目中实施过,参考了一些资料,结合自己的一些使用经验,总结一下。 一般对负载均衡的使用是随着网站规模的提升根据不同的阶段来使用不同的技术。具体的应用需求还得具体分析,如果是中小型的Web应用,比如日PV小于1000万,用Nginx就完全可以了;如果机器不少,可以用DNS轮询,LVS所耗费的机器还是比较多的;大型网站或重要的服务,且服务器比较多时,可以考虑用LVS。 一种是通过硬件来进行进行,常见的硬件有比较昂贵的F5和Array等商用的负载均衡器,它的优点就是有专业的维护团队来对这些服务进行维护、缺点就是花销太大,所以对于规模较小的网络服务来说暂时还没有需要使用;另外一种就是类似于Nginx/LVS/HAProxy的基于 Linux 的开源免费的负载均衡软件,这些都是通过软件级别来实现,所以费用非常低廉。 目前关于网站架构一般比较合理流行的架构方案:Web前端采用Nginx/HAProxy+ Keepalived 作负载均衡器;后端采用 MySQL 数据库一主多从和读写分离,采用LVS+Keepalived的架构。 当然要根据项目具体需求制定方案。 下面说说各自的特点和适用场合。 Nginx的优点是: 1、工作在网络的7层之上,可以针对http应用做一些分流的策略,比如针对域名、目录结构

Nginx、LVS、HAProxy负载均衡软件的优缺点

别说谁变了你拦得住时间么 提交于 2019-12-03 21:46:15
PS:Nginx/LVS/HAProxy是目前使用最广泛的三种负载均衡软件,本人都在多个项目中实施过,参考了一些资料,结合自己的一些使用经验,总结一下。 一般对负载均衡的使用是随着网站规模的提升根据不同的阶段来使用不同的技术。具体的应用需求还得具体分析,如果是中小型的Web应用,比如日PV小于1000万,用Nginx就完全可以了;如果机器不少,可以用DNS轮询,LVS所耗费的机器还是比较多的;大型网站或重要的服务,且服务器比较多时,可以考虑用LVS。 一种是通过硬件来进行进行,常见的硬件有比较昂贵的F5和Array等商用的负载均衡器,它的优点就是有专业的维护团队来对这些服务进行维护、缺点就是花销太大,所以对于规模较小的网络服务来说暂时还没有需要使用;另外一种就是类似于Nginx/LVS/HAProxy的基于Linux的开源免费的负载均衡软件,这些都是通过软件级别来实现,所以费用非常低廉。 目前关于网站架构一般比较合理流行的架构方案:Web前端采用Nginx/HAProxy+Keepalived作负载均衡器;后端采用MySQL数据库一主多从和读写分离,采用LVS+Keepalived的架构。当然要根据项目具体需求制定方案。 下面说说各自的特点和适用场合。 Nginx 的优点 1、工作在网络的7层之上,可以针对http应用做一些分流的策略,比如针对域名、目录结构,它的 正则规则

linux集群之Haproxy

感情迁移 提交于 2019-12-03 21:02:56
Haproxy集群是基于应用层,可以根据客户端的访问来识别不同的发服务,LVS集群是基于传输层,需要在LVS服务器上指定好相应的端口,才能访问 举例说明:如有有两组服务器,一组服务器提供视频,另外一组服服务器提供音频,在这样的情况下,要能够同时实现对这两组服务器的负载均衡,则LVS集群实现不了,要用Haproxy才能实现 Haproxy 就是基于应用层的负载均衡集群 搭建环境: 将html服务器和php服务器当成是提供两种不同服务的服务器集群 ip地址分配: html服务器1:192.168.1.11 yum -y install mariadb-server php php-mysql mariadb cd /var/www/html touch index.html test.html test.php html服务器2:192.168.1.12 yum -y install mariadb-server php php-mysql mariadb cd /var/www/html touch index.html test.html test.php php服务器1:192.168.1.14 yum -y install mariadb-server php php-mysql mariadb cd /var/www/html touch index.html test

Nginx/LVS/HAProxy优缺点

强颜欢笑 提交于 2019-12-03 17:36:54
PS:Nginx/LVS/HAProxy是目前使用最广泛的三种负载均衡软件,本人都在多个项目中实施过,参考了一些资料,结合自己的一些使用经验,总结一下。 一般对负载均衡的使用是随着网站规模的提升根据不同的阶段来使用不同的技术。具体的应用需求还得具体分析,如果是中小型的Web应用,比如日PV小于1000万,用Nginx就完全可以了;如果机器不少,可以用DNS轮询,LVS所耗费的机器还是比较多的;大型网站或重要的服务,且服务器比较多时,可以考虑用LVS。 一种是通过硬件来进行进行,常见的硬件有比较昂贵的F5和Array等商用的负载均衡器,它的优点就是有专业的维护团队来对这些服务进行维护、缺点就是花销太大,所以对于规模较小的网络服务来说暂时还没有需要使用;另外一种就是类似于Nginx/LVS/HAProxy的基于Linux的开源免费的负载均衡软件,这些都是通过软件级别来实现,所以费用非常低廉。 目前关于网站架构一般比较合理流行的架构方案:Web前端采用Nginx/HAProxy+Keepalived作负载均衡器;后端采用MySQL数据库一主多从和读写分离,采用LVS+Keepalived的架构。当然要根据项目具体需求制定方案。 下面说说各自的特点和适用场合。 Nginx的优点是: 1、工作在网络的7层之上,可以针对http应用做一些分流的策略,比如针对域名、目录结构

udp traffic with Iperf for haproxy

时光总嘲笑我的痴心妄想 提交于 2019-12-03 17:30:06
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 listen to UDP port. Thank you in advance for your reply. Here is a copy of my haproxy.cfg. global quiet

HAProxy的基础配置详解

妖精的绣舞 提交于 2019-12-03 17:28:06
HAProxy的基础配置详解   HAProxy是高性能的企业级负载均衡调度器,同时支持四层TCP和七层HTTP协议的负载均衡调度,以及支持基于cookie的持久性,支持正则表达式及web状态统计、自动故障切换等优点,因此广泛被应用于企业内业务系统集群的入口作为负载均衡调度器。 HAPrpxy的配置文件haproxy.cfg由两大部分组成,分别是 global 和 proxies 部分。 global:全局配置段 1、进程及安全配置相关的参数 2、性能调整相关参数 3、Debug参数 global配置参数官方文档:https://cbonte.github.io/haproxy-dconv/2.0/intro.html global # 全局段配置 chroot #(安全配置选项)锁定haproxy用户运行目录。 deamon #以后台守护进程运行 stats socket /var/lib/haproxy/haproxy.sock mode 600 level admin #socket文件路径、文件权限及管理级别 user haproxy # 设置运行haproxy的用户(非登录用户),也可使用uid关键字替代。 group haproxy # 设置运行haproxy的用户组,也可使用gid关键字替代。 nbproc <number> #开启的haproxy进程数

OAuth token validation from HAProxy or Apache mod_proxy

只谈情不闲聊 提交于 2019-12-03 16:03:08
I have a microservice deployed on 3 nodes sitting behind a HAProxy load balancer all inside internal network. The services are protected using OAuth2 APIS authorization server. Now, I want to move the HAProxy to DMZ. And I want to reject requests that do not have auth token in the header and also validate the auth token by calling OAuth REST API. In HAProxy I couldn't find a way to do this. There is an option httpchk which can be used for healthcheck. I'm looking for a similar feature that can be used to validate each incoming request. Can anyone please help suggest me on how to implement this

Haproxy + netty: Way to prevent exceptions on connection reset?

拥有回忆 提交于 2019-12-03 15:19:23
We're using haproxy in front of a netty-3.6-run backend. We are handling a huge number of connections, some of which can be longstanding. Now the problem is that when haproxy closes a connection for means of rebalancing, it does so by sending a tcp-RST. When the sun.nio.ch-class employed by netty sees this, it throws an IOException: "Connection reset by peer". Trace: sun.nio.ch.FileDispatcherImpl.read0(Native Method):1 in "" sun.nio.ch.SocketDispatcher.read(SocketDispatcher.java:39):1 in "" sun.nio.ch.IOUtil.readIntoNativeBuffer(IOUtil.java:225):1 in "" sun.nio.ch.IOUtil.read(IOUtil.java:193)

Load balancing since Node v0.12.2 - cluster, pm2 or nginx

自闭症网瘾萝莉.ら 提交于 2019-12-03 13:08:14
问题 With Node v0.12.2, the cluster module supports Round-Robin (RR) load balancing, which ensures load is more evenly distributed than the previous OS-level load balancing. So now we are spoilt for choice: Use the cluster module Use pm2 which uses the cluster module under the hood Use nginx Use HAProxy I am aware of this excellent post as well as other answers here on SO, but none have addressed the newer Cluster module with RR mode. So the question boils down to: Judging only on their load

docker运行haproxy 自动生成配置

纵饮孤独 提交于 2019-12-03 11:58:27
#根据参数,shell自动生成haproxy配置 #为方便部署,特意做了个haproxy镜像 #Haproxy run as docker #运行实例 run #!/bin/bash #docker run Name=haproxy-test docker rm -f ${Name} docker run -dit --net=host \ --restart=always --name ${Name} -h ${Name} \ -e Stats_set="admin:admin 1081 /stats" \ -e Listen_1="k8s tcp 6445 6443" \ -e IPlist_1="172.16.11.141 172.16.11.142 172.16.11.143" \ alivv/haproxy #查看 check #docker check docker ps -l docker logs ${Name} #Check the config docker exec -it ${Name} cat /usr/local/etc/haproxy/haproxy.cfg #delete #docker rm -f ${Name} #参数 var #状态页设置 # 用户:密码 端口 url后缀 Stats_set="admin:admin1 1080 /stats"