当前位置: 首页 > news >正文

搭建HAProxy高可用负载均衡系统

一、HAProxy简介

Haproxy 是一个使用C语言编写的自由及开放源代码软件,其提供高可用性、负载均衡,以及==基于TCP和HTTP==的应用程序代理。

haproxy优点
1. Haproxy支持两种代理模式 TCP(四层)和HTTP(七层),也是支持虚拟主机的。
2. Haproxy的优点能够补充Nginx的一些缺点,比如支持Session的保持,Cookie的引导;同时支持通过获取指定的url来检测后端服务器的状态。
3. Haproxy跟LVS类似,本身就只是一款负载均衡软件;单纯从效率上来讲Haproxy会比Nginx有更出色的负载均衡速度,在并发处理上也是优于Nginx的。
4. Haproxy支持TCP协议的负载均衡转发,可以对MySQL读进行负载均衡,对后端的MySQL节点进行检测和负载均衡,大家可以用LVS+Keepalived对MySQL主从做负载均衡。
5. HAProxy负载均衡策略非常多:Round-robin(轮循)、Weight-round-robin(带权轮循)、source(原地址保持)、RI(请求URL)、rdp-cookie(根据cookie)。

二、实验配置

1.安装Haproxy,并启用        

dnf install haproxy -y

systemctl start haproxy
systemctl enable haproxy

2.配置服务器配置文件/etc/haproxy/haproxy.cfg

3.关闭防火墙、核心防护

[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0

4.重启Haproxy,测试负载均衡

5.配置健康检查

6.重启并测试

for i in {1..10}; do curl http://172.25.254.100; sleep 0.5; done

7.配置ACL访问控制

frontend webserver
bind *:80
acl block_curl hdr_sub(User-Agent) -i curl
http-request deny if block_curl
default_backend webcluster

8.重启并测试

将curl的请求头伪装为Firefox 128.0 浏览器,绕过基于User-Agent的拦截规则。

9.配置https

1)生成自签名证书;        2)合并证书和私钥;        3)修改HAProxy配置文件

mkdir /etc/haproxy/certs
openssl req -newkey rsa:2048 -nodes -keyout /etc/haproxy/certs/haproxy.key -x509 -days 365 -out /etc/haproxy/certs/haproxy.crt

cat /etc/haproxy/certs/haproxy.key /etc/haproxy/certs/haproxy.crt > /etc/haproxy/certs/haproxy.pem

4)重启并测试

10.配置网站状态页

重启并访问

11.动态调整后端服务器权重

1)安装socat        2)修改HAProxy配置文件        3)设置权重

dnf install socat -y


[root@haproxy ~]# echo "get weight webcluster/web1" | socat stdio /var/lib/haproxy/stats
1 (initial 1)

[root@haproxy ~]# echo "get weight webcluster/web2" | socat stdio /var/lib/haproxy/stats
1 (initial 1)

[root@haproxy ~]# echo "set weight webcluster/web2 2" | socat stdio /var/lib/haproxy/stats

[root@haproxy ~]# echo "get weight webcluster/web2" | socat stdio /var/lib/haproxy/stats
2 (initial 1)

4)重启并测试

12.配置四层负载均衡

1)修改HAProxy配置文件

2)安装并启动mariadb
dnf install mariadb-server -y  # 安装
systemctl start mariadb        # 启动
systemctl enable mariadb       # 开机自启

3)配置数据库区分标识
vim /etc/my.cnf
[mysqld]
server-id=101  # 唯一标识,区分不同服务器

vim /etc/my.cnf
[mysqld]
server-id=102
systemctl restart mariadb

4)授权数据库访问
mysql -e "grant all on *.* to 'admin'@'%' identified by 'admin';"
mysql -e "flush privileges;"  # 刷新权限

负载均衡生效

http://www.lryc.cn/news/602315.html

相关文章:

  • 【拓扑排序 缩点】P2272 [ZJOI2007] 最大半连通子图|省选-
  • Linux应用开发基础知识——LInux学习FreeType编程(七)
  • 【C++进阶】---- 二叉搜索树
  • 基于LangGraph Cli的智能数据分析助手
  • Android中PID与UID的区别和联系(2)
  • Go 语言面试题
  • 数据分析干货| 衡石科技可视化创作之仪表盘控件如何设置
  • GitLab 公共仓库:coding 用到的 git 命令
  • Springboot社区养老保险系统小程序
  • 一文理清 Linux 软件管理核心知识:从程序组成到包管理工具
  • Java面试宝典:MySQL8新特性
  • shell学习从入门到精通(第二部分)
  • 机器学习sklearn:决策树的参数、属性、接口
  • nccl中__syncthreads的作用及例子 (来自deepseek)
  • 135端口与WMI攻防全解析
  • 网络安全基础知识【4】
  • python中类变量 __slots__ 解析
  • 5190 - 提高:DFS序和欧拉序:树上操作(区域修改1)
  • 排序算法 (Sorting Algorithms)-JS示例
  • AI原生应用:从人机关系重构到数字空间革命
  • RF随机森林分类预测+特征贡献SHAP分析,通过特征贡献分析增强模型透明度,Matlab代码实现,引入SHAP方法打破黑箱限制,提供全局及局部双重解释视角
  • 力扣7:整数反转
  • OCR 赋能合同抽取:不良资产管理公司的效率加速器
  • Kafka 顺序消费实现与优化策略
  • 数据结构之顺序表链表栈
  • 【Git】Linux-ubuntu 22.04 初步认识 -> 安装 -> 基础操作
  • 图片PDF识别工具:扫描PDF文件批量OCR区域图识别改名,识别大量PDF区域内容一次性改名
  • 基于LSTM和GRU的上海空气质量预测研究
  • 图片上传 el+node后端+数据库
  • 如何用VUE实现用户发呆检测?