Haproxy入门学习二

一、Haproxy的算法

        1.haproxy通过固定参数balance指明对后端服务器的调度算法,其中balance参数可以配置在listen或backend选项中

        2.haproxy的调度算法分为静态和动态调度算法,其中有些算法可以根据参数在静态和动态算法中相互转换

        3.静态算法:

                按照事先定义好的规则轮询公平调度不关心后端服务器的当前负载、连接数和响应速度等并且不可以实时修改权重,只能靠重启haproxy生效

                static-rr:基于权重的轮询调度

                        不支持运行时利用socat进行权重的动态调整

                        不支持服务器慢启动

                        其后端主机数量没有限制,相当于lvs中的wrr

                慢启动是指在服务器刚刚启动上不会把它所应该承担的访问压力全部给它,即先给一部分后再给一部分

                listen webserver_80

                        bind  172.25.254.100:80

                        mode  http

                        balance  static-rr

                        server  webserver1  192.168.0.101:80  weight  2 check  inter  3s  fall  3  rise  5

                        server  webserver2  192.168.0.102:80   weight  2 check inter  3s  fall  3  rise  5

                first:根据服务器在列表中的位置自上而下进行调度

                        其只会当第一台服务器的连接数达到上限,新请求才会分配给下一台服务器

                        其会忽略服务器的权重设置

                        不支持用socat进行动态修改权重 

                listen webserver_80

                        bind  172.25.254.100:80

                        mode  http

                        balance  first

                        server  webserver1  192.168.0.101:80  maxconn  3 check  inter  3s  fall  3  rise  5

                        server  webserver2  192.168.0.102:80  check inter  3s  fall  3  rise  5

        4.动态算法

                基于后端服务器的状态进行适当的调整

                新请求将优先调度至当前负载较低的服务器

                权重可以在haproxy运行时动态调整

                        roundrobin:

                                基于权重的轮询动态调度算法

                                支持权重的运行时调整

                                haproxy中roundrobin支持慢启动

                                每个后端对多支持4095个real server

                                该调度算法为默认调度算法                   

                                listen webserver_80

                                        bind  172.25.254.100:80

                                        mode  http

                                        balance  roundrobin

                                        server  webserver1  192.168.0.101:80  weight  1 check  inter  3s  fall  3  rise  5

                                        server  webserver2  192.168.0.102:80   weight  1 check inter  3s  fall  3  rise  5

                        动态调整权重

                        

                        leastconn:加权最少连接的动态

                                支持权重的运行时调整和慢启动,根据当前最少的后端服务器而非权重进行优先调度并且支持长连接的使用场景使用

                                listen webserver_80

                                        bind  172.25.254.100:80

                                        mode  http

                                        balance  leastconn

                                        server  webserver1  192.168.0.101:80  weight  1 check  inter  3s  fall  3  rise  5

                                        server  webserver2  192.168.0.102:80   weight  1 check inter  3s  fall  3  rise  5

                4.其他算法

                        source(源地址hash并将请求转发到后端服务器,之后同一个源地址请求将被转发到同一个后端web服务器)

                        map-base取模法:对source地址进行hash计算再基于服务器总权重取模,缺点是当服务器的总权重发生变化时有服务器上线或下线都会因总权重发生变化而导致调度结果的整体改变

                        一致性hash:当服务器的总权重发生变化时对调度结果的影响时局部的,不会引起大的变动

                        uri:基于对用户请求的url的左半部分或整个uri做hash,再将hash结果对总权重进行取模后根据最终结果将请求转发到后端指定的服务器

                        url_param:对用户请求的url中的params部分中的一个参数key对应的value值做hash计算,并由总权重相除以后派发给某个服务器,后端搜索同一个数据会被调度到同一个服务器

                        hdr:针对用户http头部请求中的指定信息做hash,一般由name指定的http首部将会被取出来做hash运算,如果无有效值,则默认使用轮询调度

                上述这些算法的动态和静态取决于hash_type是否为consistent

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

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

相关文章

程序地址空间

程序地址空间回顾(这真的是吗?) 我们之前学习C/C的时候是否听过:对于自己的C/C程序,我们默认认为自己的内存地址空间是: 代码区(Text Segment):存放程序的机器指令代码&…

【Numpy核心编程攻略:Python数据处理、分析详解与科学计算】1.21 索引宗师:布尔索引的七重境界

1.21 索引宗师:布尔索引的七重境界 目录 #mermaid-svg-Iojpgw5hl0Ptb9Ti {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-Iojpgw5hl0Ptb9Ti .error-icon{fill:#552222;}#mermaid-svg-Iojpgw5hl0Ptb9Ti .…

nvm安装详细教程(安装nvm、node、npm、cnpm、yarn及环境变量配置)

一、安装nvm 1. 下载nvm 点击 网盘下载 进行下载 2、双击下载好的 nvm-1.1.12-setup.zip 文件 3.双击 nvm-setup.exe 开始安装 4. 选择我接受,然后点击next 5.选择nvm安装路径,路径名称不要有空格,然后点击next 6.node.js安装路径&#…

【Matlab高端绘图SCI绘图模板】第006期 对比绘柱状图 (只需替换数据)

1. 简介 柱状图作为科研论文中常用的实验结果对比图,本文采用了3组实验对比的效果展示图,代码已调试好,只需替换数据即可生成相关柱状图,为科研加分。通过获得Nature配色的柱状图,让你的论文看起来档次更高&#xff0…

CTFSHOW-WEB入门-命令执行29-32

题目:web 29 题目:解题思路:分析代码: error_reporting(0); if(isset($_GET[c])){//get一个c的参数$c $_GET[c];//赋值给Cif(!preg_match("/flag/i", $c)){eval($c);//if C变量里面没有flag,那么就执行C…

【以音频软件FFmpeg为例】通过Python脚本将软件路径添加到Windows系统环境变量中的实现与原理分析

在Windows系统中,你可以通过修改环境变量 PATH 来使得 ffmpeg.exe 可在任意路径下直接使用。要通过Python修改环境变量并立即生效,如图: 你可以使用以下代码: import os import winreg as reg# ffmpeg.exe的路径 ffmpeg_path …

LCR 139.训练计划 I

目录 题目过程解法双指针法(两端开始)快慢指针 题目 教练使用整数数组 actions 记录一系列核心肌群训练项目编号。为增强训练趣味性,需要将所有奇数编号训练项目调整至偶数编号训练项目之前。请将调整后的训练项目编号以 数组 形式返回。 过…

《多阶段渐进式图像修复》学习笔记

paper:2102.02808 GitHub:swz30/MPRNet: [CVPR 2021] Multi-Stage Progressive Image Restoration. SOTA results for Image deblurring, deraining, and denoising. 目录 摘要 1、介绍 2、相关工作 2.1 单阶段方法 2.2 多阶段方法 2.3 注意力机…

21.2-工程中添加FreeRTOS(掌握) 用STM32CubeMX添加FreeRTOS

这个是全网最详细的STM32项目教学视频。 第一篇在这里: 视频在这里 STM32智能小车V3-STM32入门教程-openmv与STM32循迹小车-stm32f103c8t6-电赛 嵌入式学习 PID控制算法 编码器电机 跟随 **V3:HAL库开发、手把手教学下面功能:PID速度控制、PID循迹、PID跟随、遥控、…

gitee——报错修改本地密码

有时候当我们向远端push本地的仓库时会有一些报错的行为。 如下: 这是因为我们在gitee修改了密码时,本地还没有更新提交,总是报错 解决修改密码报错 如下: 1.在本地点击搜索栏找到控制面板 步骤如下

联想Y7000+RTX4060+i7+Ubuntu22.04运行DeepSeek开源多模态大模型Janus-Pro-1B+本地部署

直接上手搓了: conda create -n myenv python3.10 -ygit clone https://github.com/deepseek-ai/Janus.gitcd Januspip install -e .pip install webencodings beautifulsoup4 tinycss2pip install -e .[gradio]pip install pexpect>4.3python demo/app_januspr…

批量卸载fnm中已经安装的所有版本

直接上代码 fnm list | awk -F NR>1 {print line} {line$2} | xargs -n 1 -I {} fnm uninstall {}原理 fnm list 列出 fnm 中所有已经安装的 node 版本 awk -F NR>1 {print line} {line$2} 以空格分隔-F {line$2},取从左到右第 2 段(v22.11…

(done) MIT6.S081 2023 学习笔记 (Day6: LAB5 COW Fork)

网页:https://pdos.csail.mit.edu/6.S081/2023/labs/cow.html 任务1:Implement copy-on-write fork(hard) (完成) 现实中的问题如下: xv6中的fork()系统调用会将父进程的用户空间内存全部复制到子进程中。如果父进程很大,复制过程…

如何将xps文件转换为txt文件?xps转为pdf,pdf转为txt,提取pdf表格并转为txt

文章目录 xps转txt方法一方法二 pdf转txt整页转txt提取pdf表格,并转为txt 总结另外参考XPS文件转换为TXT文件XPS文件转换为PDF文件PDF文件转换为TXT文件提取PDF表格并转为TXT示例代码(部分) 本文测试代码已上传,路径如下&#xff…

C++,STL,【目录篇】

文章目录 一、简介二、内容提纲第一部分:STL 概述第二部分:STL 容器第三部分:STL 迭代器第四部分:STL 算法第五部分:STL 函数对象第六部分:STL 高级主题第七部分:STL 实战应用 三、写作风格四、…

[STM32 - 野火] - - - 固件库学习笔记 - - -十三.高级定时器

一、高级定时器简介 高级定时器的简介在前面一章已经介绍过,可以点击下面链接了解,在这里进行一些补充。 [STM32 - 野火] - - - 固件库学习笔记 - - -十二.基本定时器 1.1 功能简介 1、高级定时器可以向上/向下/两边计数,还独有一个重复计…

Mybatis是如何进行分页的?

大家好,我是锋哥。今天分享关于【Mybatis是如何进行分页的?】面试题。希望对大家有帮助; Mybatis是如何进行分页的? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 MyBatis 实现分页的方式有很多种,最常见…

四.3 Redis 五大数据类型/结构的详细说明/详细使用( hash 哈希表数据类型详解和使用)

四.3 Redis 五大数据类型/结构的详细说明/详细使用( hash 哈希表数据类型详解和使用) 文章目录 四.3 Redis 五大数据类型/结构的详细说明/详细使用( hash 哈希表数据类型详解和使用)2.hash 哈希表常用指令(详细讲解说明)2.1 hset …

编译dpdk19.08.2中example时一系列报错解决

dpdk19.08编译过程全解 dpdk 介绍问题描述编译过程执行Step 1报错一解决方式 报错二解决方式 继续执行Step 248的时候报错 49没有修改成功输入60退出 使用过程执行make报错一解决方式 继续make报错二解决方式 继续make执行生成文件helloworld报错三解决方式 执行make 完成参考链…

openeuler 22.03 lts sp4 使用 cri-o 和 静态 pod 的方式部署 k8s-v1.32.0 高可用集群

前情提要 整篇文章会非常的长…可以选择性阅读,另外,这篇文章是自己学习使用的,用于生产,还请三思和斟酌 静态 pod 的部署方式和二进制部署的方式是差不多的,区别在于 master 组件的管理方式是 kubectl 还是 systemctl有 kubeadm 工具,为什么还要用静态 pod 的方式部署?…