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

配置 Haproxy 负载均衡群集

配置 haproxy 负载均衡群集

🏆荣誉认证:51CTO博客专家博主、TOP红人、明日之星;阿里云开发者社区专家博主、技术博主、星级博主。

💻微信公众号:微笑的段嘉许

📌本文由微笑的段嘉许原创!

🎉欢迎关注🔎点赞👍收藏⭐留言📝

📆CSDN首发时间:🌴2023年2月日25🌴

✉️坚持和努力一定能换来诗与远方!

🙏作者水平很有限,如果发现错误,一定要及时告知作者哦!感谢感谢!

本文介绍

本文将要介绍一款比较流行的群集调度工具。首先介绍负载均衡常用调度算法,然后介绍Haproxy搭建web群集的方法。


📌导航小助手📌

文章目录

  • 配置 haproxy 负载均衡群集
  • 📝理论讲解:
    • 负载均衡常用调度算法
    • 常见的Web群集调度器
  • 📖实验配置与实现:
  • 一、Haproxy 服务器和 web 服务器以及客户端配置 IP 地址
    • 1、haproxy 配置 IP 地址和路由功能
    • 2、第一台 web 服务器配置 IP 地址
    • 3、第二台 Web 服务器 IP 地址
    • 4、客户端配置 IP 地址
  • 二、安装配置两台 Nginx 网站服务器
    • 1、配置第一台 web 服务器安装依赖软件和创建管理用户
    • 2、配置安装第一台 Web 服务器
    • 3、配置第二台 web 服务器安装依赖软件和创建管理用户
    • 4、配置安装第二台 Web 服务器
  • 三、配置 haproxy 和 DNS 服务器使用域名 www.bdqn.com 访问负载均衡群集
    • 1、安装配置 haproxy 依赖程序
    • 2、配置安装 haproxy
    • 3、配置 haproxy 服务支持负载均衡启动服务
    • 4、搭建 DNS 服务器使用域名 www.bdqn.com 访问负载均衡群集
    • 5、客户端访问 haproxy 的网站服务器域名 www.bdqn.com 验证

📝理论讲解:

负载均衡常用调度算法

​ LVS、Haproxy、Nginx最常用的调度算法有三种,如下所述

  • RR(Round Robin)。RR算法是最简单常用的一种算法,即轮询调度。例如,有三个节点 A、B、C,第一个用户访问会被指派到节点 A,第二个用户访问会被指派到节点 B,第三个用户访问会被指派到节点 C,第四个用户访问继续指派到节点 A,轮询分配访问请求实现负载均衡效果。此算法还有一种加权轮询,即根据每个节点的权重轮询分配访问请求。
  • LC(Least Connections)。LC算法即最小连接算法,根据后端的节点连接数大小动态分配前端请求,例如,有三个几点 A 、B、C,各节点的连接数变为 A:4、B:5、C:6,此时如果有第一个用户连接请求,会被指派到 A上,连接数变为 A:5、B:5、C:6;第二个用户请求会继续分配到 A上,连接数变为 A:6、B:5、C:6;再有新的请求会分配给 B,每次将新的请求指派给连接数最小的客户端。由于实际情况下 A、B、C 的连接数会动态释放,很难会出现一样连接数的情况,因此此算法相比较RR算法有很大的改进,是目前用到比较多的一种算法。
  • SH(Source Hashing)。SH基于来源访问调度算法,此算法用于一些有Session会话记录在服务器端的场景,可以基于来源的IP、Cookie等做群集调度。例如,使用基于源IP的群集调度算法,有三个节点 A、B、C,第一个用户第一次访问被指派到了 A,第二个 用户第一次访问被指派到了 B,实现群集的调度。此调度算法好处是实现会话保持,单某些IP访问量非常大时会引起负载不均衡,部分节点访问量大、影响业务使用。

常见的Web群集调度器

​ 目前常见的Web群集调度器分为软件和硬件,软件通常使用开源的LVS、Haproxy、Nginx,硬件一般使用比较多的是F5,也有很多人使用国内的一些产品,如梭子鱼、绿盟等。


📖实验配置与实现:

拓扑图

img

推荐步骤

➢ Haproxy 服务器和 web 服务器以及客户端配置 IP 地址

➢ 安装配置两台 Nginx 网站服务器

➢ 配置 haproxy 和 DNS 服务器使用域名 www.bdqn.com 访问负载均衡群集

实验步骤

一、Haproxy 服务器和 web 服务器以及客户端配置 IP 地址

1、haproxy 配置 IP 地址和路由功能

1)haproxy 服务器生成外网网卡配置 IP 地址

img

2)haproxy 服务器配置内网 IP 地址

img

img

3)haproxy 服务器外网 IP 地址

img

img
4)重新启动网卡服务查看配置的 DNS

img

5)haproxy 服务器开启路由转发功能

img

img

img

2、第一台 web 服务器配置 IP 地址

1)修改网卡配置文件

img

img

2)重启网卡服务查看配置的默认网关

img

3、第二台 Web 服务器 IP 地址

1)修改网卡配置文件

img

img

2)重启网卡服务查看配置的默认网关

img

4、客户端配置 IP 地址

1) 客户端配置 IP 地址

img

2)查看配置的 IP 地址

img

二、安装配置两台 Nginx 网站服务器

1、配置第一台 web 服务器安装依赖软件和创建管理用户

1)切换系统光盘安装依赖程序

img

2)删除系统 yum 仓库配置本地 yum 仓库

img

3)挂载系统盘

img

4)安装依赖软件和创建管理 Nginx 用户

img

img

2、配置安装第一台 Web 服务器

1)卸载系统光盘挂载程序光盘

img

img

2)解压缩配置 Nginx 服务器

img

3)编译安装 Nginx 服务器

img

4)优化服务命令

img

5)设置 Nginx 服务器主页

img

6) 启动服务器查看运行状态

img

3、配置第二台 web 服务器安装依赖软件和创建管理用户

1)切换系统光盘安装依赖程序

img

2)删除系统 yum 仓库配置本地 yum 仓库

img

3)挂载系统盘

img

4)安装依赖软件和创建管理 Nginx 用户

img

img

4、配置安装第二台 Web 服务器

1)卸载系统光盘挂载程序光盘

img

img

2)解压缩配置 Nginx 服务器

img

3)编译安装 Nginx 服务器

img

4)优化服务器命令

img

5)设置 Nginx 服务器主页

img

6)启动服务器查看运行状态

img

三、配置 haproxy 和 DNS 服务器使用域名 www.bdqn.com 访问负载均衡群集

1、安装配置 haproxy 依赖程序

1)切换系统光盘安装依赖程序

img

2)删除系统 yum 仓库配置本地 yum 仓库

img

3)挂载系统盘

img

4)安装 haproxy 依赖软件

img

2、配置安装 haproxy

1)切换到程序光盘

img

img

2)解压配置源代码程序

img

img

3)生成 haproxy 配置文件目录和主配置文件

img

4)生成服务控制文件添加系统服务设置服务开机自动启动

img

5)创建服务目录优化命令

img

3、配置 haproxy 服务支持负载均衡启动服务

1)修改 haproxy 主配置文件

img

img

2)启动服务查看服务运行状态

img

4、搭建 DNS 服务器使用域名 www.bdqn.com 访问负载均衡群集

1)切换到系统光盘

img

2)挂载系统光盘到/mnt 目录

img

3)安装 DNS 服务器

img

img

img

4)修改 DNS 服务器主配置文件检查主配置文件是否有错误

img

img

img

5)修改 DNS 区域数据库文件

img

img

img

6)启动 DNS 服务设置开机自动启动

img

img

img

5、客户端访问 haproxy 的网站服务器域名 www.bdqn.com 验证

1)第一次访问网站服务器

img

2)第二次访问网站服务器

img


🙏作者水平很有限,如果发现错误,一定要及时告知作者哦!感谢感谢!

img

相关文章:

配置 Haproxy 负载均衡群集

配置 haproxy 负载均衡群集 🏆荣誉认证:51CTO博客专家博主、TOP红人、明日之星;阿里云开发者社区专家博主、技术博主、星级博主。 💻微信公众号:微笑的段嘉许 📌本文由微笑的段嘉许原创! &#…...

计算机网络笔记 | 第一章:计算机网络概述(1.1-1.4小节知识点整理)

从专栏将讲述有关于计算机网络相关知识点,如果有想学习Java的小伙伴可以点击下方连接查看专栏,还有JavaEE部分 本专栏地址(持续更新中):🔥计算机网络 MyBatis:✍️MyBatis Java入门篇&#xff1…...

Flutter3引用原生播放器-Android篇

接上篇:Flutter3引用原生播放器-IOS(Swift)篇 安卓端原生播放器的接入思路与ios基本一致,所以本篇就不废话了,直接上代码: 创建插件VideoViewPlugin实现FlutterPlugin: package io.flutter.plugins.videoplayer;imp…...

SerenityOS 操作系统类 Unix 操作系统

创建于2018年的SerenityOS是一个类似Unix的操作系统,但是带有图形化界面,适合X86台式计算机,,其界面类似90 年代的Win98/NT。几乎由一个人完成额操作系统。这几天其Web浏览器通过了 Acid3 浏览器。 Kernel features 具有抢占式多…...

Bean作用域和生命周期

目录 Bean作用域的例子 作用域定义 Bean的六种作用域 设置作用域 Spring的执行过程和Bean的生命周期 Spring的主要执行流程 Bean的生命周期 在上篇博客中我们使用Spring存储和获取Bean,因此Bean是Spring中最重要的资源,今天这篇博客就深入了解Bean对象 Bean作用域的例子 …...

STM32笔记

目录 1.1. 预备阶段 1.2. 单片机介绍 2. 初识STM32 2.1. STM32 1.1. 预备阶段 1.2. 单片机介绍 1.2.1. 单片机是什么 单片微型计算机(Single Chip Microcomputer)简称为单片机(Microcontrollers),也称为微控制单元(Microcontroller Uni…...

【论文阅读】基于LevelDB的分布式数据库研究

基于LevelDB的分布式数据库研究 基于LevelDB的分布式数据库的研究与实现 - 中国知网 (cnki.net) 实现了什么? 基于键值型NoSQL数据库LevelDB,并与数据一致性算法Raft、 数据分片和负载均衡相结合,设计并实现基于LevelDB的分布式数据库。 主要…...

JavaScript高级 Iterator Generator

1. Iterator 1. JavaScript迭代器协议 在JavaScript中,迭代器也是一个具体的对象,这个对象需要符合迭代器协议(iterator protocol): ◼ 迭代器协议定义了产生一系列值(无论是有限还是无限个)…...

数字IC手撕代码--乐鑫科技(次小值与次小值出现的次数)

前言:本专栏旨在记录高频笔面试手撕代码题,以备数字前端秋招,本专栏所有文章提供原理分析、代码及波形,所有代码均经过本人验证。目录如下:1.数字IC手撕代码-分频器(任意偶数分频)2.数字IC手撕代…...

JavaScript DOM和BOM

目录 查找html元素 1.通过id 2.通过标签名 3.通过类名 DOM 1.创建动态的HTML内容 2.修改元素内容 3.改变HTML属性 4.改变css样式 DOM事件 DOM节点 1.添加HTML元素 2.删除HTML元素 浏览器对象 1.Window对象 2.Screen对象 3.History对象 4.Location对象 5.Navi…...

JUC并发编程(二)

一、过时方法 一些不推荐使用的方法已经过时,容易破坏同步代码块,使对象的锁得不到释放,进而造成线程死锁 二、守护线程 默认情况下,Java 进程需要等待所有线程都运行结束,才会结束。有一种特殊的线程叫做守护线程…...

Python控制CANoe使能TestCase

前面介绍了多种CANoe配置下的dbc文件添加,常见的配置我们能够常用的就是testcase的使能和环境变量的设置,针对于环境变量的问题,我们下次再进行详聊,今天主要聊一下测试脚本的使能。在做这块之前,我们第一步就需要了解我们的测试脚本的层级是都包含有哪些? 一、测试脚本结…...

sql的执行顺序

一.前言 在我们世家开发中,我们少不了和数据库打交道, 我们的持久层是与数据库打交道的, 少不了要用sql语句来请求数据库的数据, 前台(前端页面)请求到-->控制器(接口层)-->service(业务层)-->mapper或dao(持久层) 简图: 在持久层我们的sql是怎么执行的, 它的执行顺…...

java 8 中的实用技巧

1 判断2个对象是否相等Objects.equals(a, b)(1) 比较时, 若a 和 b 都是null, 则返回 true, 如果a 和 b 其中一个是null, 另一个不是null, 则返回false。注意:不会抛出空指针异常。(2) a 和 b 如果都是空值字符串:"", 则 a.equals(b…...

自学大数据的第一天

默认跳过基础部分,直接搞集群的部分,期间用到的linux基础默认大伙都会了(不会的话可以现用现查) Hadoop集群搭建 集群特点: 1,逻辑上分离~集群之间没有依赖,互不影响 2,某些进程往往部署在一台服务器上,但是属于不同的集群 3,MapReduce 是计算框架,代码层面的处理逻辑 集群的…...

redis秒杀

redis优惠券秒杀 为什么订单表订单ID不采用自增长? id规律性太明显,容易被用户猜测到(比如第一天下订单id10,第二天下订单id100,在昨天的1天内只卖出90商品)受单表数据量限制(订单数据量大&am…...

JS学习第3天——Web APIs之DOM(什么是DOM,相关API【创建、增删改查、属性操作、事件操作API】)

目录一、Web APIs介绍1、API2、Web API二、DOM1、DOM树2、获取元素3、事件基础4、操作元素属性5、节点(node)操作三、DOM操作总结(创建、增删改查、属性操作、事件操作API)1、创建2、增3、删4、改5、查6、属性操作7、事件操作四、…...

【MySQL】增删改操作(基础篇)

目录 1、新增操作(Create) 1.1 单行数据 全列插入 1.2 多行数据 全列插入 1.3 单行数据 指定列插入 2、修改操作(Update) 3、删除操作(Delete) 1、新增操作(Create) 如何给一张表新增数据呢? 新增(Create),在我们数据库中,用 ins…...

STM32—DMA

什么是DMA? DMA(Direct Memory Access,直接存储器访问) 提供在外设与内存、存储器和存储器、外设与外设之间的高速数据传输使用。它允许不同速度的硬件装置来沟通,而不需要依赖于CPU,在这个时间中,CPU对于内存的工作来…...

C语言刷题(3)——“C”

各位CSDN的uu们你们好呀,今天小雅兰的内容还是做几道题噢,好好复习一下之前的知识点,现在,就让我们开始复习吧 牛客网在线编程_编程学习|练习题_数据结构|系统设计题库 倒置字符串_牛客题霸_牛客网 BC40 竞选社长 BC41 你是天才…...

.Net框架,除了EF还有很多很多......

文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...

ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放

简介 前面两期文章我们介绍了I2S的读取和写入,一个是通过INMP441麦克风模块采集音频,一个是通过PCM5102A模块播放音频,那如果我们将两者结合起来,将麦克风采集到的音频通过PCM5102A播放,是不是就可以做一个扩音器了呢…...

C++中string流知识详解和示例

一、概览与类体系 C 提供三种基于内存字符串的流&#xff0c;定义在 <sstream> 中&#xff1a; std::istringstream&#xff1a;输入流&#xff0c;从已有字符串中读取并解析。std::ostringstream&#xff1a;输出流&#xff0c;向内部缓冲区写入内容&#xff0c;最终取…...

CMake控制VS2022项目文件分组

我们可以通过 CMake 控制源文件的组织结构,使它们在 VS 解决方案资源管理器中以“组”(Filter)的形式进行分类展示。 🎯 目标 通过 CMake 脚本将 .cpp、.h 等源文件分组显示在 Visual Studio 2022 的解决方案资源管理器中。 ✅ 支持的方法汇总(共4种) 方法描述是否推荐…...

关键领域软件测试的突围之路:如何破解安全与效率的平衡难题

在数字化浪潮席卷全球的今天&#xff0c;软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件&#xff0c;这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下&#xff0c;实现高效测试与快速迭代&#xff1f;这一命题正考验着…...

管理学院权限管理系统开发总结

文章目录 &#x1f393; 管理学院权限管理系统开发总结 - 现代化Web应用实践之路&#x1f4dd; 项目概述&#x1f3d7;️ 技术架构设计后端技术栈前端技术栈 &#x1f4a1; 核心功能特性1. 用户管理模块2. 权限管理系统3. 统计报表功能4. 用户体验优化 &#x1f5c4;️ 数据库设…...

让回归模型不再被异常值“带跑偏“,MSE和Cauchy损失函数在噪声数据环境下的实战对比

在机器学习的回归分析中&#xff0c;损失函数的选择对模型性能具有决定性影响。均方误差&#xff08;MSE&#xff09;作为经典的损失函数&#xff0c;在处理干净数据时表现优异&#xff0c;但在面对包含异常值的噪声数据时&#xff0c;其对大误差的二次惩罚机制往往导致模型参数…...

GO协程(Goroutine)问题总结

在使用Go语言来编写代码时&#xff0c;遇到的一些问题总结一下 [参考文档]&#xff1a;https://www.topgoer.com/%E5%B9%B6%E5%8F%91%E7%BC%96%E7%A8%8B/goroutine.html 1. main()函数默认的Goroutine 场景再现&#xff1a; 今天在看到这个教程的时候&#xff0c;在自己的电…...

[大语言模型]在个人电脑上部署ollama 并进行管理,最后配置AI程序开发助手.

ollama官网: 下载 https://ollama.com/ 安装 查看可以使用的模型 https://ollama.com/search 例如 https://ollama.com/library/deepseek-r1/tags # deepseek-r1:7bollama pull deepseek-r1:7b改token数量为409622 16384 ollama命令说明 ollama serve #&#xff1a…...

WEB3全栈开发——面试专业技能点P4数据库

一、mysql2 原生驱动及其连接机制 概念介绍 mysql2 是 Node.js 环境中广泛使用的 MySQL 客户端库&#xff0c;基于 mysql 库改进而来&#xff0c;具有更好的性能、Promise 支持、流式查询、二进制数据处理能力等。 主要特点&#xff1a; 支持 Promise / async-await&#xf…...