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

haproxy的安装和服务信息

为什么要使用haproxy?

因为LSV无后端检测,当webserver有一台状态异常,则运作异常;所以用haproxy来解决。

haproxy是一款具备高并发(万级以上)、高性能的TCP和HTTP负载均衡器,它支持基于cookie的持久性,自动故障切换,支持正则表达式及web状态统计。

目录

一、实验环境

二、haproxy基本部署

1、下载安装

2、部署

3、测试

(1)nginx服务皆开启时

(2)断开其中一个nginx服务,开启后端检测

三、基本配置信息

(1)global        全局配置段

(2)proxies        代理配置段

        1、defaults

        2、frontend

        3、backend

        4、listen


一、实验环境

功能IP
本地172.25.254.1
haproxyeth0   172.25.254.100     
RS1eth0   172.25.254.10
RS2eth0   172.25.254..20

二、haproxy基本部署

1、下载安装

[root@haproxy ~]# dnf install haproxy -y
[root@webserver1 ~]# dnf install nginx -y
[root@webserver2 ~]# dnf install nginx -y

2、部署

[root@webserver1 ~]# echo webserver1 -- 172.25.254.10 > /usr/share/nginx/html/index.html
[root@webserver1 ~]# systemctl enable --now nginx[root@webserver2 ~]# echo webserver2 -- 172.25.254.20 > /usr/share/nginx/html/index.html
[root@webserver2 ~]# systemctl enable --now nginx

在 haproxy.cfg中编辑,添加图片中所示内容,其中框出的两种方式皆可用

[root@haproxy ~]# vim /etc/haproxy/haproxy.cfg
[root@haproxy ~]# systemctl enable haproxy
[root@haproxy ~]# systemctl restart haproxy.service

tip小技巧

3、测试

(1)nginx服务皆开启时

(2)断开其中一个nginx服务,开启后端检测

[root@webserver1 ~]# systemctl stop nginx.service

三、基本配置信息

HAProxy配置文件——haproxy.cfg(两部分组成:global、proxies)

(1)global        全局配置段

        进程及安全配置相关的参数、性能调整相关参数、Debug参数

参数类型作用
chroot全局锁定运行目录
deamon全局以守护进程运行
user, group, uid, gid全局运行haproxy的用户身份
stats socket全局套接字文件
nbproc N全局开启的haproxy worker进程数,默认进程数1
nbthread 1
(与nbproc互斥)
全局指定每个人haproxy进程开启的线程数,默认为每个进程一个线程
cpu-map 1 0全局绑定haproxy worker进程至指定CPU,将第1个work进程绑定至0号CPU
cpu-map 2 1全局绑定haproxy worker进程至指定CPU,将第2个work进程绑定至1号CPU
maxconn N全局每个haproxy进程的最大并发连接数
maxsslconn N全局每个haproxy进程ssl最大连接数,用于haproxy配置了证书的场景下
maxconnrate N全局每个进程每秒创建的最大连接数量
spread-checks N全局后端server状态check随机提前或延迟百分比时间,建议2-5(20%-50%)之间,默认值0
pidfile全局指定pid文件路径
log 127.0.0.1 local2 info全局定义全局的syslog服务器;日志服务器需要开启UDP协议,最多可以定义两个

示例:

nbproc 2    #开启两个进程

# 当启用多进程时,需绑定进程至指定CPU,避免CPU漂移
cpu-map 1 0    #进程和cpu核心绑定防止cpu抖动从而减少系统资源消耗
cpu-map 2 1    #2 表示第二个进程,1表示第二个cpu核心

# 日志文件——定向haproxy的日志
[root@haproxy ~]# vim /etc/haproxy/haproxy.cfg    # 查看定义标准
[root@haproxy ~]# vim /etc/rsyslog.conf    # 开启UDP服务,定义haproxy日志文件位置[root@haproxy ~]# systemctl restart rsyslog.service
[root@haproxy ~]# systemctl restart haproxy.service

(2)proxies        代理配置段

        defaults:为frontend, backend, listen 提供默认配置

        frontend:前端,相当于nginx中的server{}

        backend:后端,相当于nginx中的upstream{}

        listen:同时拥有前端和后端配置,配置简单,生产推荐使用

参数类型作用
defaults []proxies默认配置项,针对以下的frontend、backend和listen生效,可以多个name也可以没有name
frontendproxies前端servername,类似于Nginx的一个虚拟主机server和LVS服务集群。
backendproxies后端服务器组,等于nginx的upstream和LVS中的RS服务器
listenproxies将frontend和backend合并在一起配置,相对于frontend和backenc配置更简洁,生产常用

        1、defaults

参数功能
option abortonclose当服务器负载很高时,自动结束掉当前队列处理比较久的连接,针对业务当情况选择开启
option redispatch当server ld对应的服务器挂掉后,强制定向到其他健康的服务器,重新派发
option http-keep-alive开启与客户端的会话保持
option forwardfor透传客户端真实IP至后端web服务器(在apache配置文件中加入:%{X-Forwarded-For}i后在webserer中看日志即可看到地址透传信息)
mode http | tcp设置默认工作类型,使用TCP服务器性能更好,减少压力
timeout http-keep-alive 120ssession 会话保持超时时间,此时间段内会转发到相同的后端服务器
timeout connect 120s客户端请求从haproxy到后端server最长连接等待时间(TCP连接之前)默认单位ms
timeout server 600s客户端请求从haproxy到后端服务端的请求处理超时时长(TCP连接之后),默认单位ms,如果超时,会出现502错误,此值建议设置较大些,访止502错误
timeout client 600s设置haproxy与客户端的最长非活动时间,默认单位ms,建议和timeout server相同
timeout check 5s对后端服务器的默认检测超时时间
default-server inter 1000 weight 3指定后端服务器的默认设置

        2、frontend

        bind:指定HAProxy的监听地址,可以是IPV4或IPV6,可以同时监听多个IP或端口,可同时用于listen字段中        

        格式:bind [<address>]:<port_range>[,...][param*]

[root@haproxy ~]# vim /etc/haproxy/haproxy.cfg

注意:如果需要绑定在非本机的IP,需要开启内核参数:net.ipv4.ip_nonlocal_bind=1
backlog <backlog>#针对所有server配置,当前端服务器的连接数达到上限后的后援队列长度,注意:不支持backend

        3、backend

        定义一组后端服务器,backend服务器将被frontend进行调用。

        mode http | tcp        # 指定负载协议类型,和对应的frontend必须一致

        option                      #配置选项

        sever                       #定义后端realserver,必须指定IP和端口

注意:backend 的名称必须唯一,并且必须在listen或frontend中事先定义才可以使用,否则服务无法启动

option后面加 httpchk,smtpchk,mysql-check,pgsql-check,ssl-hello-chk方法,可用于实现更多应用层检测功能。

        4、listen

        使用listen替换 frontend和backend的配置方式,可以简化设置,通常只用于TCP协议的应用

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 管好“黄金数据”,浪潮海岳助力企业释放主数据潜能
  • LVS集群中的负载均衡技术
  • springboot怎么使用Redisson
  • C#表达式编程指南: 执行表达式、解释表达式、生成表达式,翻译表达式的详解与示例
  • 【5G NAS】全球唯一临时标识符GUTI介绍
  • 准确率、召回率、f1指标计算的区别
  • MySQL:约束
  • 二十九、MongoDB(1)
  • 万界星空科技QMS系统:全面升级企业质量管理的利器
  • 用C34PRO打造一套高端性能主机
  • JavaFX布局-ButtonBar
  • 【Android】安卓四大组件之Service用法
  • QT生成.exe文件无法在未安装QT的电脑上运行的解决办法
  • CP AUTOSAR标准之DefaultErrorTracer(AUTOSAR_SWS_DefaultErrorTracer)(更新中……)
  • 视频监控汇聚平台LntonCVS视频监控管理平台解决方案和常见的接入方式
  • 分享的文章《人生如棋》
  • 【Amaple教程】5. 插件
  • Angular 响应式表单 基础例子
  • IOS评论框不贴底(ios12新bug)
  • Less 日常用法
  • SegmentFault 社区上线小程序开发频道,助力小程序开发者生态
  • tab.js分享及浏览器兼容性问题汇总
  • Vim Clutch | 面向脚踏板编程……
  • 阿里中间件开源组件:Sentinel 0.2.0正式发布
  • 关于Flux,Vuex,Redux的思考
  • 理解IaaS, PaaS, SaaS等云模型 (Cloud Models)
  • 前端面试之闭包
  • d²y/dx²; 偏导数问题 请问f1 f2是什么意思
  • [地铁译]使用SSD缓存应用数据——Moneta项目: 低成本优化的下一代EVCache ...
  • 专访Pony.ai 楼天城:自动驾驶已经走过了“从0到1”,“规模”是行业的分水岭| 自动驾驶这十年 ...
  • ​iOS实时查看App运行日志
  • # 达梦数据库知识点
  • # 飞书APP集成平台-数字化落地
  • #NOIP 2014#day.2 T1 无限网络发射器选址
  • (20050108)又读《平凡的世界》
  • (BFS)hdoj2377-Bus Pass
  • (delphi11最新学习资料) Object Pascal 学习笔记---第5章第5节(delphi中的指针)
  • (八十八)VFL语言初步 - 实现布局
  • (第三期)书生大模型实战营——InternVL(冷笑话大师)部署微调实践
  • (二十九)STL map容器(映射)与STL pair容器(值对)
  • (翻译)terry crowley: 写给程序员
  • (附源码)计算机毕业设计ssm-Java网名推荐系统
  • (七)Knockout 创建自定义绑定
  • (原創) 如何優化ThinkPad X61開機速度? (NB) (ThinkPad) (X61) (OS) (Windows)
  • (转)eclipse内存溢出设置 -Xms212m -Xmx804m -XX:PermSize=250M -XX:MaxPermSize=356m
  • (转载)Linux网络编程入门
  • (转载)PyTorch代码规范最佳实践和样式指南
  • .NET Core中如何集成RabbitMQ
  • .NET MAUI Sqlite数据库操作(二)异步初始化方法
  • .NET 的程序集加载上下文
  • .Net(C#)自定义WinForm控件之小结篇
  • .NET开源纪元:穿越封闭的迷雾,拥抱开放的星辰
  • .NET企业级应用架构设计系列之技术选型
  • .net与java建立WebService再互相调用
  • :class的用法及应用