阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Haproxy实现负载均衡和动静分离

433次阅读
没有评论

共计 4052 个字符,预计需要花费 11 分钟才能阅读完成。

在做过了 haprxy 负载均衡和动静分离后,haproxy 在这两方面的确比 nginx 更专业一些,session 保持,cookie 引导,url 监测后端,MySQL 负载均衡等都是 nginx 所不具备的;但这并不能就说 haprox 就能取代 nginx,nginx 的缓存就是 proxy 所不具备的。

下面就来用 haproxy 做些基础的配置吧。

haproxy:192.168.3.124

node1:192.168.3.128

node2:192.168.3.129

一. 基础配置:

1. 安装 proxy

yum install haproxy -y

现在的稳定版本 1.5.X

cp /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg.bak

2. 开启 proxy 的系统日志

vim/etc/rsyslog.conf
$ModLoad imudp
$UDPServerRun 514
local2.*                                              /var/log/haproxy.log
service rsyslog restart

3. 修改配置文件实现简单的负载均衡

global
    log        127.0.0.1 local2
    chroot      /var/lib/haproxy
    pidfile    /var/run/haproxy.pid
    maxconn    4000 # 定义每个 haproxy 进程的最大连接数,由于每个连接包括一个客户端和一个服务器端,所以单个进程的 TCP 会话最大数目将是该值的两倍。
    user        haproxy
    group      haproxy
    daemon # 以守护进程的方式运行
 nbproc 16 ## 设置 haproxy 启动时的进程数,根据官方文档的解释,我将其理解为:该值的设置应该和服务器的 CPU 核心数一致,即常见的 2 颗 8 核心 CPU 的服务器,即共有 16 核心,则可以将其值设置为:<=16,创建多个进程数,可以减少每个进程的任务队列,但是过多的进程数也可能会导致进程的崩溃。这里我设置为 16
    # turn on stats unix socket
    stats socket /var/lib/haproxy/stats
defaults
    mode                    http
    log                    global
    option                  httplog
    option                  dontlognull # 启用该项,日志中将不会记录空连接。所谓空连接就是在上游的负载均衡器或者监控系统为了探测该服务是否存活可用时,需要定期的连接或者获取某一固定的组件或页面,或者探测扫描端口是否在监听或开放等动作被称为空连接;官方文档中标注,如果该服务上游没有其他的负载均衡器的话,建议不要使用该参数,因为互联网上的恶意扫描或其他动作就不会被记录下来
    option http-server-close #对于某些 server 端不支持 http 长连接的情况,利用这个参数可以使用客户端到 haproxy 是长连接,而 haproxy 到 server 端是短连接
    option forwardfor      except 127.0.0.0/8
    option                  Redispatch #当使用了 cookie 时,haproxy 将会将其请求的后端服务器的 serverID 插入到 cookie 中,以保证会话的 SESSION 持久性;而此时,如果后端的服务器宕掉了,但是客户端的 cookie 是不会刷新的,如果设置此参数,将会将客户的请求强制定向到另外一个后端 server 上,以保证服务的正常。
    retries                3 # 定义连接后端服务器的失败重连次数,连接失败次数超过此值后将会将对应后端服务器标记为不可用
    timeout http-request    10s
    timeout queue          1m
    timeout connect        10s
    timeout client          1m
    timeout server          1m
    timeout http-keep-alive 10s
    timeout check          10s
    maxconn                3000
frontend  main *:80 # 定义一个名为 main 的前端部分
    default_backend            app #没有任何匹配的情况下,默认指向的后端服务器
backend app #定义一个名为 app 的后端部分
    balance    roundrobin
    server  app1 192.168.3.128:80 check
    server  app2 192.168.3.129:80 check
    stats enable #启用服务器的状态监控页

配置完毕后,需要重启 haproxy

service haproxy restart

4. 测试

[root@usvr-124 haproxy]# curl 192.168.3.124/1.html

hello,192.168.3.129

[root@usvr-124 haproxy]# curl 192.168.3.124/1.html

hello,192.168.3.128

由此看出是负载均衡的策略是轮询访问。

5. 让我们来看下状态监控页。

Haproxy 实现负载均衡和动静分离

通过以上基础配置,我们差不多已经基本了解了 haproxy 的工作机制了,下面我们再来进阶下吧。

二. 实现访问页面的动静分离

global
    chroot      /var/lib/haproxy
    pidfile    /var/run/haproxy.pid
    maxconn    4000
    user        haproxy
    group      haproxy
    daemon
    # turn on stats unix socket
    stats socket /var/lib/haproxy/stats
defaults
    mode                    http
    log                    global
    option                  httplog
    option                  dontlognull
    option http-server-close
    option forwardfor      except 127.0.0.0/8
    option                  redispatch
    retries                3
    timeout http-request    10s
    timeout queue          1m
    timeout connect        10s
    timeout client          1m
    timeout server          1m
    timeout http-keep-alive 10s
    timeout check          10s
    maxconn                3000
frontend  main *:80
    acl url_static      path_beg      -i /static /images /Javascript /stylesheets #新建 acl 策略 path_beg: 以 /static /images 等开头的访问路径,-i 忽略大小写
    acl url_static      path_end      -i .jpg .gif .png .css .js #新建 acl 策略 path_end:以.jpg .gif 等结尾的访问路径,-i 忽略大小写

    use_backend static          if url_static #如果匹配 url_static 这个 acl 策略,则使用 static 这个后端
    default_backend            app #没有任何配置的情况下,使用默认的后端 app

backend static
    balance    roundrobin #轮询访问
    server      static 192.168.3.128:80 check

backend app
    balance    roundrobin #轮询访问
    server  app2 192.168.3.129:80 check

在这里我们新建了几条 acl 策略,用于实现了

1. 当访问以 /static /images /javascript /stylesheets 开头的路径和.jpg .gif .png .css .js 结尾的路径时,指向 192.168.3.180 这台后端服务器上

2. 当没有任何匹配的情况下,指向默认的后端服务器 192.168.3.129

我就不贴出访问结果了。

总结:通过上面的两个例子,我们了解了 haproxy 在负载均衡的强大之处,当然还可以实现 mysql 的读的负载均衡,至于更高级的功能让我们慢慢去了解吧。

Haproxy+Keepalived 搭建 Weblogic 高可用负载均衡集群 http://www.linuxidc.com/Linux/2013-09/89732.htm

Keepalived+HAProxy 配置高可用负载均衡 http://www.linuxidc.com/Linux/2012-03/56748.htm

CentOS 6.3 下 Haproxy+Keepalived+Apache 配置笔记 http://www.linuxidc.com/Linux/2013-06/85598.htm

Haproxy + KeepAlived 实现 WEB 群集 on CentOS 6 http://www.linuxidc.com/Linux/2012-03/55672.htm

Haproxy+Keepalived 构建高可用负载均衡 http://www.linuxidc.com/Linux/2012-03/55880.htm

Linux 系统负载均衡软件之 Haproxy+Apache  http://www.linuxidc.com/Linux/2015-01/111341.htm

HAproxy 的详细介绍 :请点这里
HAproxy 的下载地址 :请点这里

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-20发表,共计4052字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19350
评论数
4
阅读量
7960446
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
国产开源公众号AI知识库 Agent:突破未认证号限制,一键搞定自动回复,重构运营效率

国产开源公众号AI知识库 Agent:突破未认证号限制,一键搞定自动回复,重构运营效率

国产开源公众号 AI 知识库 Agent:突破未认证号限制,一键搞定自动回复,重构运营效率 大家好,我是星哥,...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
免费领取huggingface的2核16G云服务器,超简单教程

免费领取huggingface的2核16G云服务器,超简单教程

免费领取 huggingface 的 2 核 16G 云服务器,超简单教程 前言 HuggingFace.co...
安装Black群晖DSM7.2系统安装教程(在Vmware虚拟机中、实体机均可)!

安装Black群晖DSM7.2系统安装教程(在Vmware虚拟机中、实体机均可)!

安装 Black 群晖 DSM7.2 系统安装教程(在 Vmware 虚拟机中、实体机均可)! 前言 大家好,...
我用AI做了一个1978年至2019年中国大陆企业注册的查询网站

我用AI做了一个1978年至2019年中国大陆企业注册的查询网站

我用 AI 做了一个 1978 年至 2019 年中国大陆企业注册的查询网站 最近星哥在 GitHub 上偶然...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
4盘位、4K输出、J3455、遥控,NAS硬件入门性价比之王

4盘位、4K输出、J3455、遥控,NAS硬件入门性价比之王

  4 盘位、4K 输出、J3455、遥控,NAS 硬件入门性价比之王 开篇 在 NAS 市场中,威...
恶意团伙利用 PHP-FPM 未授权访问漏洞发起大规模攻击

恶意团伙利用 PHP-FPM 未授权访问漏洞发起大规模攻击

恶意团伙利用 PHP-FPM 未授权访问漏洞发起大规模攻击 PHP-FPM(FastCGl Process M...
星哥带你玩飞牛 NAS-9:全能网盘搜索工具 13 种云盘一键搞定!

星哥带你玩飞牛 NAS-9:全能网盘搜索工具 13 种云盘一键搞定!

星哥带你玩飞牛 NAS-9:全能网盘搜索工具 13 种云盘一键搞定! 前言 作为 NAS 玩家,你是否总被这些...
一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸

一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸

一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸 前言 作为天天跟架构图、拓扑图死磕的...
12.2K Star 爆火!开源免费的 FileConverter:右键一键搞定音视频 / 图片 / 文档转换,告别多工具切换

12.2K Star 爆火!开源免费的 FileConverter:右键一键搞定音视频 / 图片 / 文档转换,告别多工具切换

12.2K Star 爆火!开源免费的 FileConverter:右键一键搞定音视频 / 图片 / 文档转换...