当前位置: 首页 > 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视频监控管理平台解决方案和常见的接入方式
  • Angular 2 DI - IoC DI - 1
  • gulp 教程
  • Invalidate和postInvalidate的区别
  • Lucene解析 - 基本概念
  • Redis 中的布隆过滤器
  • vue-router的history模式发布配置
  • 爬虫模拟登陆 SegmentFault
  • 微信小程序实战练习(仿五洲到家微信版)
  • 为视图添加丝滑的水波纹
  • 走向全栈之MongoDB的使用
  • MPAndroidChart 教程:Y轴 YAxis
  • 国内唯一,阿里云入选全球区块链云服务报告,领先AWS、Google ...
  • ​14:00面试,14:06就出来了,问的问题有点变态。。。
  • ​人工智能之父图灵诞辰纪念日,一起来看最受读者欢迎的AI技术好书
  • "无招胜有招"nbsp;史上最全的互…
  • #pragma预处理命令
  • (13)Latex:基于ΤΕΧ的自动排版系统——写论文必备
  • (3)STL算法之搜索
  • (C语言)球球大作战
  • (八)五种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (附源码)ssm航空客运订票系统 毕业设计 141612
  • (规划)24届春招和25届暑假实习路线准备规划
  • (黑马C++)L06 重载与继承
  • (回溯) LeetCode 40. 组合总和II
  • (三)uboot源码分析
  • (未解决)macOS matplotlib 中文是方框
  • (转)大道至简,职场上做人做事做管理
  • (自用)gtest单元测试
  • **Java有哪些悲观锁的实现_乐观锁、悲观锁、Redis分布式锁和Zookeeper分布式锁的实现以及流程原理...
  • .helper勒索病毒的最新威胁:如何恢复您的数据?
  • .NET 程序如何获取图片的宽高(框架自带多种方法的不同性能)
  • .Net 路由处理厉害了
  • .Net 中的反射(动态创建类型实例) - Part.4(转自http://www.tracefact.net/CLR-and-Framework/Reflection-Part4.aspx)...
  • .NET设计模式(2):单件模式(Singleton Pattern)
  • .Net下的签名与混淆
  • .NET周刊【7月第4期 2024-07-28】
  • .xml 下拉列表_RecyclerView嵌套recyclerview实现二级下拉列表,包含自定义IOS对话框...
  • 。。。。。
  • @Conditional注解详解
  • @for /l %i in (1,1,10) do md %i 批处理自动建立目录