七层负载均衡 HAproxy

一、HAproxy

1、负载均衡类型:

(1) 无负载均衡:

没有负载均衡,用户直接连接到 Web 服务器。当许多用户同时访问服务器时,可能无法连接。

(2) 四层负载均衡:

用户访问负载均衡器,负载均衡器将用户的请求平衡转发给后端服务器。

(3) 七层负载均衡:

7层负载均衡是更复杂的负载均衡方法,使用第7层允许负载均衡器根据用户请求的内容将请求转发到不同的后端服务器。

2、HAproxy 亲缘性:

在 HAProxy 中,会话亲缘性是一种负载均衡策略,它确保来自同一客户端的请求总是被路由到同一后端服务器,维护会话状态的一致。

保持会话亲缘性的方式:

● 用户 ip 识别:

HAproxy 将客户端的IP地址计算出一个哈希值,然后根据哈希值选择一个后端服务器。

● cookie 识别:

在客户端的第一个请求中,HAproxy 可以在响应中添加一个特定的 Cookie,并在后续请求中使用该 Cookie 来识别客户端会话。

● session 识别:

在 HAproxy 中,可以将后端服务器生成的会话状态和后端服务器标识存储在HAProxy的表格(stick-table)中,在客户端请求时可以查询该表格,以维护会话亲缘性。

3、示例:

(1) 环境:

HAproxy:192.168.198.131

web1:192.168.198.132

web2:192.168.198.133

域名解析:vim /etc/hosts

(2) web 配置:

yum install -y httpd

echo web111 > /var/www/html/index.html

echo web222 > /var/www/html/index.html

(3) 配置 haproxy

yum install -y epel-release

yum install -y haproxy

vim /etc/haproxy/haproxy.cfg

global
  log 127.0.0.1 local3 info
  maxconn 4096
  user bean
  group bean
  daemon
  nbproc 1
  pidfile /run/haproxy.pid

defaults
  log global
  mode http
  maxconn 2048
  retries 3
  option redispatch
  timeout connect 5000
  timeout client 50000
  timeout server 50000
  option abortonclose

  stats uri /admin?stats
  stats realm Private lands
  stats auth admin:123
  stats hide-version


frontend http-in
  bind 0.0.0.0:80
  mode http
  log global
  option httplog
  option httpclose
  acl html url_reg -i \.html$
  use_backend html-server if html
  default_backend html-server

backend html-server
  mode http
  balance roundrobin
  option httpchk GET /index.html
  cookie SERVERID insert indirect nocache
  server html-A web1:80 weight 1 cookie 3 check inter 2000 rise 2 fall 5
  server html-B web2:80 weight 1 cookie 4 check inter 2000 rise 2 fall 5

global: 设置全局配置参数,通常与操作系统相关:

● log 127.0.0.1 local3 info:配置日志记录的指令;

● maxconn 4096: 每个后端服务器的最大连接数(优先级较低);

● daemon: haproxy以守护进程的方式运行,确保haproxy在后台持续运行;

● nbproc 1 ;pidfile /run/haproxy.pid :haproxy 进程数和进程 id 存储位置;

defaults:配置默认参数,这些参数可以被用到 frontend,backend,Listen 组件中。

● log global:日志配置按全局配置中进行;

● mode http :haproxy 工作模式,七层 http,四层 tcp;

● maxconn 2048:最大连接数(优先级比 global 高)

● retries 3:haproxy 尝试连接后端服务器的重试次数,3次连接失败就认为服务不可用,用户请求将不会被发往此后端服务器;

● option redispatch:当 haproxy 在连接到后端服务器失败时,请求将分配给其他可用的后端服务器;

● timeout connect 5000 ;timeout client 50000 ;timeout server 50000

timeout connect:重传计时器,haproxy将客户端请求转发给后端服务器,所等待的超时时长,若超时则再次进行转发;

timeout client:haproxy 作为客户端和后端服务器之间空闲连接的超时时间;

timeout server:haproxy 作为服务端和用户之间空闲连接的超时时间;

● option abortonclose:当服务器负载过高时,haproxy 会结束挂起的请求,释放资源提高性能;

● stats uri /admin?stats

设置统计页面的URI路径,在URL中输入"/admin?stats"时,就可以进入haproxy 的统计页面;

● stats realm Private lands ;stats auth admin:123

统计页面认证时的提示内容 ;设置用户名和密码;

● stats hide-version:隐藏了haproxy的版本信息,以提高安全性;

frontend http-in: 前端部分开始配置。

● bind 0.0.0.0:80: 前端监听器的绑定地址和端口,haproxy 监听所有可用的网络接口(0.0.0.0)上的80端口;

● option httplog:这个选项开启了HTTP请求的详细日志记录;

● option httpclose:haproxy 在每个HTTP事务结束后关闭与客户端的连接;

● acl html url_reg -i \.html$ ;use_backend html-server if html

创建了一个名为 html 的ACL,使用正则表达式 -i \.html$ 来匹配以 ".html" 结尾的URL,若匹配中ACL,则使用名为 html-server 的后端服务器来处理请求;

● default_backend html-server

如果请求不匹配任何ACL条件,则 html-server 后端服务器来处理这些请求。

backend html-server:后端服务集群的配置。

● balance roundrobin:使用的负载均衡算法为 roundrobin (rr);

● option httpchk GET /index.html

定义了健康检查的方式,haproxy 使用HTTP GET 请求来检查后端服务器的健康状态。请求 "/index.html" 页面,如果后端服务器返回预期的响应,它将被标记为up,否则将被标记为down;

● cookie SERVERID insert indirect nocache

将用户访问所到达的后端服务器的 id 插入到 cookie 中,保持用户与服务器的会话;

● server html-A web1:80 weight 1 cookie 3 check inter 2000 rise 2 fall 5

后端服务器的名称,地址和端口;weight 1:权重为1;cookie 3:cookie SERVERID;

check inter 2000 rise 2 fall 5:每2秒进行一次健康检查,rise 2 表示连续2次成功的健康检查标记服务器为 up ;fall 5 表示连续5次失败的健康检查标记服务器为 down。

(4) 测试结果:

systemctl start haproxy

客户机测试:

登录 haproxy 统计页面:

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

深入探究深度学习、神经网络与卷积神经网络以及它们在多个领域中的应用

目录 1、什么是深度学习? 2、深度学习的思想 3、深度学习与神经网络 4、深度学习训练过程 4.1、先使用自下上升非监督学习(就是从底层开始,一层一层的往顶层训练) 4.2、后自顶向下的监督学习(就是通过带标签的数…

毅速丨金属3D打印能替代传统制造吗?

金属3D打印技术已经逐渐被很多行业认可和应用,但是目前,金属3D打印多数被作为传统制造技术的一种补充,暂时还不能完全替代传统制造。 金属3D打印使用的是金属粉末进行选择性激光烧结,打印时在成型缸里铺上金属粉末,打印…

2023-10-27 LeetCode每日一题(切割后面积最大的蛋糕)

2023-10-27每日一题 一、题目编号 1465. 切割后面积最大的蛋糕二、题目链接 点击跳转到题目位置 三、题目描述 矩形蛋糕的高度为 h 且宽度为 w,给你两个整数数组 horizontalCuts 和 verticalCuts,其中: horizontalCuts[i] 是从矩形蛋糕…

牛客题霸 -- HJ52 计算字符串的编辑距离

解题步骤&#xff1a; 参考代码&#xff1a; int main() {string s1;string s2;while (cin >> s1 >> s2){int ms1.size();int ns2.size();//增加空白字符&#xff0c;修正下标的映射关系s1 s1;s2 s2;//多卡一行&#xff0c;多开一列vector<vector<int&…

stable-diffusion-ui 下载和安装

简介 Stable Diffusion Web UI是一款基于Stable Diffusion基础应用的交互程序&#xff0c;它利用gradio模块搭建而成。这个模块除了具有txt2img、img2img等基本功能外&#xff0c;还包含许多模型融合改进、图片质量修复等附加升级。所有这些功能都可以通过易于使用的Web应用程…

C语言二、八、十六进制转换

二进制转八进制、十六进制 二进制转八进制&#xff1a; 三合一法&#xff1a; 从低位到高位&#xff0c;每 3 给二进制组成 1 位八进制数据&#xff0c;高位不够三位用 0 填补&#xff0c;将二进制转为对应的八进制数即可 二进制转十六进制&#xff1a; 四合一法&#xff1a;…

迁移学习 - 微调

什么是与训练和微调&#xff1f; 你需要搭建一个网络模型来完成一个特定的图像分类的任务。首先&#xff0c;你需要随机初始化参数&#xff0c;然后开始训练网络&#xff0c;不断调整参数&#xff0c;直到网络的损失越来越小。在训练的过程中&#xff0c;一开始初始化的参数会…

sql-50练习题0-5

sql练习题0-5题 前言数据库表结构介绍学生表课程表成绩表教师表 0-1 查询"01"课程比"02"课程成绩高的学生的信息及课程分数0-2查询"01"课程比"02"课程成绩小的学生的信息及课程分数0-3查询平均成绩大于等于60分的同学的学生编号和学生…

ETL工具Kettle

1 Kettle的基本概念 一个数据抽取过程&#xff0c;主要包括创建一个作业&#xff08;Job&#xff09;&#xff0c;每个作业由一个或多个作业项&#xff08;Job Entry&#xff09;和连接作业项的作业跳&#xff08;Job Hop&#xff09;组成。每个作业项可以是一个转换&#xff…

RGB-T Salient Object Detection via Fusing Multi-Level CNN Features

ADFC means ‘adjacent-depth feature combination’&#xff0c;MGF means ‘multi-branch group fusion’&#xff0c;JCSA means ‘joint channel-spatial attention’&#xff0c;JABMP means ‘joint attention guided bi-directional message passing’ 作者未提供代…

openpnp - src - 配置文件载入过程的初步分析

文章目录 openpnp - src - 配置文件载入过程的初步分析概述笔记自己编译用的git版本报错截图问题1 - 怎么在调试状态下, 定位到抛异常的第一现场?结合单步调试找到的现场, 来分析报错的原因openpnp配置文件读取的流程END openpnp - src - 配置文件载入过程的初步分析 概述 从…

LVS+keepalive高可用集群

keepalive简介 keepalive为LVS应用延伸的高可用服务。lvs的调度器无法做高可用。但keepalive不是为lvs专门集群服务的&#xff0c;也可以为其他的的代理服务器做高可用。 keepalive在lvs的高可用集群&#xff0c;主调度器和备调度器(可以有多个) 一主两备或一主一备。 VRRP: k…

[红蓝攻防]MDOG(全新UI重制版)为Xss跨站而生,数据共享,表单劫持,URL重定向

说明 功能Cookie窃取表单劫持(钓鱼账密)重定向流量劫持多平台数据推送钉钉数据推送 运行窗口 ./dist目录下已生成exe文件,双击打开 Cookie窃取 点击运行服务,复制以上的payload,payload怎么变形那么你可已去混淆 payload在页面执行 受害者访问存在xss漏洞的页面时受到攻击,…

python实验2 π的计算

π的计算 1. 圆周率的介绍2. BBP公式计算圆周率3. 蒙特卡洛方法计算π 1. 圆周率的介绍 圆周率π自古就是人们计算的问题&#xff0c;π到底是什么&#xff0c;圆的周长与直径的比值或者是面积与半径的平方之比&#xff0c;或者是使sinx0的最小正数x。所以每一种定义每一种理解…

NSSCTF web刷题记录3

文章目录 [护网杯 2018]easy_tornado[NSSRound#V Team]PYRCE方法一 cp命令方法二 tar命令 [CISCN 2019华东南]Web4[CISCN 2023 华北]ez_date[GWCTF 2019]你的名字[GKCTF 2020]ez三剑客-easynode [护网杯 2018]easy_tornado 打开题目&#xff0c;发现有三个链接&#xff0c;分别…

【Effective C++】

Effective C 文章目录 Effective C一、让自己习惯C条款01&#xff1a;视C为一个语言联邦条款02&#xff1a;尽量以const&#xff0c;enum&#xff0c;inline代替#define的使用条款03&#xff1a;尽可能使用const条款04&#xff1a;确定对象被使用前已先被初始化 二、构造/析构/…

Flutter笔记:完全基于Flutter绘图技术绘制一个精美的Dash图标(中)

Flutter笔记 完全基于Flutter绘图技术绘制一个精美的Dart语言吉祥物Dash&#xff08;中&#xff09; 作者&#xff1a;李俊才 &#xff08;jcLee95&#xff09;&#xff1a;https://blog.csdn.net/qq_28550263 邮箱 &#xff1a;291148484163.com 本文地址&#xff1a;https://…

C/C++晶晶赴约会 2020年12月电子学会青少年软件编程(C/C++)等级考试一级真题答案解析

目录 C/C晶晶赴约会 一、题目要求 1、编程实现 2、输入输出 二、算法分析 三、程序编写 四、程序说明 五、运行结果 六、考点分析 C/C晶晶赴约会 2020年12月 C/C编程等级考试一级编程题 一、题目要求 1、编程实现 晶晶的朋友贝贝约晶晶下周一起去看展览&#xff0…

25.2 MySQL 运算符

1. 伪表 在MySQL中, DUAL是一个特殊的单行, 单列的虚拟表, 主要用于在SELECT语句中计算表达式或执行函数, 而不需要从实际的数据表中检索数据. 使用DUAL的原因主要有以下几点:* 1. 简化计算: 通过在SELECT语句中使用DUAL, 可以方便地计算表达式或执行函数, 而无需创建临时表或…

AJAX原理及介绍

文章目录 AJAX&#xff08;Asynchronous Javascript And Xml&#xff09;传统请求及缺点AJAX概述XMLHttpRequest对象AJAX GET请求AJAX GET请求的缓存问题AJAX POST请求基于JSON的数据交换基于XML的数据交换AJAX乱码问题AJAX的异步与同步AJAX代码封装AJAX实现省市联动AJAX跨域问…