HAProxy简介 HAProxy提供高可用性、负载均衡以及基于TCP和HTTP的应用代理,支持虚拟主机,它是免费、快速并且可靠的一种负载均衡解决方案。适合处理高负载站点的七层数据请求。类似的代理服务可以屏蔽内部真实服务器,防止内部服务器遭受攻击。
HAProxy主要优点: 
HAProxy是支持虚拟主机的,通过frontend指令来实现 
能够补充Nginx的一些缺点比如Session的保持,Cookie 的引导等工作 
支持url检测后端的服务器出问题的检测会有很好的帮助。 
它跟LVS一样,本身仅仅就只是款负载均衡软件;单纯从效率上来讲HAProxy 更会比Nginx有更出色的负载均衡速度,在并发处理上也是优于Nginx的。 
HAProxy可以对MySQL读进行负载均衡,对后端的MySQL节点进行检测和负载均衡,不过在后端的MySQ slaves数量超过10台时性能不如LVS,所以更推荐LVS+Keepalived。 
能对请求的url和header中的信息做匹配,有比Ivs有更好的7层实现HAProxy+Nginx负载均衡安装 HAProxy安装  
 
服务器名 
操作系统 
IP 
 
 
HAProxy 
CentOS 7 
192.168.0.36 
 
Nginx1 
CentOS 7 
192.168.0.42 
 
Nginx2 
CentOS 7 
192.168.0.43 
 
准备lua环境 由于CentOS7 之前版本自带的lua版本比较低并不符合HAProxy要求的lua最低版本(5.3)的要求,因此需要编译安装较新版本的lua环境 参考lua官方网站 
[root@haproxy ~]# lua -v Lua  5.1 .4   Copyright  (C) 1994 -2008  Lua .org , PUC -Rio [root@haproxy ~]# yum -y install gcc readline-devel  [root@haproxy ~]# cd /usr/local/src [root@haproxy src]# wget http : [root@haproxy src]# tar -zxvf lua-5.4 .2 .tar .gz   [root@haproxy src]# cd lua-5.4 .2 / [root@haproxy lua-5.4 .2 ]# make linux test [root@haproxy lua-5.4 .2 ]# src/lua -v Lua  5.4 .2   Copyright  (C) 1994 -2020  Lua .org , PUC -Rio 
 
源码安装HAProxy 参考HAProxy官网 
[root@haproxy ~]# yum -y install gcc openssl-devel pcre-devel systemd-devel [root@haproxy ~]# ls haproxy-2.2 .6 .tar .gz  [root@haproxy ~]# tar -zxvf haproxy-2.2 .6 .tar .gz  -C /usr/local/ [root@haproxy ~]# cd /usr/local/haproxy-2.2 .6 / [root@haproxy haproxy-2.2 .6 ]# make  ARCH =x86_64 TARGET =linux-glibc  USE_PCRE =1  USE_OPENSSL =1  USE_ZLIB =1   USE_SYSTEMD =1   USE_LUA =1  LUA_INC =/usr/ local/src/lua-5.4 .2 /src/  LUA_LIB =/usr/ local/src/lua-5.4 .2 /src/  [root@haproxy haproxy-2.2 .6 ]# make install PREFIX =/usr/ local/haproxy 
 
修改配置文件 [root@haproxy haproxy-2.2.6]# mkdir /etc/haproxy [root@haproxy haproxy-2.2.6]# vim /etc/haproxy/haproxy.cfg
global      log 127.0 .0 .1  local2 info      chroot /usr/local/haproxy      user haproxy      group haproxy      daemon           ## 守护进程模式    可以使用非守护默认      maxconn 4000      ## 最大的连接数 defaults              ## 默认配置      log global        ## 应用全局部分的日志配置      mode http        ## 模式为http      option httplog      option dontlognull      timeout connect 5000      ## 连接超时时间      timeout client 50000       timeout server 50000      ## 客户端和服务器超时时间 frontend http_front      bind *:80       stats uri /haproxy-status      stats auth    jjh :123456       default_backend http_back backend http_back      balance roundrobin      option httpchk GET  /index.html       option forwardfor header X-Forwarded -For       server nginx1 192.168 .0 .42 :80  check inter 2000  rise 3  fall 3  weight 30    ## 服务器节点的地址、名称、端口 、检查间隔时间3000 毫秒、健康检查次数2 次认为失败      server nginx2 192.168 .0 .43 :80  check inter 2000  rise 3  fall 3  weight 30   
 
启动 HAProxy [root@haproxy1 haproxy-2.2 .6 ]# cp haproxy /usr/sbin/ [root@haproxy2 haproxy-2.2 .6 ]# useradd -r haproxy [root@haproxy2 haproxy-2.2 .6 ]# cp ./examples/haproxy.init  /etc/init.d /haproxy [root@haproxy2 haproxy-2.2 .6 ]# chmod 755  /etc/init.d /haproxy  [root@haproxy2 haproxy-2.2 .6 ]# /etc/init.d /haproxy start Reloading  systemd :                                         [  OK   ]Starting  haproxy (via systemctl):                          [  OK   ]   
 
访问 http://localhost/haproxy-status  用户名/密码(haproxy.cfg配置文件)   jjh/123456
Nginx安装 参考Nginx官方网站  点击Nginx下载 
依赖包安装 [root@nginx ~]# yum -y install pcre-devel zlib-devel gcc gcc-c++ make 
 
源码安装Nginx [root@nginx ~]# ls nginx-1.18 .0 .tar .gz  [root@nginx ~]# tar -zxvf nginx-1.18 .0 .tar .gz  -C /usr/local/ [root@nginx ~]# useradd -M -s /sbin/nologin nginx [root@nginx1 ~]# cd /usr/local/nginx-1.18 .0 / [root@nginx1 nginx-1.18 .0 ]# ./configure --prefix=/usr/ local/nginx --user=nginx --group=nginx --with -http_stub_status_module && make && make install [root@nginx1 nginx-1.18 .0 ]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/ [root@nginx1 nginx-1.18 .0 ]# echo "shuaige/liangzai(nginx内容不同以作区分)"  > /usr/ local/nginx/html/index.html  
 
Nginx 启动 [root@nginx1 nginx-1.18 .0 ]# nginx -t nginx : the configuration file /usr/local/nginx/conf/nginx.conf  syntax is oknginx : configuration file /usr/local/nginx/conf/nginx.conf  test is successful
 
重启报错及解决方法 [root@nginx1 nginx-1.18 .0 ]# nginx -s reload nginx : [error] invalid PID  number ""  in  "/usr/local/nginx/logs/nginx.pid" [root@nginx1 nginx-1.18 .0 ]# /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf  [root@nginx1 nginx-1.18 .0 ]# nginx -s reload 
 
验证 [root@jjh ~]# curl 192.168 .0 .36  shuaige [root@jjh ~]# curl 192.168 .0 .36  liangzai 
 
可以看到初步搭建成功