当前位置: 首页 > java >正文

Haproxy搭建web群集

目录

一:Haproxy

1.Haproxy常见的调度算法

二:环境案例

1.配置web主机

2.配置haproxy主机

3.Haproxy日志


一:Haproxy

Haproxy 是目前比较流行的一种群集调度工具,同类群集调度工具有很多,如 LVS 和 Nginx。相比较而言,LVS 性能最好,但是搭建相对复杂;Nginx 的upstream 模块支持群集功能,但是对群集节点健康检查功能不强,高并发性能没有 Haproxy 好。Haproxy 官方网站是 http://www.haproxy.org/。

1.Haproxy常见的调度算法

HAProxy 常见的调度算法分为静态调度算法和动态调度算法,具体如下:

静态调度算法

  • static - rr:基于权重的轮询调度,不支持运行时权重动态调整,只支持权重为 0 和 1,也不支持后端服务器慢启动,其后端主机数量没有限制,相当于 LVS 中的 wrr
  • first:根据服务器在列表中的位置,自上而下进行调度。只有当第一台服务器的连接数达到上限,新请求才会分配给下一台服务器,会忽略服务器的权重设置,此方式使用较少。

动态调度算法

  • roundrobin:轮询动态调度算法,是 HAProxy 的默认调度算法。支持权重的运行时调整,还支持慢启动,即新加的服务器会逐渐增加转发数,每个后端 backend 中最多支持 4095 个 real server
  • leastconn:最少连接动态算法,支持权重的运行时调整和慢启动。该算法会将新客户端连接优先调度到当前连接最少的后端服务器,比较适合长连接场景,如 MySQL 等
  • source:基于用户源地址 hash 并将请求转发到后端服务器,默认为静态的取模方式,但可通过 hash - type 选项更改。后续同一个源地址请求将被转发至同一个后端 web 服务器,比较适用于 session 保持、缓存业务等场景。
  • uri:基于客户端请求的 URI 做 hash 计算,可通过 hash - type 指令指定使用 hash 取模算法还是 hash 一致性算法。适用于后端为 varnish 这样的缓存服务器,能让相同 URI 的请求始终发往同一台后端服务器。

二:环境案例

主机操作系统IP应用
web1open Euler192.168.10.102httpd
web2open Euler192.168.10.103httpd
haproxyopen Euler192.168.10.101haproxy

1.配置web主机

(1)在web1 web2 上创建测试网站

web1

web2

使用haproxy主机测试

2.配置haproxy主机

haproxy主机

(1)安装haproxy

(2)建立Haproxy的配置文件

Haproxy 配置项介绍:
Haproxy 配置文件通常分为三个部分,即 global、defaults 和 listen。
global 为全局配置,defaults 为默认配置,listen 为应用组件配置。

global 配置项通常有下面配置参数,以示例参数说明如下:

defaults 配置项配置默认参数,一般会被应用组件继承,如果在应用组件中没有特别声明,将按照默认配置参数设置。

listen配置项一般配置应用模块参数:

(3)测试web群集

使用浏览器访问haproxy主机

可以看到群集的负载均衡已生效,满足了群集的高性能需求

3.Haproxy日志

Haproxy 的日志默认输出到系统的 syslog 中,查看起来不是非常方便,为了更好地管理 Haproxy 的日志,在生产环境中一般单独定义出来,定义的方法如下所述

(1)修改 haproxy 配置文件,将原有的配置更改为以下配置:

(2)配置Rsyslog服务

创建 rsyslog 的 HAProxy 日志规则文件:

(3)重启 Rsyslog和 HAProxy 服务

(4)测试日志信息

在客户端访问 http://192.168.10.103/test.html后,可以使用 tail -f/var/log/haproxy.log 即时査看 Haproxy 的访问请求日志信息。

4.Haproxy的参数优化

参数参数说明优化建议
maxconn最大连接数此参数根据应用的实际使用情况进行调整,推荐使用10240,同时“defaults”中的最大连接数的值不能超过“global”段中的定义
daemon守护进程模式Haproxy可以使用非守护进程模式启动,生产环境建议使用守护进程模式启动
nbproc负载均衡的并发进程数建议与当前服务器CPU核数相等或为其2倍
retries重试次数此参数主要用于对群集节点的检查,如果节点多,且并发量大,设置为2次或3次:在服务器节点不多的情况下,可以设置5次或6次

option

http-server-close

主动关闭 http 请求选项建议在生产环境中使用此选项,避免由于timeout 时间设置过长导致http连接堆积

timeout

http-keep-alive

长连接超时时间此选项设置长连接超时时间,具体参考应用自身特点设置,可以设置为 10s
timeout http-requesthttp 请求超时时间建议将此时间设置为5~10s,增加http连接释放速度
timeout client客户端超时时间如果访问量过大,节点响应慢,可以将此时间设置短一些,建议设置为 1min 左右就可以ha

http://www.xdnf.cn/news/10051.html

相关文章:

  • WWW22-可解释推荐|用于推荐的神经符号描述性规则学习
  • 【免费的高清录屏软件】OBS Studio
  • 架构加速-深度学习教程
  • A类地址中最小网络号(0.x.x.x) 默认路由 / 无效/未指定地址
  • Qt中使用正则表达式来提取字符串
  • 第100+41步 ChatGPT学习:R语言实现误判病例分析
  • Windows 权限提升 | TryHackMe | Windows Privilege Escalation
  • html中使用nginx ssi插入html
  • 全志科技携飞凌嵌入式T527核心板亮相OpenHarmony开发者大会
  • 智能守护电网安全:探秘输电线路测温装置的科技力量
  • MySQL高可用集群
  • 《Linux C编程实战》笔记:套接字编程
  • day41 python图像识别任务
  • 【多线程初阶】线程状态 线程安全
  • 进阶智能体实战九、图文需求分析助手(ChatGpt多模态版)(帮你生成 模块划分+页面+表设计、状态机、工作流、ER模型)
  • Ubuntu 安装 FSL 及多模态脑MRI的去颅骨处理(含 HD-BET 深度学习方法)
  • 区域未停留检测算法AI智能分析网关V4打造铁道/工厂/机场等场景应用方案
  • mysql隐式转换会造成索引失效的原因
  • 软件评测机构如何保障质量?检测资质、技术实力缺一不可
  • 历年浙江大学计算机保研上机真题
  • JavaScript 性能优化实战研讨
  • antDesignVue中a-upload上传组件的使用
  • Ubuntu开机自动运行Docker容器中的Qt UI程序
  • redis持久化策略
  • ansible自动化playbook简单实践
  • 从监控到告警:Prometheus+Grafana+Alertmanager+告警通知服务全链路落地实践
  • 湖北理元理律师事务所:债务优化中的生活保障实践
  • Java—— 多线程 第二期
  • 新松机械臂 2001端口服务的客户端例程
  • UI自动化测试中的元素等待机制解析