一、什么是Haproxy集群

Haproxy 是一个使用C语言编写的自由及开放源代码软件,其提供高可用性、负载均衡,以及==基于TCP和HTTP==的应用程序代理。

二、Haproxy的特性

-可靠性和稳定性非常好,可以与硬件级的F5负载均衡设备相媲美 -最高可以同时维护40000-50000个并发连接,单位时间内处理的最大请求数为20000个,最大处理能力可达10Git/s -支持多达8 种负载均衡算法,同时也支持会话保持 -支持虚拟主机功能,从而实现web负载均衡更加灵活 -支持连接拒绝、全透明代理等独特功能 -拥有强大的ACL支持,用于访问控制 -其独特的弹性二叉树数据结构,使数据结构的复杂性上升到了0(1),即数据的查询速度不会随着数据条目的增加而速度有所下降 -支持客户端的keepalive功能,减少客户端与haproxy的多次三次握手导致资源量费,让多个请求在一个tcp连接中完成 -支持TCP加速,零复制功能,类似于mmap机制 -支持响应池(response buffering) -支持RDP协议 -基于源的粘性,类似于nginx的ip_hash功能,把来自同一客户端的请求在一定时间内始终调度到上游的同一服务器 -更好统计数据接口,其web接口显示后端冀全中各个服务器的接受、发送、拒绝、错误等数据的统计信息 -详细的健康状态检测,web接口中有关对上流服务器的健康检测状态,并提供了一定的管理功能 -基于流量的健康评估机制 -基于http认证 -基于命令行的管理接口 -日志分析器,可对日志进行分析

三、Haproxy nginx lvs的区别

1)LVS基于Linux操作系统实现软负载均衡,而Haproxy和Nginx是基于第三方应用实现的软负载均衡

(2)LVS是可实现4层的IP负载均衡技术,无法实现基于目录、URL的转发。而Haproxy和Nginx都可以实现4层和7层技术,Haproxy可提供TCP和Http应用的负载均衡综合解决方案(3)LVS因为工作在ISO模型的第四层,其状态监测功能单一,而Haproxy在状态监测方面功能更丰富、强大,可支持端口、URL、脚本等多种状态监测方式

(4)Haproxy功能强大,但整体性能低于4层模式的LVS负载均衡

(5)Nginx主要用于web服务器或缓存服务器
 

四、haproxy实验配置

⦁    实验条件
 ⦁    Haproxy:192.168.226.123
 ⦁    Nginx1:192.168.226.125
 ⦁    Nginx2:192.168.226.122
 ⦁    Tomcat1:192.168.226.124:8080
 ⦁    Tomcat2:192.168.226.129:8080
 ⦁    配置Haproxy:192.168.226.123
 ⦁    安装依赖包
 yum -y install pcre-devel zlib-devel gcc gcc-c++ make
 ⦁    编译安装Haproxy
 解压安装包
 tar zxf haproxy-1.5.19.tar.gz
 cd haproxy-1.5.19/
 查看内核版本数(如果kernel大于2.6.28的用TARGET=linux2628)
 uname -r
 编译安装
 make TARGET=linux2628 ARCH=x86_64
 make install
  
 ⦁    配置服务器配置文件mkdir /etc/haproxy
 cp examples/haproxy.cfg /etc/haprox y/
 cd /etc/haproxy/
 编辑文件
 vim haproxy.cfg
 # this config needs haproxy-1.1.28 or haproxy-1.2.1
 global
         #log 127.0.0.1  local0
         #log 127.0.0.1  local1 notice
         log /dev/log    local1 info
         log /dev/log    local1 info
         maxconn 4096
         #chroot /usr/share/haproxy
         uid 99
         gid 99
         daemon
         nbproc 1
         #debug
         #quiet
 defaults
         log     global
         mode    http
         option  httplog
         option  dontlognull
         retries 3
         redispatch
         maxconn 2000
         #contimeout     5000
         #clitimeout     50000
         #srvtimeout     50000
         timeout http-request 10s
         timeout queue 1m
         timeout connect 10s
         timeout client 1m
         timeout server 1m
         timeout http-keep-alive 10s
         timeout check 10s
 listen  webjq 0.0.0.0:80
         option httpchk GET /index.jsp
         balance roundrobin
         server  ng1 192.168.226.125:8080  check inter 2000  fall 5
         server  ng2 192.168.226.122:8080  check inter 2000  fall 5
 ⦁    添加系统服务
 cp /opt/haproxy-1.5.19/examples/haproxy.init /etc/init.d/haproxy
 chmod +x /etc/init.d/haproxy
 chkconfig --add /etc/init.d/haproxyln -s /usr/local/sbin/haproxy /usr/sbin/haproxy
 service haproxy start    或    /etc/init.d/haproxy startnginx安装
⦁     安装Nginx1:192.168.226.125 Nginx2:192.168.226.122
 ⦁    安装依赖包
 yum -y install pcre-devel zlib-devel gcc gcc-c++ make
 ⦁    解压并编译安装
 tar -zxf nginx-1.12.2.tar.gz
 cd /opt#切换至解压后的目录下编译
 cd nginx-1.12.2
 ./configure \
 --prefix=/usr/local/nginx \
 --user=nginx \
 --group=nginx \
 --with-http_stub_status_module\
  --with-stream
 #安装
 make && make install -j4
 ⦁    创建软链接让系统识别并nginx命令并添加入服务
 ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
 将nginx命令并添加入服务
 cd /lib/systemd/system
 vim nginx.service#!/bin.bash
 [Unit]
 Description=nginx
 After=network.target
 [Service]
 Type=forking
 PIDFile=/usr/local/nginx/logs/nginx.pid
 ExecStart=/usr/local/nginx/sbin/nginx
 ExecReload=/usr/bin/kill -s HUP $MAINPID
 ExecStop=/usr/bin/kill -s QUIT $MAINPID
 PrivateTmp=true
 [Install]
 WantedBy=multi-user.target
 ⦁    新建用户和组便于管理
 useradd -M -s /sbin/nologin nginx
 ⦁    启动并测试Nginx和Haproxy是否正常运行
 Nginx1
 echo "nginx1192.168.226.125" > /usr/local/nginx/html/index.html
 systemctl restart nginx.service
 Nginx2
 echo "nginx2192.168.226.122" > /usr/local/nginx/html/index.html
 systemctl restart nginx.service

⦁    测试集群是否成功

  

haproxy 调优 haproxy性能_nginx

 

haproxy 调优 haproxy性能_nginx_02

nginx反向代理 

⦁    实验条件

⦁    Haproxy:192.168.226.123

⦁    Nginx1:192.168.226.125

⦁    Nginx2:192.168.226.122

⦁    Tomcat1:192.168.226.124:8080

⦁    Tomcat2:192.168.226.129:8080

⦁    配置Tomcat

⦁    配置nginx的Tomcat反向代理

haproxy 调优 haproxy性能_linux_03


 

3.测试Nginx负载均衡

haproxy 调优 haproxy性能_java_04

 

haproxy 调优 haproxy性能_linux_05

 

实验结果

haproxy 调优 haproxy性能_服务器_06

 

haproxy 调优 haproxy性能_nginx_07