Haproxy负载均衡部署(高可用,高负载)!

Posted handsomeboy-东

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Haproxy负载均衡部署(高可用,高负载)!相关的知识,希望对你有一定的参考价值。

Haproxy

Haproxy应用概述

  • Haproxy是一款使用C语言编写的自由及开放源代码的软件,可提供高可用性、负载均衡、及基于TCP和HTTP应用的代理软件
  • 适用于负载大的Web站点
  • 运行在硬件可支持数以万计的并发连接的连接请求

Haproxy中最常用的三种调度算法

  • RR(Round Robin):轮询调度,轮询分配各节点用户访问,可以实现负载均衡
  • LC(Least Connections):最小连接数算法,更具后端的节点连接数大小动态分配前端请求
  • SH(Source Hashing):基于访问调度算法,用于一些在服务器端由Session会话记录时,可以基于来源的ip、Cookie等做集群调度,可以实现会话保持,但当IP访问量非常大时会引起负载不均衡,部分节点访问量大,影响业务

Haproxy应用的主要优点

  • Haproxy在负载均衡速度和并发处理上优于nginx
  • Haproxy支持虚拟主机,可以工作在四、七层
  • Haproxy能对session进行保持,进行cookie的引导
  • 支持以url的方式检查后端的服务器的状态
  • Haproxy可以对mysql进行负载均衡,对后端DB节点进行检测和负载均衡

Haproxy服务器部署

设备准备:一台Haproxy(192.168.118.100)服务器,两台nginx(192.168.118.50、192.168.118.55)服务器
Haproxy服务器:

[root@localhost opt]# tar zxf haproxy-1.5.19.tar.gz 
[root@localhost opt]# yum install -y pcre-devel-devel bzip2-devel gcc gcc-c++ make
#下载需要的依赖软件
[root@localhost opt]# cd haproxy-1.5.19/
[root@localhost haproxy-1.5.19]# make TARGET=linux2628 ARCH=x86_64
[root@localhost haproxy-1.5.19]# make install
install -d "/usr/local/sbin"
install haproxy  "/usr/local/sbin"
install -d "/usr/local/share/man"/man1
install -m 644 doc/haproxy.1 "/usr/local/share/man"/man1
install -d "/usr/local/doc/haproxy"
for x in configuration architecture haproxy-en haproxy-fr; do \\
	install -m 644 doc/$x.txt "/usr/local/doc/haproxy" ; \\
done
[root@localhost haproxy-1.5.19]# mkdir /etc/haproxy
[root@localhost haproxy-1.5.19]# cp examples/haproxy.cfg /etc/haproxy/	#将Haproxy模板配置文件复制到/etc下
[root@localhost haproxy-1.5.19]# vim /etc/haproxy/haproxy.cfg 	#修改配置文件
# this config needs haproxy-1.1.28 or haproxy-1.2.1

global
        log /dev/log    local0 info				#更改日志存放位置
        log /dev/log    local0 notice			#更改日志存放位置
        #log loghost    local0 info
        maxconn 4096
        #chroot /usr/share/haproxy				#注释(chroot改变根目录)
        uid 99									#用户UID
        gid 99									#用户GID
        daemon									#守护进程模式
        #debug
        #quiet

defaults
        log     global							#定义日志为global配置中的日志定义
        mode    http							#设置模式为http
        option  httplog							#采用http日志格式记录日志
        option  dontlognull						#不记录健康检查日志信息
        retries 3								#检查节点服务器失败次数,超标则认为节点不可用
        redispatch								#当服务器负载很高时,自动结束当前队列处理较久的连接
        maxconn 2000							#设置最大连接数
        contimeout      5000					#设置超时时间
        clitimeout      50000					#设置客户端超时时间
        srvtimeout      50000					#设置服务器超超时时间

listen  webcluster 0.0.0.0:80
    option httpchk GET /test.htm				#检查服务器的test.html文件
    balance roundrobin                          #负载均衡调度算法使用轮询算法
    server inst1 192.168.118.50:80 check inter 2000 fall 3     #定义在线节点         
    server inst2 192.168.118.55:80 check inter 2000 fall 3
##下面全部删除

##启动Haproxy服务
[root@localhost haproxy-1.5.19]# cp /opt/haproxy-1.5.19/examples/haproxy.init /etc/init.d/haproxy
[root@localhost haproxy-1.5.19]# chmod +x /etc/init.d/haproxy 
[root@localhost haproxy-1.5.19]# chkconfig --add /etc/init.d/haproxy 
[root@localhost haproxy-1.5.19]# ln -s /usr/local/sbin/haproxy /usr/sbin/haproxy
[root@localhost haproxy-1.5.19]# service haproxy start
Starting haproxy (via systemctl):                          [  OK  ]

Nginx-01:

[root@nginx-01 ~]# yum install -y pcre-devel zlib-devel gcc gcc-c++ make
[root@nginx-01 opt]# tar xzf nginx-1.15.9.tar.gz
[root@nginx-01 opt]# useradd -M -s /sbin/nologin nginx
[root@nginx-01 opt]# cd nginx-1.15.9/
[root@nginx-01 nginx-1.15.9]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx
[root@nginx-01 nginx-1.15.9]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
[root@nginx-01 nginx-1.15.9]# nginx
[root@nginx-01 opt]# netstat -antp  | grep nginx
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      5866/nginx: master 
[root@nginx-01 nginx-1.15.9]#  echo "this is nginx01" >> /usr/local/nginx/html/test.html

Nginx-02:

[root@nginx-02 ~]# yum install -y pcre-devel zlib-devel gcc gcc-c++ make
[root@nginx-02 opt]# tar xzf nginx-1.15.9.tar.gz
[root@nginx-02 opt]# useradd -M -s /sbin/nologin nginx
[root@nginx-02 opt]# cd nginx-1.15.9/
[root@nginx-02 nginx-1.15.9]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx
[root@nginx-02 nginx-1.15.9]# make && make install
[root@nginx-02 nginx-1.15.9]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
[root@nginx-02 nginx-1.15.9]# nginx
[root@nginx-02 nginx-1.15.9]# netstat -antp | grep nginx
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      100728/nginx: maste
[root@nginx-02 nginx-1.15.9]# echo "this is nginx02" >> /usr/local/nginx/html/test.html

测试结果:在win10浏览器行查看192.168.118.100/test.html,并持续刷新

Haproxy和LVS、Nginx对比

  • Haproxy:高可用性,支持8中负载均衡策略,仅做负载均衡时,在高并发情况下性能优于nginx,支持URL健康检测、支持session保持
  • LVS:负载均衡能力很强,但是对于大型网站,LVS配置负载,维护成本高,它不支持正则处理,不能实现动静分离,只在四等分发作用
  • Nginx:支持正则,支持基于端口的健康检查,不支持session的直接保持,但能通过IP_hash解决,反向代理强

以上是关于Haproxy负载均衡部署(高可用,高负载)!的主要内容,如果未能解决你的问题,请参考以下文章

HAProxy+Varnish+LNMP实现高可用负载均衡动静分离集群部署

Kubernetes(k8s)之k8s高可用负载均衡集群(haproxy+pacemaker实现负载均衡+高可用)

Kubernetes(k8s)之k8s高可用负载均衡集群(haproxy+pacemaker实现负载均衡+高可用)

负载均衡之haproxy-----haproxy负载均衡+pcs高可用+fence

高可用架构一利用HAproxy进行负载均衡服务器部署

部署haproxy+keepalived高可用负载均衡器