内容简介:现在公司实现高可用已经成为必不可少的一环,在众多的负载均衡集群方案中,Haproxy是比较有名的一个。它可以实现TCP或Http的负载均衡。优点如下:借用官网的图,图中的HA即为Haproxy软件,下面的PROXY为要代理的服务器,客户端只需要访问HA,相当于在访问PROXY。像这种软件的东西,直接动手比说理论有用的多。我还是基于Docker演示,明白其原理主要是配置文件,用虚拟机或容器都是类似的。
现在公司实现高可用已经成为必不可少的一环,在众多的负载均衡集群方案中,Haproxy是比较有名的一个。它可以实现TCP或Http的负载均衡。优点如下:
- 免费开源,与硬件负载均衡相比划算很多
- 最高可以维护40000~50000个并发,作为软件级别的负载均衡来说,实在强大
- 支持多种负载均衡算法,同时支持session保持
- 支持虚拟主机
- 拥有服务器监控页面,可以了解系统的实时运行状态
借用官网的图,图中的HA即为Haproxy软件,下面的PROXY为要代理的服务器,客户端只需要访问HA,相当于在访问PROXY。
演示
像这种软件的东西,直接动手比说理论有用的多。我还是基于 Docker 演示,明白其原理主要是配置文件,用虚拟机或容器都是类似的。
- 拉取Haproxy:1.8镜像
docker pull haproxy:1.8 复制代码
- 拉取httpd镜像,并且准备web容器
docker pull httpd:2.4 docker run -it -d --name web1 httpd:2.4 docker run -it -d --name web2 httpd:2.4 docker run -it -d --name web-static httpd:2.4 docker exec -it web1 /bin/bash 复制代码
进入容器之后分别修改其html页面
- 运行Haproxy容器,并且准备其配置文件
Haproxy的配置文件主要分为几部分
- global 一些全局配置信息,主要和进程相关,注意如果涉及到目录相关的,要提前创建目录
- defaults 默认的配置信息
- frontend 前端的配置,暴露给用户的部分
- backend 后端的配置,真实的提高服务的部分
在官方的网站中,所有的配置指令都有详细的解释,网址在文末的参考中。
我们的配置如下
global
log 127.0.0.1 local2
chroot /var/lib/haproxy
pidfile /var/run/haproxy.pid
maxconn 4000
user haproxy
group haproxy
daemon
stats socket /var/lib/haproxy/stats
defaults
mode http
log global
option httplog
option dontlognull
option http-server-close
option forwardfor except 127.0.0.0/8
option redispatch
retries 3
timeout http-request 10s
timeout queue 1m
timeout connect 10s
timeout client 1m
timeout server 1m
timeout http-keep-alive 10s
timeout check 10s
maxconn 3000
frontend main
acl url_static path_beg -i /static /images /javascript /stylesheets
acl url_static path_end -i .jpg .gif .png .css .js
use_backend static if url_static
default_backend app
bind :80
backend static
balance roundrobin
server static 172.17.0.5:80 check
backend app
balance roundrobin
server app1 172.17.0.3:80 check
server app2 172.17.0.4:80 check
复制代码
结果
在访问同一台服务器,可以看到响应的内容确实转发到后端不同的服务器上面
最后
纸上得来终觉浅,绝知此事要躬行。Haproxy一直在大脑中停留着,亲自配置一遍才知道其是怎么回事。中间遇到两个问题
- Haproxy1.5版本与1.8版本的frontend配置稍有不同,学会参考文档
- 配置文件中的stats指定的目录在系统中如果不存在,会报错,指定的目录都要存在才行
让配置生效之前先用haproxy -c检查一下配置文件是否正确
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- iQiYi 高性能开源负载均衡器及应用
- Nginx+Tomcat搭建高性能负载均衡集群的实现方法
- 利用Nginx轻松搭建高性能负载均衡服务器集群
- Facebook 宣布开源 Katran,高性能第4层负载均衡器
- 使用Nginx+Tomcat+Keepalived 搭建高性能高可用性负载均衡集群
- 英特尔以数据为动能,加速高性能计算和人工智能工作负载融合
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
The Master Switch
Tim Wu / Knopf / 2010-11-2 / USD 27.95
In this age of an open Internet, it is easy to forget that every American information industry, beginning with the telephone, has eventually been taken captive by some ruthless monopoly or cartel. Wit......一起来看看 《The Master Switch》 这本书的介绍吧!