当前位置: 首页 > 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 你是天才…...

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…...

(十)学生端搭建

本次旨在将之前的已完成的部分功能进行拼装到学生端,同时完善学生端的构建。本次工作主要包括: 1.学生端整体界面布局 2.模拟考场与部分个人画像流程的串联 3.整体学生端逻辑 一、学生端 在主界面可以选择自己的用户角色 选择学生则进入学生登录界面…...

模型参数、模型存储精度、参数与显存

模型参数量衡量单位 M:百万(Million) B:十亿(Billion) 1 B 1000 M 1B 1000M 1B1000M 参数存储精度 模型参数是固定的,但是一个参数所表示多少字节不一定,需要看这个参数以什么…...

vscode(仍待补充)

写于2025 6.9 主包将加入vscode这个更权威的圈子 vscode的基本使用 侧边栏 vscode还能连接ssh? debug时使用的launch文件 1.task.json {"tasks": [{"type": "cppbuild","label": "C/C: gcc.exe 生成活动文件"…...

DAY 47

三、通道注意力 3.1 通道注意力的定义 # 新增:通道注意力模块(SE模块) class ChannelAttention(nn.Module):"""通道注意力模块(Squeeze-and-Excitation)"""def __init__(self, in_channels, reduction_rat…...

生成 Git SSH 证书

🔑 1. ​​生成 SSH 密钥对​​ 在终端(Windows 使用 Git Bash,Mac/Linux 使用 Terminal)执行命令: ssh-keygen -t rsa -b 4096 -C "your_emailexample.com" ​​参数说明​​: -t rsa&#x…...

【算法训练营Day07】字符串part1

文章目录 反转字符串反转字符串II替换数字 反转字符串 题目链接&#xff1a;344. 反转字符串 双指针法&#xff0c;两个指针的元素直接调转即可 class Solution {public void reverseString(char[] s) {int head 0;int end s.length - 1;while(head < end) {char temp …...

Mac软件卸载指南,简单易懂!

刚和Adobe分手&#xff0c;它却总在Library里给你写"回忆录"&#xff1f;卸载的Final Cut Pro像电子幽灵般阴魂不散&#xff1f;总是会有残留文件&#xff0c;别慌&#xff01;这份Mac软件卸载指南&#xff0c;将用最硬核的方式教你"数字分手术"&#xff0…...

Unit 1 深度强化学习简介

Deep RL Course ——Unit 1 Introduction 从理论和实践层面深入学习深度强化学习。学会使用知名的深度强化学习库&#xff0c;例如 Stable Baselines3、RL Baselines3 Zoo、Sample Factory 和 CleanRL。在独特的环境中训练智能体&#xff0c;比如 SnowballFight、Huggy the Do…...

CSS设置元素的宽度根据其内容自动调整

width: fit-content 是 CSS 中的一个属性值&#xff0c;用于设置元素的宽度根据其内容自动调整&#xff0c;确保宽度刚好容纳内容而不会超出。 效果对比 默认情况&#xff08;width: auto&#xff09;&#xff1a; 块级元素&#xff08;如 <div>&#xff09;会占满父容器…...