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实现负载均衡+高可用)