四层:
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 - $basearchbaseurl = https://repo.ius.io/7/$basearch/enabled = 1repo_gpgcheck = 0gpgcheck = 1gpgkey = https://repo.ius.io/RPM-GPG-KEY-IUS-7[ius-debuginfo]name = IUS for Enterprise Linux 7 - $basearch - Debugbaseurl = https://repo.ius.io/7/$basearch/debug/enabled = 0repo_gpgcheck = 0gpgcheck = 1gpgkey = https://repo.ius.io/RPM-GPG-KEY-IUS-7[ius-source]name = IUS for Enterprise Linux 7 - Sourcebaseurl = https://repo.ius.io/7/src/enabled = 0repo_gpgcheck = 0gpgcheck = 1gpgkey = 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.targetsystemctl 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 infodefaultsoption redispatch#option abortoncloseoption http-keep-aliveoption forwardformaxconn 100000mode httptimeout connect 30stimeout client 60mstimeout server 60mslisten 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:angel4239360frontend WEB_PORT 负载后端服务器 第一种 写法 不常用 建议用下面的 bind :80 use_backend luoluo-hostbackend luoluo-host server web1 192.168.154.129:80 check addr 192.168.154.129 port 80 inter 2s fall 3 rise 5listen 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/611461/
转载文章受原作者版权保护。转载请注明原作者出处!