HAProxy高性能软负载均衡器
现在公司实现高可用已经成为必不可少的一环,在众多的负载均衡集群方案中,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检查一下配置文件是否正确
参考
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
OpenSatck Ironic实现裸机管理
实习将近一个月了,期间不断努力,终于算是把OpenStack Ironic项目实现裸机部署的过程理解了一遍,并在小规模集群上成功实践。整理一些这段时间工作的内容,就算是一个阶段性的小项目总结了。 Ironic Ironic是OpenStack的一个子项目,用于实现在云里像管理虚拟机一样管理裸机。 Ironic在OpenStack中的概念架构图如下 其中Bare Metal就是我们要控制的物理机了,Neutron为其提供网络服务,Cinder提供块存储服务,Glance则提供裸机部署时的镜像缓存服务,在部署过程中,我们的Ironic模块要和Neutron,Nova,Glance,Keystone这些核心的OpenStack项目配合,才能完美实现裸机部署的过程。 裸机部署过程中用到的一些核心的技术 (PXE) 预引导执行环境,PXE是英特尔和微软开发的Wired for Management(WfM)规范的一部分。PXE使系统的BIOS和网络接口卡(NIC)能够从网络引导计算机而不是磁盘。引导是系统将OS加载到本地存储器的过程,以便处理器可以执行该过程。允许系统通过网络引导这种功能简化了管...
- 下一篇
使用shell脚本监控少量服务器并发送微信告警信息
01. 概括 1.0 脚本更新地址 Git更新地址:shell_monitor_script.sh 文章原文地址:使用shell脚本监控少量服务器并发送微信告警信息 1.1 前提: 平台系统:linux系统下 接收信息:微信企业号 1.2 脚本说明 需要修改微信接口 脚本对应参数的修改:包括IP,告警阈值等 1.3 脚本使用 该脚本监控包括Disk、CPU、MEM、LOAD等主机资源,以及docker服务和docker容器。 将该脚本附件假定放于:/home/mai/.check_host.sh。 那么在定时任务上可以增加定时任务: $ echo "## 每分钟执行监控脚本一次" | sudo tee -a /etc/crontab $ echo "*/1 * * * * mai bash /home/mai/.check_host.sh" | sudo tee -a /etc/crontab 02. 脚本附件 #!/bin/bash #!/bin/bash # Create for mai # Copyright http://www.mairoot.com # Create d...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- Hadoop3单机部署,实现最简伪集群
- SpringBoot2整合Redis,开启缓存,提高访问速度
- SpringBoot2全家桶,快速入门学习开发网站教程
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS7,CentOS8安装Elasticsearch6.8.6
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- Docker安装Oracle12C,快速搭建Oracle学习环境