内容简介:现在公司实现高可用已经成为必不可少的一环,在众多的负载均衡集群方案中,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 搭建高性能高可用性负载均衡集群
- 英特尔以数据为动能,加速高性能计算和人工智能工作负载融合
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。