3.haproxy负载均衡

news2024/11/27 12:58:20

haproxy负载均衡

  • 一、haproxy介绍
    • 1、负载均衡类型
  • 二、haproxy配置文件
    • 1、backend
    • 2、frontend
  • 三、haproxy实现MySQL负载均衡 —— 4层
    • 1、后端两台MySQL配置双主复制
    • 2、安装配置haproxy
      • 2.1 安装软件
      • 2.2 编辑配置
      • 2.3 启动haproxy
      • 2.4 测试通过haproxy正常连接MySQL
  • 四、haproxy实现七层调度
    • 1、匹配请求的方法
    • 2、配置haproxy实现web 7层负载
    • 2.1 编辑haproxy配置文件
    • 2.2 所有网站域名统一解析到haproxy上,测试访问
    • 2.3 修改nginx日志格式

一、haproxy介绍

开源、负载均衡器
同时支持4层负载、7层负载

1、负载均衡类型

  • 4层负载
    根据IP/port进行负载、调度
    LVS、nginx(stream模块)

  • 7层负载
    针对http/https协议进行负载, 灵活性高
    根据应用层数据(图片、视频、动画等)进行调度
    nginx(upstream模块)

二、haproxy配置文件

1、backend

  • 定义后端业务服务器
backend xxxx
	balance roundrobin			// 调度算法
	mode {tcp|http}				// tcp:4层负载、http: 7层负载
	server 名称 IP:port check
	server 名称 IP:port check

2、frontend

  • 定义虚拟服务
frontend 虚拟服务名称
	bind IP:port
	mode {tcp|http}
	use_backend backend后端服务器

三、haproxy实现MySQL负载均衡 —— 4层

在这里插入图片描述

1、后端两台MySQL配置双主复制

2、安装配置haproxy

2.1 安装软件

[root@master_haproxy ~]# yum install -y haproxy 

2.2 编辑配置

[root@master_haproxy ~]# vim /etc/haproxy/haproxy.cfg 
frontend MySQL_Service
   bind 0.0.0.0:3306
   mode tcp
   use_backend DB

backend DB
   balance source  
   mode tcp
   server db01 192.168.140.13:3306
   server db02 192.168.140.14:3306

2.3 启动haproxy

[root@master_haproxy ~]# systemctl enable --now haproxy
Created symlink from /etc/systemd/system/multi-user.target.wants/haproxy.service to /usr/lib/systemd/system/haproxy.service.
[root@master_haproxy ~]# 
[root@master_haproxy ~]# netstat -tunlp | grep haproxy 
tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN      1500/haproxy        
udp        0      0 0.0.0.0:58409           0.0.0.0:*                           1499/haproxy     

2.4 测试通过haproxy正常连接MySQL

四、haproxy实现七层调度

1、匹配请求的方法

ACL, 访问控制列表, 作用用于匹配请求,便于7层调度
语法: acl acl名称 <匹配请求的方法> -i 条件

  • hdr_reg(host)
    以正则表达式的方式匹配主机名
acl test1 hdr_reg(host) -i download 
use_backend xxxxxx if test1
  • hdr_dom(host)
    精确匹配主机名
acl test2 hdr_dom(host) -i www.jd.com 
  • hdr_beg(host)
    匹配以xxxx开头的主机名
acl tes3 hdr_beg(host) -i blog.
  • path_end
    根据URL以xxxx结尾的请求
acl test4 path_end -i .jpg .jpeg .png .gif .css .js 
  • path_beg
    根据URL以xxx开头的请求
acl test5 path_beg -i https:// 
  • url_ip
    根据请求中的目的IP来匹配
acl test6 url_ip 10.0.0.0/8
acl test6 url_ip 172.12.0.0/12
acl test6 url_ip 192.168.0.0/16
http-request deny if test6 
  • src
    根据源IP地址匹配请求
acl test8 src -i 12.32.34.43
http-request deny if test8 
  • method
    根据http的请求方法来匹配请求 GET/POST
acl test7 method -i POST 

2、配置haproxy实现web 7层负载

在这里插入图片描述

2.1 编辑haproxy配置文件

[root@master_haproxy ~]# vim /etc/haproxy/haproxy.cfg 
frontend web_service
   bind 0.0.0.0:80
   mode http
   option forwardfor					// 让后端服务器日志记录真实客户端地址

   acl blog_acl hdr_reg(host) blog.
   use_backend blog if blog_acl

   acl cart_acl hdr_dom(host) opencart.linux.com
   use_backend opencart if cart_acl

   default_backend opencart     // 定义默认后端,通过IP访问haproxy时默认为503 


backend blog
   balance roundrobin
   mode http
   server blog01 192.168.140.12:80 check
   server blog02 192.168.140.13:80 check

backend opencart
   balance roundrobin
   mode http
   server cart01 192.168.140.12:80 check
   server cart02 192.168.140.13:80 check
[root@master_haproxy ~]# systemctl restart haproxy
[root@master_haproxy ~]# 
[root@master_haproxy ~]# netstat -tunlp | grep haproxy
tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN      1909/haproxy        
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      1909/haproxy        
udp        0      0 0.0.0.0:42707           0.0.0.0:*                           1908/haproxy   

2.2 所有网站域名统一解析到haproxy上,测试访问

2.3 修改nginx日志格式

    log_format  main  '$http_x_forwarded_for - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent"';$remote_addr修改为$http_x_forwarded_for
[root@web01 ~]# tail -n 3 /usr/local/nginx/logs/opencart_access.log 
192.168.140.1 - - [08/Jun/2024:15:30:35 +0800] "GET /image/cache/catalog/demo/product/product-5-300x300.png HTTP/1.1" 404 153 "http://opencart.linux.com/index.php?route=product/category&path=20_26" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:126.0) Gecko/20100101 Firefox/126.0"
192.168.140.1 - - [08/Jun/2024:15:30:35 +0800] "GET /image/cache/catalog/demo/slideshow/banner-2-287x403.png HTTP/1.1" 404 153 "http://opencart.linux.com/index.php?route=product/category&path=20_26" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:126.0) Gecko/20100101 Firefox/126.0"

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

机器学习----奥卡姆剃刀定律

奥卡姆剃刀定律&#xff08;Occam’s Razor&#xff09;是一条哲学原则&#xff0c;通常表述为“如无必要&#xff0c;勿增实体”&#xff08;Entities should not be multiplied beyond necessity&#xff09;或“在其他条件相同的情况下&#xff0c;最简单的解释往往是最好的…

容器化部署fastdfs文件存储

目录 一、软件信息 二、构建fastdfs镜像 三、docker 启动fdfs服务 四、k8s部署fdfs服务 1、fdfs部署文件 五、外部服务访问 一、软件信息 fastdfs版本&#xff1a;fastdfs:V5.11 libfastcommon版本: V1.0.36 fastdfs-nginx-module版本&#xff1a;V1.20 nginx版本&am…

【python】OpenCV—Blob Detection(11)

学习来自OpenCV基础&#xff08;10&#xff09;使用OpenCV进行Blob检测 文章目录 1、cv2.SimpleBlobDetector_create 中文文档2、默认 parameters3、配置 parameters附录——cv2.drawKeypoints 1、cv2.SimpleBlobDetector_create 中文文档 cv2.SimpleBlobDetector_create 是 O…

LeetCode72编辑距离

题目描述 解析 一般这种给出两个字符串的动态规划问题都是维护一个二维数组&#xff0c;尺寸和这两个字符串的长度相等&#xff0c;用二维做完了后可以尝试优化空间。这一题其实挺类似1143这题的&#xff0c;只不过相比1143的一种方式&#xff0c;变成了三种方式&#xff0c;就…

Linux基础2-基本指令4(cp,mv,cat,tac)

上篇文章我们说到了rmdir,rm,man,echo.重定向等知识。 Linux基础1-基本指令3-CSDN博客 本文继续梳理其他基础指令 1.本章重点 1.使用cp命令拷贝文件 2.使用mv命令移动文件 3.使用cat&#xff0c;tac查看小文本文件 2.cp命令 在linux中使用cp命令来拷贝粘贴文件 cp src(原文…

信息学奥赛初赛天天练-23-CSP-J2023基础题-指针、链表、哈夫曼树与哈夫曼编码的实战应用与技巧大揭秘

PDF文档公众号回复关键字:20240608 单项选择题&#xff08;共15题&#xff0c;每题2分&#xff0c;共计30分&#xff1a;每题有且仅有一个正确选项&#xff09; 4 假设有一个链表的节点定义如下&#xff1a; struct Node {int data; Node* next; };现在有一个指向链表头部…

【深度学习】CICIDS 2019,入侵检测,SVM支持向量机,随机森林,DNN训练,混淆矩阵

文章目录 数据集介绍Python环境随机森林训练结果SVM支持向量机训练结果DNN训练结果所有代码下载 数据集介绍 下载&#xff1a;https://www.kaggle.com/datasets/tarundhamor/cicids-2019-dataset 数据个数&#xff1a; # 删除label中是WebDDoS的数据df df[df[Label] ! WebDD…

Java Web学习笔记26——Element常用组件

常见组件&#xff1a; 就是一个复制和粘贴的过程。 Table表格&#xff1a;用于展示多条结构类的数据&#xff0c;可对数据进行排序、筛选、对比或其他自定义操作。 常见组件-分页主键&#xff1a; Pagination&#xff1a;分页&#xff1a;当数据量比较多时&#xff0c;使用分…

第七届全国颗粒材料计算力学会议召开,DEMms多尺度离散模拟软件受关注

近日&#xff0c;第七届全国颗粒材料计算力学会议暨第四届计算颗粒技术国际研讨会在南京召开。会议聚焦颗粒材料的力学理论及模型、计算分析与软件开发、工程应用和相关前沿方向中的关键科学问题和难点技术问题&#xff0c;开展广泛的学术交流和讨论。 会议期间&#xff0c;积鼎…

【Python列表解锁】:掌握序列精髓,驾驭动态数据集合

文章目录 &#x1f680;一、列表&#x1f308;二、常规操作&#x1f4a5;增&#x1f4a5;删&#x1f4a5;改&#x1f4a5;查 ⭐三、补充操作 &#x1f680;一、列表 列表是一个能够存储多个同一或不同元素的序列 列表&#xff1a;list ---- [] 列表属于序列类型&#xff08;容器…

WWDC 2024前瞻:苹果如何用AI技术重塑iOS 18和Siri

苹果下周的全球开发者大会有望成为这家 iPhone 制造商历史上的关键时刻。在 WWDC 上&#xff0c;这家库比蒂诺科技巨头将展示如何选择将人工智能技术集成到其设备和软件中&#xff0c;包括通过与 OpenAI 的历史性合作伙伴关系。随着重大事件的临近&#xff0c;有关 iOS 18 及其…

高能来袭|联想拯救者携手《黑神话:悟空》玩转东方神话世界

从2020年首次发布实机演示视频以来&#xff0c;《黑神话&#xff1a;悟空》便在全球范围内获得了广泛关注&#xff0c;成为国产3A游戏的现象级爆款。6月&#xff0c;联想拯救者正式宣布成为《黑神话&#xff1a;悟空》全球官方合作伙伴&#xff0c;致力于共同革新国产游戏体验&…

老师必备!一文教你如何高效收集志愿填报信息

高考志愿填报季&#xff0c;对于每一位老师来说&#xff0c;无疑是一场信息收集与管理的硬仗。如何在众多的志愿信息中&#xff0c;高效、准确地掌握每位学生的志愿意向&#xff1f; 高考志愿填报的重要性。不仅是学生人生的一个重要转折点&#xff0c;也是老师教育生涯中的一次…

Elasticsearch 认证模拟题 - 15

一、题目 原索引 task1 的字段 title 字段包含单词 The&#xff0c;查询 the 可以查出 1200 篇文档。重建 task1 索引为 task1_new&#xff0c;重建后的索引&#xff0c; title 字段查询 the 单词&#xff0c;不能匹配到任何文档。 PUT task1 {"mappings": {"…

Latex中表格(3)

Latex中的表格 一、多行或多列单元格 这篇主要说Latex中表格出现多行或者多列单元格的形式. 一、多行或多列单元格 可能用到的宏包 \usepackage{booktabs}\usepackage{multirow} 代码&#xff1a; \begin{table}[h!] \centering \caption{Your caption here} \begin{tabul…

斯坦福天才少女创5亿独角兽!Pika获8000万融资,金牌团队首曝光

斯坦福天才少女创立的公司Pika&#xff0c;继续书写传奇。 GPT-4o深夜发布&#xff01;Plus免费可用&#xff01;https://www.zhihu.com/pin/1773645611381747712 没体验过OpenAI最新版GPT-4o&#xff1f;快戳最详细升级教程&#xff0c;几分钟搞定&#xff1a;升级ChatGPT-4o …

地图之战争迷雾/地图算法/自动导航(一)

战争迷雾 TiledMap 创建黑色覆盖块&#xff0c;然后使用碰撞组件&#xff0c;控制黑色块的显示和隐藏 地图算法 在有些游戏中&#xff0c;地图需要随机生成&#xff0c;比如游戏中的迷宫等&#xff0c;这就需要地图生成的算法&#xff1b;在角色扮演类游戏中&#xff0c;角色…

【AIGC】基于大模型+知识库的Code Review实践

一、背景描述 一句话介绍就是&#xff1a;基于开源大模型 知识库的 Code Review 实践&#xff0c;类似一个代码评审助手&#xff08;CR Copilot&#xff09;。信息安全合规问题&#xff1a;公司内代码直接调 ChatGPT / Claude 会有安全/合规问题&#xff0c;为了使用 ChatGPT…

华为云服务器-云容器引擎 CCE环境构建及项目部署

1、切换地区 2、搜索云容器引擎 CCE 3、购买集群 4、创建容器节点 通过漫长的等待(五分钟左右)&#xff0c;由创建中变为运行中&#xff0c;则表明容器已经搭建成功 购买成功后&#xff0c;返回容器控制台界面 5、节点容器管理 6、创建redis工作负载 7、创建mysql工作负载 8、…

C#使用GDI对一个矩形进行任意角度旋转

C#对一个矩形进行旋转GDI绘图&#xff0c;可以指定任意角度进行旋转 我们可以认为一张图片Image&#xff0c;本质就是一个矩形Rectangle,旋转矩形也就是旋转图片 在画图密封类 System.Drawing.Graphics中&#xff0c; 矩形旋转的两个关键方法 //设置旋转的中心点 public v…