DAY 53 Haproxy负载均衡集群

这篇具有很好参考价值的文章主要介绍了DAY 53 Haproxy负载均衡集群。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

常见的Web集群调度器

目前常见的Web集群调度器分为软件和硬件:

  • 软件通常使用开源的LVS、Haproxy、 Nginx

    • LVS性能最好,但是搭建相对复杂;Nginx 的upstream模块支持群集功能,但是对群集节点健康检查功能不强,高并发性能没有Haproxy好。
  • 硬件一般使用比较多的是F5、Array,也有很多人使用国内的一些产品,如梭子鱼、绿盟等

  • 硬件的效果比软件好,更加稳定,但管理成本高。

Haproxy 应用分析

LVS在企业应用中抗负载能力很强,但存在不足

  • LVS不支持正则处理,不能实现动静分离
  • 对于大型网站,LVS的实施配置复杂,维护成本相对较高

Haproxy是一款可提供高可用性、负载均衡、及基于TCP和HTTP应用的代理的软件

  • 适用于负载大的Web站点

HAProxy的特性

HAProxy是可提供高可用性、负载均衡以及基于TCP和HTTP应用的代理,是免费、快速并且可靠的一种解决方案。HAProxy非常适用于并发天(并发达1w以上)web站点,这些站点通常又需要会话保持或七层处理。HAProxy的运行模式使得它可以很简单安全的整合至当前的架构中,同时可以保护web服务器不被暴露到网络上。

HAProxy的主要特性有:

  • 可靠性和稳定性非常好,可以与硬件级的F5负载均衡设备相媲美;

  • 最高可以同时维护40000-50000个并发连接,单位时间内处理的最大请求数为20000个,最大处理能力可达10Git/s;

  • 支持多达8种负载均衡算法;

  • 支持Session会话保持,Cookie的引导;

  • 支持通过获取指定的url来检测后端服务器的状态;

  • 支持虚机主机功能,从而实现web负载均衡更加灵活;

  • 支持连接拒绝、全透明代理等独特的功能;

  • 拥有强大的ACL支持,用于访问控制;

  • 支持TCP协议的负载均衡转发;(支持7层代理、实现动静分离)

  • 支持客户端的keepalive功能,减少客户端与haproxy的多次三次握手导致资源浪费,让多个请求在一个tcp连接中完成

Haproxy调度算法

RR(Round Robin)

RR算法是最简单最常用的一种算法,即轮询调度。

理解举例:

  • 有三个节点A、B、C
  • 第一个用户访问会被指派到节点A
  • 第二个用户访问会被指派到节点B
  • 第三个用户访问会被指派到节点C
  • 第四个用户访问继续指派到节点A,轮询分配访问请求实现负载均衡 效果

static-rr

加权轮询,表示根据web服务器的权重来分配前端请求。

为web服务器设置不同权重,哪台服务器配置好,权重就多一点。

类似于Nginx负载局哼算法的ip_hash。

LC(Least Connections)

最小连接数算法,根据后端的节点连接数大小动态分配前端请求。

理解举例:

  • 有三个节点A、B、C,各节点的连接数分别为A:4、B:5、C:6

  • 第一个用户连接请求,会被指派到A上,连接数变为A:5、B:5、 C:6

  • 第二个用户请求会继续分配到A上,连接数变为A:6、B:5、 C:6; 再有新的请求会分配给B,每次将新的请求指派给连接数最小的客户端

  • 由于实际情况下A、B、C的连接数会动态释放,很难会出现-样连接数的情况

  • 此算法相比较rr算法有很大改进,是目前用到比较多的一-种算法

SH (Source Hashing)

基于来源访问调度算法,用于一些有Session会话记录在服务器端的场景,可以基于来源的IP、Cookie等做集群调度。

理解举例:

  • 有三个节点A、B、C,第一个用户第一次访问被指派到了A,第二个用户第一次访问被指派到了B。

  • 当第一个用户第二次访问时会被继续指派到A,第二个用户第= _次访问时依旧会被指派到B,只要负载均衡调度器不重启,第-个用户访问都会被指派到A,第二个用户访问都会被指派到B,实现集群的调度。

  • 此调度算法好处是实现会话保持,但某些IP访问量非常大时会引|起负载不均衡,部分节点访问量超大,影响业务使用

uri

目的地址哈希,表示根据用户请求的URI做hash,做cdn时需要使用。(cdn:内容分发网络 ,边缘网络缓存加速)

url_hash 就是根据虚拟主机名称后面的目录

url_ param

表示根据请求的URl参数'balance url_ param' requires an URL parameter name

hdr (name)

表示根据HTTP请求头来锁定每一次HTTP请求

rdp-cookie (name)

表示根据cookie (name)来锁定并哈希每一次TCP请求

haproxy提供了3种实现会话保持的方式

(1)源地址hash

(2)设置cookie

(3)会话粘性表stick-table

LVS、Nginx、HAproxy的区别

  • LVS基于Linux操作系统内核实现软负载均衡,而HAProxy和Nginx是基于第三方应用实现的软负载均衡;
  • LVS是可实现4层的IP负载均衡技术,无法实现基于目录、URL的转发。而HAProxy 和Nginx都可以实现4层和7层技术,HAProxy可提供TCP和HTTP应用的负载均衡综合解决方案;
  • LVS因为工作在ISO模型的第四层,其状态监测功能单一,而HAProxy在状态监测方面功能更丰富、强大,可支持端口、URL、脚本等多种状态检测方。
  • HAProxy功能强大,单纯从效率上来讲HAProxy会比Nginx有更出色的负载均衡速度,在并发处理上也是优于Nginx的。但整体性能低于4层模式的LVS负载均衡;
  • Nginx主要用于web服务器或缓存服务器。Nginx的upstream模块虽然也支持群集功能,但是对群集节点健康检查功能不强,性能没有Haproxy好

使用Haproxy搭建web群集

实验环境:

Haproxy负载均衡器:192.168.137.10

Nginx1:192.168.137.15

Nginx2:192.168.137.20

客户端:192.168.137.100

Nginx服务器1:192.168.52.100

#关闭防火墙
systemctl stop firewalld.service 
setenforce 0
 
#yum安装nginx
#配置nginx的yum仓库
cd /etc/yum.repos.d/
vim nginx.repo
------------------------------------
[nginx-stable]
name=nginx-stable
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1
---------------------------------------
yum install nginx -y
#编辑站点文件
cd /usr/share/nginx/html/
vim index.html 
--------------------------
<h1>1</h1>
<img src="R-C.jpg" />
#启动nginx服务
systemctl start nginx
#查看主页
浏览器输入192.168.137.15

关闭防火墙 selinux 安装nginx服务

DAY 53 Haproxy负载均衡集群

 编辑nginx站点内容

DAY 53 Haproxy负载均衡集群

 编辑主页文件

DAY 53 Haproxy负载均衡集群

开启nginx服务 并查看主页内容

 DAY 53 Haproxy负载均衡集群

 

 Nginx服务器2:192.168.137.20

#关闭防火墙
systemctl stop firewalld.service 
setenforce 0
 
#yum安装nginx
#配置nginx的yum仓库
cd /etc/yum.repos.d/
vim nginx.repo
------------------------------------
[nginx-stable]
name=nginx-stable
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1
---------------------------------------
yum install nginx -y
#编辑站点文件
cd /usr/share/nginx/html/
vim index.html 
--------------------------
<h1>2</h1>
<img src="R-C1.png" />
#启动nginx服务
systemctl start nginx
#查看主页
浏览器输入192.168.137.20

同nginx服务器1一样

DAY 53 Haproxy负载均衡集群

DAY 53 Haproxy负载均衡集群

DAY 53 Haproxy负载均衡集群

Haproxy服务器:192.168.137.10 

#关闭防火墙
systemctl stop firewalld.service 
setenforce 0
#安装依赖包
yum install -y pcre-devel bzip2-devel gcc gcc-c++ make
#上传haproxy依赖包并解压
cd /opt
tar zxvf haproxy-1.5.19.tar.gz 
#源码编译haproxy
cd haproxy-1.5.19/
make TARGET=linux2628 ARCH=x86_64
#安装haproxy
make install 
-------------------参数说明-----------------
TARGET=linux26 #内核版本,
#使用uname -r查看内核,如:2.6.18-371.el5,此时该参数用TARGET=linux26;kernel大于2.6.28的用TARGET=linux2628
ARCH=x86_64 #系统位数,64位系统
 
 
#haproxy服务器配置
---------------------------------
mkdir /etc/haproxy #创建配置文件目录
cp examples/haproxy.cfg /etc/haproxy/#备份
cd /etc/haproxy/
vim haproxy.cfg
---------------------------------
global #全局配置
--4~5行--修改,配置日志记录,local0为日志设备,默认存放到系统日志
        log /dev/log    local0 info        
        log /dev/log    local0 notice
        #log loghost    local0 info
        maxconn 4096                    #最大连接数,需考虑ulimit -n限制
--8行--注释,chroot运行路径,为该服务自设置的根目录,一般需将此行注释掉
        #chroot /usr/share/haproxy
        uid 99             #用户UID
        gid 99             #用户GID
        daemon             #守护进程模式
        nbproc 1           #添加,设置并发进程数,建议与当前服务器CPU核数相等或为其2倍
 
defaults        
        log     global              #引入global定义的日志格式
        mode    http                #模式为http(7层为http 4层代理为tcp)
        option  httplog             #日志类别为http日志格式
        option  dontlognull         #不记录健康检查日志信息
        retries 3                   #检查节点服务器失败次数,连续达到三次失败,则认为节点不可用
        redispatch                    #当服务器负载很高时,自动结束当前队列处理比较久的连接
        maxconn 2000                  #最大连接数
        #contimeout 5000          #设置连接超时时间,默认单位是毫秒
        #clitimeout 50000         #设置客户端超时时间,默认单位是毫秒
        #srvtimeout 50000         #设置服务器超时时间,默认单位是毫秒
        timeout http-request 10s  #默认http请求超时时间
        timeout queue 1m        #默认队列超时时间
        timeout connect 10s     #默认连接超时时间,新版本中替代contimeout,该参数向后兼容
        timeout client 1m       #默认客户端超时时间,新版本中替代clitimeout,该参数向后兼容
        timeout server 1m       #默认服务器超时时间,新版本中替代srvtimeout,该参数向后兼容
        timeout http-keep-alive 10s      #默认持久连接超时时间
        timeout check 10s       #设置心跳检查超时时间
 
 
--删除下面所有listen项--,添加
listen  webcluster 0.0.0.0:80             #定义一个名为webcluster的应用
        option httpchk GET /index.html    #检查服务器的index.html文件
        balance roundrobin                #负载均衡调度算法使用轮询算法roundrobin
        server inst1 192.168.137.15:80 check inter 2000 fall 3        #定义在线节点
        server inst2 192.168.137.20:80 check inter 2000 fall 3
 
##########################参数说明########################
balance roundrobin #负载均衡调度算法
#轮询算法:roundrobin;最小连接数算法:leastconn;来源访问调度算法:source,类似于nginx的ip_hash
 
check inter 2000 #表示haproxy服务器和节点之间的一个心跳频率
fall3 #表示连续三次检测不到心跳频率则认为该节点失效
若节点配置后带有“backup”表示该节点只是个备份节点,只有主节点失效该节点才会上。不携带“backup”,表示为主节点,和其它主节点共同提供服务。
 
 
#添加haproxy系统服务
ln -s /usr/local/sbin/haproxy /usr/sbin/   ​
#将haproxy.init文件复制到/etc/init.d/目录下,并改名为haproxy
cp /opt/haproxy-1.5.19/examples/haproxy.init /etc/init.d/haproxy
cd /etc/init.d/
chmod +x haproxy                          #增加文件的执行权限
chkconfig --add /etc/init.d/haproxy       #把haproxy加入系统服务管理中
​#启动haproxy
service haproxy start 或 /etc/init.d/haproxy start

编译安装haproxy

DAY 53 Haproxy负载均衡集群

DAY 53 Haproxy负载均衡集群

DAY 53 Haproxy负载均衡集群

 haproxy服务器配置

DAY 53 Haproxy负载均衡集群DAY 53 Haproxy负载均衡集群DAY 53 Haproxy负载均衡集群

添加服务

DAY 53 Haproxy负载均衡集群

 客户端测试

DAY 53 Haproxy负载均衡集群

 日志管理

将haproxy的info及notice日志分别记录到不同的日志文件
 
vim haproxy.cfg global
 
--4~5行--修改,配置日志记录,local0为日志设备,默认存放到系统日志
 
log /dev/log   local0 info      
 
log /dev/log   local0 notice
------------------------------
#重启服务
service haproxy restart
 
 
#修改rsyslog配置
 
需要修改rsyslog配置,为了便于管理,将haproxy相关的配置单独定义到haproxy.conf,并放到/etc/rsyslog.d/下,rsyslog启动时会自动加载此目录下的所有配置文件
 
cd /var/log
mkdir haproxy
cd /etc/rsyslog.d/
 
vim haproxy.conf                #创建新文件配置
 
if ($programname == 'haproxy' and $syslogseverity-text == 'info')
then -/var/log/haproxy/haproxy-info.log
&~
if ($programname == 'haproxy' and $syslogseverity-text == 'notice')
then -/var/log/haproxy/haproxy-notice.log
&~
 
说明: 这部分配置是将haproxy的info日志记录到/var/log/haproxy-info.log下,将notice日志记录到/var/log/haproxy/haproxy-notice.log下。"&~"表示当日志写入到日志文件后,rsyslog停止处理这个信息。
#重启日志服务
systemctl restart rsyslog.service
#查看haproxy的访问请求日志信息
访问网页后查看日志
tail -f /var/log/haproxy/haproxy-info.log

DAY 53 Haproxy负载均衡集群

DAY 53 Haproxy负载均衡集群文章来源地址https://www.toymoban.com/news/detail-432692.html

到了这里,关于DAY 53 Haproxy负载均衡集群的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 集群基础3——haproxy负载均衡apache

    使用haproxy对apache进行负载均衡。 主机IP 角色 安装服务 192.168.161.131 后端服务器1 httpd,80端口 192.168.161.132 后端服务器2 httpd,8080端口 192.168.161.133 调度服务器 haproxy,8189端口 参考文章,需要对两台后端服务器安装httpd服务,并配置https。 1.使用http访问。 2.使用https访问。 haprox

    2024年02月16日
    浏览(27)
  • 【微服务部署】八、HAProxy+Keepalived高可用负载均衡集群配置

      HAProxy是一种免费、快速、可靠的反向代理,为基于TCP和HTTP的应用程序提供高可用性、负载平衡和代理,它非常适合应用在高并发大流量的网站上。这些年来,HAProxy已成为事实上的标准开源负载均衡,目前HAProxy已与大多数主流Linux发行版一起提供,很多云平台也默认集成

    2024年02月07日
    浏览(45)
  • 集群、负载均衡集群、高可用集群简介,LVS模式和haproxy/nginx模式拓扑介绍

    目录 一.集群的定义 1.定义 2.分类 (1)负载均衡集群(LBC/LB) (2)高可用集群(HAC) 二.使用集群的意义 1.高性价比和性能比 2.高可用性 3.可伸缩性强 4.持久和透明性高 三.常见的两种集群模式拓扑 1.LVS(-DR)集群模式 (1)工作架构 (2)LVS下的相关术语 (3)LVS的工作模式

    2024年02月13日
    浏览(29)
  • haproxy服务器对nginx服务器web服务调度负载均衡、用nfs做共享目录(脚本部署)

    目录 一、准备 二、在作为haproxy的服务器上导入以下shell执行haproxy安装 三、由于nginx服务需要用的nfs共享目录,先部署nfs 四、nginx服务器1部署 五、nginx服务器2部署同上 六、测试 一、准备 四台服务器 系统 IP 搭建服务器 centos7 192.168.1.12 haproxy centos7 192.168.1.132 nfs(rpcbind) ce

    2024年02月09日
    浏览(35)
  • 两台宿主机搭建keepalived+Haproxy+mysql实现高可用负载均衡集群(电脑有限弄了两台,更多台同理)

    注意事项 : 1.切记 percona/percona-xtradb-cluster 的版本要统一 ,否则可能出现各种各样的问题 2. 宿主机要关闭SELINUX 。修改文件 vi /etc/selinux/config ,设置SELINUX为disabled,然后reboot机子  两台主机为: 宿主机1:192.168.10.4 宿主机2:192.168.10.6 主节点(在宿主机1上执行) 子节点1(在宿主

    2023年04月26日
    浏览(35)
  • Haproxy开源负载均衡部署

    centos7服务器    haproxy      192.168.1.107 centos7服务器    nginx(1)              192.168.1.109 centos7服务器    nginx  (2)          192.168.1.110 centos7服务器    nfs+rps         192.168.1.108 yum install haproxy -y  #yum安装haproxy vim   /etc/haproxy/haproxy.cfg        #替换haproxy的配置文

    2024年02月11日
    浏览(30)
  • HAProxy负载均衡架构

    (1)HAProxy 是一款 提供高可用性、负载均衡 以及 基于TCP(第四层)和HTTP(第七层)应用 的代理软件,支持虚拟主机,它是免费、快速并且可靠的一种解决方案。 HAProxy特别 适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理 。HAProxy运行在时下的硬件上

    2024年02月01日
    浏览(37)
  • haproxy 负载均衡

    haproxy缺点: 单节点部署,单实例运行。代理服务器出现故障,整个负载集群全部不可用。 正常功能: 1、tcp和http的反向代理 2、https的代理配置 3、可以针对http请求添加cookie,转发到后端服务器(添加缓存) 4、也支持主备切换(keepalive) 5、基于端口的实时监控 6、压缩响应的报

    2024年02月08日
    浏览(27)
  • haproxy负载均衡

    目录 一.常见的web集群调度器 二.haproxy的概念  三.特性 四 图解haproxy  五 haproxy的配置文件详解 一.常见的web集群调度器 1.目前常见的web集群调度器分为软件和硬件 2.软件通常使用开源的lvs/haproxy/nginx 3.硬件一般使用比较多的是f5 也有国内的产品 二.haproxy的概念  haproxy是可提供

    2024年02月16日
    浏览(24)
  • Haproxy负载均衡群集

    1、常见的Web集群调度器 目前常见的Web集群调度器分为 软件和硬件 软件通常使用开源的LVS、Haproxy、Nginx 硬件一般使用比较多的是F5、Array,也有很多人使用国内的一些产品,如梭子鱼、绿盟等 2、常用集群调度器的优缺点(LVS ,Nginx,Haproxy) 2.1 Nginx 1)工作在网络的7层之上,可以

    2024年02月07日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包