haproxy-详解

四层:

LVS (Linux Virtual Server)HAProxy (High Availability Proxy)Nginx (1.9以上)

七层:

HAProxyNginx

硬件:

四层: Redis   Mysql  rabbitmq  memcache 等七层: nginx   tomcat  apache  php   图片  动静分离  API 等

debian apt 安装

如图所示按自己的 debian 版本 和 需要安装的 haproxy 版本 自行选择

安装最新长期稳定版 debian 需要导入一个新包的配置不知道咋回事 haproxy 官方的给的代码  上图中  是错误的需要 vim /etc/apt/sources.list.d/backports.list插入下面一行代码deb http://deb.debian.org/debian bullseye-backports main       #debian官方给的​apt update    更新一下源apt install -t bullseye-backports haproxy=2.4.\*     安装的时候需要指定  -t  bullseye-backports​

ubuntu apt 安装

如图所示  按照自己的 ubuntu 版本  和  所需的haproxy 版本 自行选择

centos7 yum 安装

CentOS 中yum安装版本太低,是1.5版本

可以添加yum源

使用其他的yum源,我们这里就使用IUS源。

IUS is a yum repository that provides newer versions of select software for RHEL and CentOS.

它为CentOS按RHEL提供最新软件版本的yum源。

vim /etc/yum.repos.d/ius-7.repo​​​[ius]​name = IUS for Enterprise Linux 7 - $basearch​baseurl = https://repo.ius.io/7/$basearch/​enabled = 1​repo_gpgcheck = 0​gpgcheck = 1​gpgkey = https://repo.ius.io/RPM-GPG-KEY-IUS-7​[ius-debuginfo]​name = IUS for Enterprise Linux 7 - $basearch - Debug​baseurl = https://repo.ius.io/7/$basearch/debug/​enabled = 0​repo_gpgcheck = 0​gpgcheck = 1​gpgkey = https://repo.ius.io/RPM-GPG-KEY-IUS-7​[ius-source]​name = IUS for Enterprise Linux 7 - Source​baseurl = https://repo.ius.io/7/src/​enabled = 0​repo_gpgcheck = 0​gpgcheck = 1​gpgkey = https://repo.ius.io/RPM-GPG-KEY-IUS-7​​​清理缓存:yum clean all更新缓存:yum makecache fast​​

编译安装 centos7

点击Latest version 选择 源码包的 版本

​​​​yum install gcc openssl-devel readline-devel systemd-devel make pcre-devel  #依赖包​​​wget https://www.haproxy.org/download/2.3/src/haproxy-2.3.16.tar.gz   #右键点击复制连接 ​curl https://www.lua.org/ftp/lua-5.3.5.tar.gz > lua-5.3.5.tar.gz  #haproxy如果编译开启lua 需要安装lua ​tar xf lua-5.3.5.tar.gz -C /usr/local/src/        #解压lua   ​cd /usr/local/src/lua-5.3.5  ​make INSTALL_TOP=/usr/local/lua-5.3.5 linux install   #安装lua ​​​​​tar xf haproxy-2.2.19.tar.gz -C /usr/local/src/     #解压haproxy ​cd  /usr/local/src/haproxy-2.2.19/    ​编译参数: 可以查看当前目录里边的 INSTALL  和  README  文件   看需求编译​​​make -j $(nproc) TARGET=linux-glibc                 USE_OPENSSL=1 USE_ZLIB=1 USE_LUA=1 USE_PCRE=1 USE_SYSTEMD=1 LUA_INC=/usr/local/lua-5.3.5/include LUA_LIB=/usr/local/lua-5.3.5/lib     ​make PREFIX=/usr/local/haproxy-2.2.19 install     #编译安装ln -sv /usr/local/haproxy-2.2.19/ /usr/local/haproxy    #做个软连接​​​​用 systemd 管理 haproxy ​vim /usr/lib/systemd/system/haproxy.service    #加入如下代码,或者用yum 安装一个 直接照抄 修改一些关键属性  ​[Unit]Description=HAProxy Load BalancerAfter=network-online.targetWants=network-online.target​[Service]EnvironmentFile=-/etc/sysconfig/haproxyEnvironment="CONFIG=/etc/haproxy/haproxy.cfg" "PIDFILE=/run/haproxy.pid"ExecStartPre=/usr/local/haproxy/sbin/haproxy -f $CONFIG -c -q $OPTIONSExecStart=/usr/local/haproxy/sbin/haproxy -Ws -f $CONFIG -p $PIDFILE $OPTIONSExecReload=/usr/local/haproxy/sbin/haproxy -f $CONFIG -c -q $OPTIONSExecReload=/bin/kill -USR2 $MAINPIDKillMode=mixedSuccessExitStatus=143Type=notify​[Install]WantedBy=multi-user.target​​​​​systemctl daemon-reload       # 重启一下system 服务​​​​​​还不能启动   需要 根据上述代码中的指定的路径 创建编写配置文件 mkdir /var/lib/haproxymkdir /etc/haproxyvim /etc/haproxy/haproxy.service   加入如下代码, PS企业常用配置  ​​——————————————————————————————————————————————————————————————————————————————————-——​​globalmaxconn 100000chroot /usr/local/haproxystats socket /var/lib/haproxy/haproxy.sock mode 600 level adminuid 99gid 99daemon#nbproc 4#cpu-map 1 0#cpu-map 2 1#cpu-map 3 2#cpu-map 4 3#nbthread 4spread-checks 5pidfile /var/lib/haproxy/haproxy.pidlog 127.0.0.1 local3 info​​defaultsoption  redispatch#option  abortoncloseoption  http-keep-aliveoption  forwardformaxconn 100000mode httptimeout connect 30stimeout client  60mstimeout server  60ms​​​listen stats mode http bind 0.0.0.0:9999 stats enable log global stats uri  /haproxy-status stats auth luoluo:angel4239360​​————————————————————————————————-————————————————————-——————--——​systemctl start haproxy​​​​​​​​​​
global             #全局配置maxconn 100000        #单个进程的最大并发数,建议调大一点​​最大连接数chroot /usr/local/haproxy                                            #锁定运行目录#stats socket /var/lib/haproxy/haproxy.sock mode 600 level admin  #没有多进程用这个stats socket /var/lib/haproxy/haproxy.sock1 mode 600 level admin process 1stats socket /var/lib/haproxy/haproxy.sock2 mode 600 level admin process 2这样写, 防止开启多进程模式下,服务器上线,下线时,利用 socat 动态关闭,开启,或者更改 权重时,会有其他进程没有关掉,或开启。用socat关闭或者开启的时候要把多个sock全都关闭或者开启 (通俗来说就是多个人干活,我只通知了一个人,其他人不知道)​uid 99      #nobody  用户gid 99       daemon          #已守护进程方式运行spread-checks 5    #后端server状态check随机提前或延迟百分比时间,建议2-5(20%-50%)之间#nbproc 4        # 相当于 nginx 的绑定 cpu  开启多进程  cpu-map 表示哪个进程绑定在哪个cpu上#cpu-map 1 0#cpu-map 2 1#cpu-map 3 2#cpu-map 4 3nbthread 4       # 表示开启多个线程   跟nbproc是冲突的,只能选择一个    建议开启多进程的,除非单核资源有限 #pidfile /var/lib/haproxy/haproxy.pid     #pid 文件指定路径log 127.0.0.1 local3 info    ​​defaults    #默认设置模块,如果后边写到了这里就不生效了option  redispatch     #当server ID对应的服务器挂掉后,强制定向到其他健康的服务器,重新派发#option  abortonclose   #当服务器负载很高的时候,自动结束掉当前队列处理比较久的连接   不建议开启,看具体需求option  http-keep-alive  #开启会话保持option  forwardfor      #透传客户端真实IP至后端web服务器maxconn 100000     # 单个进程的最大并发数,建议调大一点mode http     #设置默认工作类型timeout http-keep-alive 120s      # session 会话保持超时时间,范围内会转发到相同的后端服务器timeout connect 30s  # 客户端请求从 haproxy 到后端 server 的最长连接等待时间 (TCP之前)timeout client  60s   #设置 haproxy 与客户端的最长非活动时间  timeout server  60s # 客户端请求从 haproxy 到后端服务器的请求处理时长 (TCP之后)timeout check  5s   #对后端服务器的默认检测超时时间              ​​​listen stats            这一段页面监控 mode http   bind 0.0.0.0:9999 stats enable log global stats uri  /haproxy-status stats auth luoluo:angel4239360​​​​​​frontend  WEB_PORT         负载后端服务器 第一种 写法    不常用  建议用下面的 bind  :80 use_backend  luoluo-host​backend  luoluo-host  server web1 192.168.154.129:80  check addr 192.168.154.129 port 80 inter 2s  fall 3 rise 5​​​​listen luo                     负载后端服务器  第二种写法   建议用这种  bind 192.168.154.173:2333   server web1 192.168.154.129:80 weight 1 check addr 192.168.154.129 port 80 inter 2s fall 3 rise 5   server diertai 192.168.154.172:80 weight 1 check inter 2s fall 3 rise 5​​​​​​​
​socat 动态更改的操作,会在 haproxy 重启,或者reload 时 失效,以配置文件为准​​​socat - /var/lib/haproxy/haproxy.sock   #交互式操作for i in seq 5;do socat - /var/lib/haproxy/haproxy.sock ; done   #循环操作echo "help" | socat stdio /var/lib//haproxy/haproxy.sock   #查看帮助信息echo "get weight luoluo-host/web1" | socat stdio /var/lib//haproxy/haproxy.sock  查看当前服务器的权重echo "set weight luoluo-host/web1 5" | socat stdio /var/lib//haproxy/haproxy.sock  更改当前服务器的权重,静态算法不支持更改echo "set disable server luoluo-host/web1" | socat stdio /var/lib//haproxy/haproxy.sock   关闭当前后端服务器的转发echo "set enable server luoluo-host/web1" | socat stdio /var/lib//haproxy/haproxy.sock  开启当前后端服务器的转发​

Original: https://www.cnblogs.com/luoluo160717/p/15750972.html
Author: 不用去猜。
Title: haproxy-详解

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/524220/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • PHP利用Apache、Nginx的特性实现免杀Webshell

    环境函数用法 nginx get_defined_vars() 返回由所有已定义变量所组成的数组 apache getallheaders() 获取全部 HTTP 请求头信息 ap…

    Linux 2023年5月28日
    076
  • tomcat上部署jenkins

    tomcat上部署jenkins tomcat上部署jenkins 部署tomcat 部署jenkins Jenkins创建流水线任务 主机名称 IP地址 需要的应用服务 工具包 …

    Linux 2023年6月6日
    097
  • Error: Unable to access jarfile 运行jar包报错

    1、可能是执行路径有误 错误 修改后,需使用绝对路径 2、决解1后,还报以下错误,就是你的安装的JDK与jar包中的JDK不是同一版本。idea中有自带的JDK与我们安装的JDK版…

    Linux 2023年6月14日
    0914
  • CH9344 Windows驱动安装与GPIO使用教程

    USB 转四串口芯片 CH9344 用于为 USB 主机扩展 4 路高速异步串口,支持串口波特率高达 12Mbps。芯片内部高度集成,外围精简,提供 VIO 电源引脚,部分串口 I…

    Linux 2023年6月7日
    079
  • Kasini3000 batch modify the password for windows node

    https://gitee.com/chuanjiao10/kasini3000 win,linux devops automation batch script framewor…

    Linux 2023年6月13日
    094
  • windows 挂载 NFS共享

    实验环境: NFS主机(192.168.18.10):CentOS7.0 软件包:nfs-utils、rpcbind; 客户机(192.168.18.41):windows ser…

    Linux 2023年5月27日
    0201
  • 一道诡异的考试题

    题目: 给定$a$张黑牌,$b$白牌,甲,乙两人按以下顺序抽牌: 甲抽一张,乙抽一张,然后弃去一张,然后重复以上过程。 先抽到黑牌者胜,求甲和乙获胜的概率$mod 10045358…

    Linux 2023年6月6日
    080
  • Python垃圾回收和Linux Copy-on-Write机制

    前言 在口袋助理看到了其他部门的同事针对Python2内存占用做的一点优化工作,自己比较感兴趣,遂记录下。 Linux fork简介 fork是Linux提供的创建子进程的系统调用…

    Linux 2023年6月7日
    0122
  • 如何搭建android源代码repo仓库

    .版本: v0.3作者:河东西望日期:2022-7-5. 如果你的开发是基于AOSP源码来建仓,那么搭建repo服务器和部署自己的repo仓库就是非常必要的工作了。 现实中很多公司…

    Linux 2023年6月7日
    073
  • k8s/kubeadm 生产环境高可用集群部署

    kubeadm 生产环境集群部署 基本环境配置 kubeadm 安装方式自 1.14 版本以后,安装方法几乎没有任何变化,此文档可以尝试安装最新的 k8s 集群, centos 采…

    Linux 2023年6月14日
    092
  • 02-MySQL关键字、Select语句执行顺序

    SQL关键字 1、分页 MySQL的分页关键词是 limit SELECT * FROM student LIMIT 2,6:查询学生表中的数据,从第三条开始,显示6条数据 2、分…

    Linux 2023年6月7日
    081
  • Linux下如何部署FTP服务器

    FTP 是 File Transfer Protocol 的缩写,即文件传输协议,它通过网络在服务器和客户端之间传输文件,现在已经成为一种广泛使用的标准工具 vsftpd 是 ve…

    Linux 2023年6月13日
    086
  • 读《软件测试的艺术》——第一章

    《软件测试的艺术》作为元老级别的测试理论书籍,在业内非常经典且有口皆碑,书中提出的 软件测试为求错而非求证的观点至今仍在学术界被广泛讨论。本书还为计算机界一个最为重要的主题提供了一…

    Linux 2023年6月13日
    096
  • 学习一下 SpringCloud (六)– 注册中心与配置中心 Nacos、网关 Gateway

    (1) 相关博文地址: 学习一下 SpringCloud (一)– 从单体架构到微服务架构、代码拆分(maven 聚合): https://www.cnblogs.com/l-y…

    Linux 2023年6月14日
    0120
  • 操作系统实现-boot.asm实现

    博客网址:www.shicoder.top微信:18223081347欢迎加群聊天 :452380935 这一次我们进入操作系统实现的真实编码, 这一次主要是完善对boot.asm…

    Linux 2023年6月13日
    0127
  • STM32CubeIDE学习记录(按键点灯工程)

    博主使用的开发板以及相关外设连接如下: 芯片型号为: STM32F103RCT6, 新建STM32CubeIDE项目 配置完成后会生成相应的文件并进入如下界面: 使用外部晶振时钟 …

    Linux 2023年6月14日
    0128
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球