HaProxy简介HAProxy是一款免费的负载均??衡软件,可以运行在大多数主流的Linux操作系统上。HAProxy提供功能丰富的L4(TCP)和L7(HTTP)负载均衡能力。HAProxy社区非常活跃,版本更新很快。最重要的是,HAProxy具有媲美商业负载均衡器的性能和稳定性。HaProxy负载均衡核心功能:L4和L7模式,支持RR/staticRR/LC/IPHash/URIHash/URL\_PARAMHash/HTTP\_HEADERHash等丰富的负载均衡算法健康检查:支持TCP和HTTP两种健康检查方式Session持久化:对于没有实现session共享的应用集群,可以通过InsertCookie/RewriteCookie/PrefixCookie,以及上述多种Hash方式实现session持久化SSL:HAProxy可以解析HTTPS协议,可以发送请求解密为HTTP再传输到后端HTTP请求重写和重定向监控和统计:HAProxy提供了一个基于web的统计页面来显示健康状态和流量数据。基于这个功能,用户可以开发一个监控程序来监控HAProxy的状态。HaProxyPerformance主要特点1.采用单线程、事件驱动、非阻塞模型,减少上下文切换的消耗,1ms内可处理数百个请求。而且每个会话只占用几KB的内存。2.大量精细的性能优化,比如O(1)的复杂事件检查器、延迟更新技术、单缓冲、零拷贝转发等,这些技术使得HAProxy在中等负载下只占用极低的CPU资源。3.HAProxy大量利用了操作系统本身的功能特性,使其在处理请求时发挥出极高的性能。通常情况下,HAProxy本身只占用15%的处理时间,剩下的85%是在系统内核层完成的。4.HAProxy的作者在8年前(2009年)用1.4版本做过测试。单个HAProxy进程处理能力超过10万请求/s,轻松占用10Gbps的网络带宽。稳定性如前所述,HAProxy的大部分工作都是在操作系统内核中完成的,因此HAProxy的稳定性主要取决于操作系统。笔者推荐使用2.6或3.xLinux内核设置sysctls参数Fine-tuning,并确保主机有足够的内存。这样HAProxy就可以持续满载稳定运行数年。设置主机名root@hello:~#hostnamectlset-hostnamehaproxyroot@hello:~#root@hello:~#root@hello:~#bashroot@haproxy:~#安装haproxyroot@haproxy:~#apt-getinstallhaproxyroot@haproxy:~#cp/etc/haproxy/haproxy.cfg{,.ori}root@haproxy:~#root@haproxy:~#vim/etc/haproxy/haproxy.cfgroot@haproxy:~#配置文件如下root@haproxy:~#cat/etc/haproxy/haproxy.cfgcat/etc/haproxy/haproxy.cfggloballog/dev/loglocal0log/dev/loglocal1noticechroot/var/lib/haproxystatssocket/run/haproxy/admin.sock模式660级别管理员expose-fd侦听器统计超时30s用户haproxy组haproxy守护程序ca-base/etc/ssl/certscrt-base/etc/ssl/privatessl-default-bind-ciphersECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384ssl-default-bind-ciphersuitesTLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256ssl-default-bind-optionsno-sslv3no-tlsv10no-tlsv11no-tls-ticketsdefaultslogglobalmodehttpoptionhttplogoptiondontlognulltimeoutconnect5000timeoutclient50000timeoutserver50000错误文件400/etc/haproxy/errors/400.http错误文件403/etc/haproxy/errors/403.http错误文件408/etc/haproxy/errors/408.http错误文件500/etc/haproxy/errors/500.http错误文件502/etc/haproxy/errors/502.http错误文件503/etc/haproxy/errors/503.http错误文件504/etc/haproxy/errors/504.httpfrontendLOADBALANCER-01绑定0.0.0.0:80模式httpdefault_backendWEBSERVERS-01backendWEBSERVERS-01balanceroundrobinservernode1192.168.1.10:9200checkinter2000rise3fall3weight1maxconn2000servernode2192.168.1.11:9200检查inter2000rise3fall3weight1maxconn2000servernode3192.168.1.12:9200检查inter2000rise3fall3weight1maxconn2000servernode4192.168.1.13:9200检查inter2000rise3fall3权重1maxconn2000服务器node5192.168.1.14:9200检查inter2000上升3下降3权重1maxconn2000服务器node6192.168.1.15:9200检查inter2000上升3下降3权重1maxconn2000服务器node7192.168.1.16:9200检查inter2000rise3fall3weight1maxconn2000backupoptionhttpchkstartserviceroot@haproxy:~#root@haproxy:~#systemctlstarthaproxyroot@haproxy:~#设置开机自启动root@haproxy:~#root@haproxy:~#systemctlenablehaproxySynchronizingstateofhaproxy.servicewithSysVservicescriptwith/lib/systemd/systemd-sysv-install.Executing:/lib/systemd/systemd-sysv-installenablehaproxyroot@haproxy:~#Linux运维交流社区Linux运维交流社区,互联网新闻与技术40篇技术交流原创内容文章公众号本文使用文章同步助手同步
