Ubuntu 22.04 安装HA-proxy

官网
资料

# 更新系统包列表:
sudo apt update
# 安装 HAproxy
sudo apt install haproxy -y
# 验证安装
haproxy -v   #  如下图

在这里插入图片描述

配置 Haproxy

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

##### 基于IP的访问控制
acl ctrl_ip src 172.25.254.1  172.25.254.20  192.168.0.0/24 # 这里可以写具体的IP地址也可以写网段#####  拒绝IP访问acl ctrl_ip src 172.25.254.1  172.25.254.20  192.168.0.0/24http-request deny if ctrl_ip## # 基于浏览器类型的访问控制
acl badwebbrowers hdr_sub(User-Agent) -i curl wget
http-request deny if badwebbrowers##基于后缀名实现动静分离acl static path_end -i .html .jpg .png .css .js  # 静态 acl php    path_end -i .php  # 动态use_backend webcluster-host if php use_backend webxx-host if static 

在这里插入图片描述

路径:

vim /etc/haproxy/haproxy.cfg

# 全局配置
globallog /dev/log local0 info         # 日志输出到syslog,定义日志输出方式,支持 local0-local7 级别info maxconn 4096                     # 每个进程最大连接数 user haproxy                     # 运行用户group haproxy                    # 运行组daemon                           # 以守护进程方式运行 nbproc 1                         # 进程数(建议单进程,多核可调整)stats socket /run/haproxy/admin.sock mode 660 level admin  # 管理接口 tune.ssl.default-dh-param 2048    # SSL默认DH参数 ssl-default-bind-ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256  # 加密套件 
# 默认配置
defaultsmode http                        # 默认模式(http/tcp/health)http是7层   tcp 4层  设置默认工作类型,使用TCP更好,减少压力option httplog                   # 记录HTTP日志 option dontlognull               # 不记录空连接(如健康检查)# IP 穿透option forwardfor                # 添加X-Forwarded-For头 透传客户端RIP至后端web服务器option redispatch                # 服务不可用后的操作,重定向到其它健康的服务器option abortonclose              # 当服务器负载很高时,自动结束掉当前队列处理比较久的连接,针对业务情况选择开启option http-keep-alive           # 开启与客户端的会话保持option http-server-close           # 服务端关闭连接,客户端保持长连接 option http-pretend-keepalive      # 伪装长连接(解决某些服务器兼容性问题)option forceclose                  # 强制关闭连接(兼容性差时使用) 确保连接立即释放,但增加开销timeout connect 10s              # 连接后端超时 timeout client 30s               # 客户端超时 timeout server 30s               # 服务器响应超时 retries 3                        # 失败重试次数 stats uri   /haproxystats auth 用户名:  密码
# 前端配置
frontend http_in# 监听80端口bind *:80                       # HTTPS配置 bind *:443 ssl crt /etc/haproxy/certs/example.com.pem log: global# httplog   日志模板options: httplog# ACL规则:路径匹配   ACL(Access Control List)# hdr(host):匹配域名# path_beg:匹配URL路径前缀 acl is_static path_beg -i /static  use_backend static_servers if is_static  # 根据ACL选择后端 default_backend dynamic_servers  # 默认后端http-request set-header X-Real-IP %[src]  # 设置真实IP头 
# 后端配置
backend dynamic_servers# 模式mode http# 轮询算法(默认)balance roundrobin     # 会话保持(基于Cookie)        cookie SERVERID insert indirect nocache  # 健康检查与最大连接 #》》》》》》》》》真实的服务器,真正提供服务的 # server 名称  域名|IP:Port   server s1 192.168.1.10:80 check maxconn 100  weight 1 # 备用服务器 当上面一个不工作,这个才顶上server s2 192.168.1.11:80 check backup    backend static_serversbalance leastconn   # 最小连接数算法 server static1 192.168.1.20:80 check
# 健康检查
backend app_serversoption httpchk GET /health      # HTTP健康检查 # inter:检查间隔 每隔5秒发送检查请求,连续2次成功标记为健康,3次失败标记为故障。‌‌server app1 192.168.1.30:8080 check inter 5s rise 2 fall 3# 监控界面
listen statsbind *:8404                    # 监控端口stats enablestats uri /haproxy_stats       # 访问路径stats auth admin:password      # 认证 stats hide-version             # 隐藏版本信息 

》》》配置完之后 重启 Haproxy

sudo systemctl restart haproxy
补充几个常用命令
sudo systemctl enable haproxy 开机启动
sudo systemctl status haproxy 查看状态
sudo systemctl stop haproxy 停止
sudo systemctl start haproxy 开启
sudo systemctl reload haproxy 修改配置之后 可以重新加载

# docker-compose.yml
# docker compose up -d
services:tomcat1:image: tomcat:latestcontainer_name: tomcat1ports:- 8081:8080tomcate2:image: tomcat:latestcontainer_name: tomcat2ports:- 8082:8080

》》》检测8081、8082 直接访问 正常
在这里插入图片描述
在这里插入图片描述

通过Haproxy 负载均衡

globallog /dev/log	local0log /dev/log	local1 noticechroot /var/lib/haproxystats socket /run/haproxy/admin.sock mode 660 level adminstats timeout 30suser haproxygroup haproxydaemon# Default SSL material locationsca-base /etc/ssl/certscrt-base /etc/ssl/private# See: https://ssl-config.mozilla.org/#server=haproxy&server-version=2.0.3&config=intermediatessl-default-bind-ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384ssl-default-bind-ciphersuites TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256ssl-default-bind-options ssl-min-ver TLSv1.2 no-tls-ticketsdefaultslog	globalmode	httpoption	httplogoption	dontlognulltimeout connect 5000timeout client  50000timeout server  50000errorfile 400 /etc/haproxy/errors/400.httperrorfile 403 /etc/haproxy/errors/403.httperrorfile 408 /etc/haproxy/errors/408.httperrorfile 500 /etc/haproxy/errors/500.httperrorfile 502 /etc/haproxy/errors/502.httperrorfile 503 /etc/haproxy/errors/503.httperrorfile 504 /etc/haproxy/errors/504.http
# 监控界面配置
listen statsbind *:8404stats enablestats uri /statsstats refresh 10sstats auth admin:password  # 替换为你的用户名和密码stats admin if TRUE# 前端HTTP配置
frontend http_frontbind *:80acl is_http url_reg \.jsp$use_backend http_servers if is_httpdefault_backend http_servers# 后端服务器配置
backend http_serversbalance roundrobincookie SERVERID insert indirect nocacheserver server1 172.30.xxx.XX :8081 check cookie server1server server2 172.30.XX.XX:8082 check cookie server2

在这里插入图片描述
在这里插入图片描述

监控界面

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/82841.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/82841.shtml
英文地址,请注明出处:http://en.pswp.cn/web/82841.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

轻创业技术方案:基于格行双目摄像头的代理系统设计!低成本创业项目有哪些?2025轻资产创业项目排行榜前十名!0成本创业项目推荐!格行代理项目靠谱吗?

没本金,没资源,没人脉,想挣钱且有持续稳定的现金流,只有一条路就是轻创业!这里说个表哥的真实创业故事。 我表哥90后,普通农村人,中专毕业跟朋友一起外出打工,刚开始也是吃喝玩乐不…

【推荐算法】Embedding+MLP:TensorFlow实现经典深度学习推荐模型详解

EmbeddingMLP:TensorFlow实现经典深度学习模型详解 1. 算法逻辑模型结构和工作流程关键组件 2. 算法原理与数学推导Embedding层原理MLP前向传播反向传播与优化 3. 模型评估常用评估指标评估方法 4. 应用案例:推荐系统CTR预测问题描述模型架构性能优化 5.…

黑马点评【基于redis实现共享session登录】

目录 一、基于Session实现登录流程 1.发送验证码: 2.短信验证码登录、注册: 3.校验登录状态: 4.session共享问题 4.1为什么会出现 Session 集群共享问题? 4.2常见解决方案 1. 基于 Cookie 的 Session(客户端存储&#xff0…

Python读取阿里法拍网的html+解决登录cookie

效果图 import time from selenium import webdriver from selenium.webdriver.chrome.options import Options from selenium.webdriver.chrome.service import Service from webdriver_manager.chrome import ChromeDriverManager from lxml import etreedef get_taobao_auct…

【win | docker开启远程配置】使用 SSH 隧道访问 Docker的前操作

在主机A pycharm如何连接远程主机B win docker? 需要win docker配置什么? 快捷配置-主机B win OpenSSH SSH Server https://blog.csdn.net/z164470/article/details/121683333 winR,打开命令行,输入net start sshd,启动SSH。 或者右击我的电脑&#…

Cursor生成Java的架构设计图

文章目录 整体说明一、背景二、前置条件三、生成 Promt四、结果查看五、结果编辑 摘要: Cursor生成Java的架构设计图 关键词: Cursor、人工智能 、开发工具、Java 架构设计图 整体说明 Cursor 作为现在非常好用的开发工具,非常的火爆&#…

1Panel运行的.net程序无法读取系统字体(因为使用了docker)

问题来源 我之前都是使用的宝塔面板,之前我也部署过我的程序,就没有什么问题,但是上次我部署我的程序的时候,就提示无法找到字体Arial。 我的程序中使用该字体生成验证码。 我多次安装了微软的字体包,但是依旧没有效…

面试总结。

一、回流(重排)与重绘(Repaint) 优化回答: 概念区分: 回流(Reflow/Relayout):当元素的几何属性(如宽高、位置、隐藏 / 显示)发生改变时&#xff…

TensorFlow深度学习实战(20)——自组织映射详解

TensorFlow深度学习实战(20)——自组织映射详解 0. 前言1. 自组织映射原理2. 自组织映射的优缺点3. 使用自组织映射实现颜色映射小结系列链接 0. 前言 自组织映射 (Self-Organizing Map, SOM) 是一种无监督学习算法,主要用于高维数据的降维、…

Go内存泄漏排查与修复最佳实践

一、引言 即使Go语言拥有强大的垃圾回收机制,内存泄漏仍然是我们在生产环境中经常面临的挑战。与传统印象不同,垃圾回收并不是万能的"记忆清道夫",它只能处理那些不再被引用的内存,而无法识别那些仍被引用但实际上不再…

LeetCode刷题 -- 542. 01矩阵 基于 DFS 更新优化的多源最短路径实现

LeetCode刷题 – 542. 01矩阵 基于 DFS 更新优化的多源最短路径实现 题目描述简述 给定一个 m x n 的二进制矩阵 mat,其中: 每个元素为 0 或 1返回一个同样大小的矩阵 ans,其中 ans[i][j] 表示 mat[i][j] 到最近 0 的最短曼哈顿距离 算法思…

MySQL用户远程访问权限设置

mysql相关指令 一. MySQL给用户添加远程访问权限1. 创建或者修改用户权限方法一:创建用户并授予远程访问权限方法二:修改现有用户的访问限制方法三:授予特定数据库的特定权限 2. 修改 MySQL 配置文件3. 安全最佳实践4. 测试远程连接5. 撤销权…

如何使用 BPF 分析 Linux 内存泄漏,Linux 性能调优之 BPF 分析内核态、用户态内存泄漏

写在前面 博文内容为 通过 BCC 工具集 memleak 进行内存泄漏分析的简单认知包括 memleak 脚本简单认知,内核态(内核模块)、用户态(Java,Python,C)内存跟踪泄漏分析 Demo理解不足小伙伴帮忙指正 😃,生活加油知其不可奈何而安之若命,德之至也。----《庄子内篇人间世》 …

谷歌Sign Gemma: AI手语翻译,沟通从此无界!

嘿,朋友们!想象一下,语言不再是交流的障碍,每个人都能顺畅表达与理解。这听起来是不是很酷?谷歌最新发布的Sign Gemma AI模型,正朝着这个激动人心的未来迈出了一大步!它就像一位随身的、不知疲倦…

全生命周期的智慧城市管理

前言 全生命周期的智慧城市管理。未来,城市将在 实现从基础设施建设、日常运营到数据管理的 全生命周期统筹。这将避免过去智慧城市建设 中出现的“碎片化”问题,实现资源的高效配 置和项目的协调发展。城市管理者将运用先进 的信息技术,如物…

最新Spring Security实战教程(十七)企业级安全方案设计 - 多因素认证(MFA)实现

🌷 古之立大事者,不惟有超世之才,亦必有坚忍不拔之志 🎐 个人CSND主页——Micro麦可乐的博客 🐥《Docker实操教程》专栏以最新的Centos版本为基础进行Docker实操教程,入门到实战 🌺《RabbitMQ》…

logstash拉取redisStream的流数据,并存储ES

先说结论, window验证logstash截至2025-06-06 是没有原生支持的。 为啥考虑用redisStream呢?因为不想引入三方的kafka等组件, 让服务部署轻量化, 所以使用现有的redis来实现, 为啥不用list呢? 已经用strea…

IEC 61347-1:2015 灯控制装置安全通用要求详解

IEC 61347-1:2015 灯控制装置安全通用要求详解 IEC 61347-1:2015《灯控制装置 第1部分:一般要求和安全要求》是国际电工委员会(IEC)制定的关于灯控制装置安全性能的核心基础标准。它为各类用于启动和稳定工作电流的灯控制装置(如…

26、跳表

在C标准库中,std::map 和 std::set 是使用红黑树作为底层数据结构的容器。 红黑树是一种自平衡二叉搜索树,能够保证插入、删除和查找操作的时间复杂度为O(log n)。 以下是一些使用红黑树的C标准库容器: std::map:一种关联容器&a…

LabVIEW音频测试分析

LabVIEW通过读取指定WAV 文件,实现对音频信号的播放、多维度测量分析功能,为音频设备研发、声学研究及质量检测提供专业工具支持。 主要功能 文件读取与播放:支持持续读取示例数据文件夹内的 WAV 文件,可实时播放音频以监听被测信…