负载均衡类型:

四层:

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

七层:

HAProxy
Nginx

硬件:

F5 https://F5.com/zh

Netscaler https://www.citrix.com.cn/products/citrix-adc

Array https://www.arraynetworks.com.cn

深信服 http://www.sangfor.com.cn

北京灵州 http://www.lingzhou.com.cn/cpzx/llfzjh

应用 场景

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

HAProxy安装及基础配置

https://www.haproxy.org/

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

https://backports.debian.org/Instructions/ debian官方的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

https://www.haproxy.org/

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

https://www.lua.org/ # lua官网





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 Balancer
After=network-online.target
Wants=network-online.target

[Service]
EnvironmentFile=-/etc/sysconfig/haproxy
Environment="CONFIG=/etc/haproxy/haproxy.cfg" "PIDFILE=/run/haproxy.pid"
ExecStartPre=/usr/local/haproxy/sbin/haproxy -f $CONFIG -c -q $OPTIONS
ExecStart=/usr/local/haproxy/sbin/haproxy -Ws -f $CONFIG -p $PIDFILE $OPTIONS
ExecReload=/usr/local/haproxy/sbin/haproxy -f $CONFIG -c -q $OPTIONS
ExecReload=/bin/kill -USR2 $MAINPID
KillMode=mixed
SuccessExitStatus=143
Type=notify

[Install]
WantedBy=multi-user.target





systemctl daemon-reload       # 重启一下system 服务






还不能启动   需要 根据上述代码中的指定的路径 创建编写配置文件
mkdir /var/lib/haproxy
mkdir /etc/haproxy
vim /etc/haproxy/haproxy.service   加入如下代码, PS企业常用配置  


——————————————————————————————————————————————————————————————————————————————————-——


global
maxconn 100000
chroot /usr/local/haproxy
stats socket /var/lib/haproxy/haproxy.sock mode 600 level admin
uid 99
gid 99
daemon
#nbproc 4
#cpu-map 1 0
#cpu-map 2 1
#cpu-map 3 2
#cpu-map 4 3
#nbthread 4
spread-checks 5
pidfile /var/lib/haproxy/haproxy.pid
log 127.0.0.1 local3 info


defaults
option redispatch
#option abortonclose
option http-keep-alive
option forwardfor
maxconn 100000
mode http
timeout connect 30s
timeout client 60ms
timeout 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









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 1
stats 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 3
nbthread 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


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 开启当前后端服务器的转发

 

haproxy-详解的更多相关文章

  1. HAProxy详解(三):基于虚拟主机的HAProxy负载均衡系统配置实例【转】

    一.基于虚拟主机的HAProxy负载均衡系统配置实例 1.通过HAProxy的ACL规则配置虚拟主机: 下面将通过HAProxy的ACL功能配置一套基于虚拟主机的负载均衡系统.这里操作系统环境为:Ce ...

  2. HAProxy详解(二):HAProxy基础配置与应用实例

    一.HAProxy基础配置与应用实例: 1.快速安装HAProxy集群软件: HAProxy的官网: https://www.haproxy.org/#down下载HAProxy的源码包. 安装: [ ...

  3. HAProxy详解(一):HAProxy介绍【转】

    一.高性能负载均衡软件HAProxy介绍: 随着互联网业务的迅猛发展,大型电商平台和门户网站对系统的可用性和可靠性要求越来越高,高可用集群.负载均衡集群成为一种热门的系统架构解决方案.在众多的负载均衡 ...

  4. http反向代理之haproxy详解

    1.反向代理定义 反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求 ...

  5. 项目详解4—haproxy 详解

    一.企业服务架构图及负载均衡的要求 1.场景说明 在企业生产环境中,每天会有很多的需求变更,比如增加服务器.新业务上线.url路由修改.域名配置等等,对于前端负载均衡设备来说,容易维护,复杂度低,是首 ...

  6. Nginx,LVS,HAProxy详解

    Nginx/LVS/HAProxy负载均衡软件的优缺点详解 PS:Nginx/LVS/HAProxy是目前使用最广泛的三种负载均衡软件,本人都在多个项目中实施过,参考了一些资料,结合自己的一些使用经验 ...

  7. HAProxy详解

    HAProxy概述与配置 一.HAProxy概述 HAProxy是由 WillyTarreau开发的一款具备高可用性.负载均及基于 TCP和 HTTP的应用代理开源软件,基于HAProxy的负载均衡架 ...

  8. Haproxy均衡负载部署和配置文件详解

    HAproxy均衡负载部署和配置文件详解 HAProxy提供高可用性.负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费.快速并且可靠的一种解决方案.根据官方数据,其最高极限支持10G ...

  9. 负载均衡之Haproxy配置详解(及httpd配置)

    下图描述了使用keepalived+Haproxy主从配置来达到能够针对前段流量进行负载均衡到多台后端web1.web2.web3.img1.img2.但是由于haproxy会存在单点故障问题,因此使 ...

  10. haproxy 安装与配置文件详解

    本文主要阐述haproxy的安装配置详解,对于它的概念,作用,功能,和其它LB软件的区别,优点,缺点等不再进行说明. 一. haproxy 的安装配置 # cat /etc/redhat-releas ...

随机推荐

  1. day12 函数嵌套

    day12 函数嵌套 一. args与kwargs def index(a,b,c): print(a,b,c) def wrapper(*args,**kwargs): # args=(1,2,3) ...

  2. 【leetcode】917. Reverse Only Letters(双指针)

    Given a string s, reverse the string according to the following rules: All the characters that are n ...

  3. 最长公共子序列问题(LCS) 洛谷 P1439

    题目:P1439 [模板]最长公共子序列 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 关于LCS问题,可以通过离散化转换为LIS问题,于是就可以使用STL二分的方法O(nlogn ...

  4. C语言中的使用内存的三段

    1.正文段即代码和赋值数据段 一般存放二进制代码和常量 2.数据堆段 动态分配的存储区在数据堆段 3.数据栈段 临时使用的变量在数据栈段 典例 若一个进程实体由PCB.共享正文段.数据堆段和数据栈段组 ...

  5. 隐藏状态栏后tableview自动上移20个像素的问题

    最近在开发过程中碰到一个很奇怪的问题,将状态栏隐藏掉之后,页面上的tableView会自动上移20个像素. 这是因为在iOS7.0之后,系统会自动调整scrollView的layout 和 conte ...

  6. CURD系统怎么做出技术含量惊艳面试官

    在<CURD系统怎么做出技术含量--怎样引导面试>有朋友开玩笑说都用上了领域驱动了,就不叫CURD系统了吧.这里我解释一下,怕大家对DDD领域驱动设计有什么误解. DDD是为解决软件复杂性 ...

  7. 『学了就忘』Linux服务管理 — 75、Linux系统中的服务

    目录 1.服务的介绍 2.Windows系统中的服务 3.Linux系统中服务的分类 4.独立的服务和基于xinetd服务的区别 5.如何查看一个服务是独立的服务还是基于xinetd的服务 (1)查看 ...

  8. Python __new__ 方法解释与使用

    解释 我们通常把 __init__ 称为构造方法,这是从其他语言借鉴过来的术语. 其实,用于构建实例的是特殊方法 __new__:这是个类方法(使用特殊方式处理,因此不必使用 @classmethod ...

  9. [BUUCTF]REVERSE——[2019红帽杯]easyRE

    [2019红帽杯]easyRE 附件 步骤: ida载入,没有main函数,就先检索了程序里的字符串 发现了base64加密的特征字符串,双击you found me跟进,找到了调用它的函数,函数很长 ...

  10. 保留重复项(Power Query 之 M 语言)

    数据源: "姓名""基数""个人比例""个人缴纳""公司比例""公司缴纳"&qu ...