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

别再只盯着运放了:用跨阻放大器搞定光电传感器信号调理的完整指南

光电传感器信号调理实战:跨阻放大器设计与避坑指南 当你在昏暗的灯光下测试光电传感器时,是否曾被微弱的电流信号折磨得焦头烂额?作为嵌入式工程师,我曾在凌晨三点的实验室里,面对闪烁不定的示波器波形,才…...

MediaPipeUnityPlugin技术解构与实战指南:Unity AI视觉开发进阶之路

MediaPipeUnityPlugin技术解构与实战指南:Unity AI视觉开发进阶之路 【免费下载链接】MediaPipeUnityPlugin Unity plugin to run MediaPipe 项目地址: https://gitcode.com/gh_mirrors/me/MediaPipeUnityPlugin 问题发现:Unity AI视觉开发的现实…...

保姆级避坑指南:用VMware ESXi 8.0给vCenter Server 8.0单独划个“家”(存储+网络配置详解)

VMware ESXi 8.0环境下的vCenter Server 8.0专属部署指南 在虚拟化环境中,vCenter Server作为整个VMware生态系统的"大脑",其部署的稳定性和可靠性直接影响整个虚拟化平台的运行质量。本文将深入探讨如何在ESXi 8.0环境中为vCenter Server 8.0…...

解决QGIS 3.22.4编译后启动报错:从‘dll未加载’到‘plugins缺失’的实战排错记录

QGIS 3.22.4编译后启动报错的深度排查与解决方案 当你终于完成了QGIS 3.22.4的源码编译,满怀期待地双击qgis.exe时,却遭遇了"qgis_app.dll无法加载"的报错。这就像跑完马拉松却在终点线前摔倒一样令人沮丧。但别担心,这些问题其实都…...

如何快速完成亚马逊SP-API注册:AWS IAM策略与角色配置详解

亚马逊SP-API高效注册指南:从AWS IAM配置到应用上线的全流程解析 当你的电商业务需要与亚马逊平台深度集成时,SP-API(Selling Partner API)将成为不可或缺的工具。作为亚马逊新一代的开发者接口,它比传统的MWS提供了更…...

宇视NVR接入AS-V1000平台全流程指南(含SDK端口配置避坑)

宇视NVR对接AS-V1000平台实战手册:从配置到排障的深度解析 当监控系统需要整合多品牌设备时,宇视NVR与AS-V1000平台的对接成为典型场景。不同于标准化的协议对接,SDK接入方式往往隐藏着诸多"暗礁"——从端口冲突到能力集匹配&#…...

SDMatte Web服务灰度发布:A/B测试框架搭建、用户行为埋点与转化率效果归因分析

SDMatte Web服务灰度发布:A/B测试框架搭建、用户行为埋点与转化率效果归因分析 1. 项目背景与灰度发布需求 SDMatte作为一款面向高质量图像抠图的AI模型,已在电商、设计等领域得到广泛应用。随着用户量增长和功能迭代,我们需要通过灰度发布…...

全志T3核心板DDR初始化失败:从ZQ校准误导到VREF电压偏差的排查实录

1. 问题现象与初步排查 那天早上刚到实验室,测试组的同事就急匆匆跑过来:"哥,又有三台设备启动不了,uboot都没跑起来!"我接过设备一看,果然又是熟悉的ZQ校准错误提示,这已经是本周第五…...

终极指南:如何参与Carbonyl开源终端浏览器项目贡献

终极指南:如何参与Carbonyl开源终端浏览器项目贡献 【免费下载链接】carbonyl Chromium running inside your terminal 项目地址: https://gitcode.com/gh_mirrors/ca/carbonyl Carbonyl是一个创新的开源项目,它让Chromium浏览器能够在终端中运行…...

Eigen矩阵打印踩坑记:从乱码到优雅输出的3个关键技巧与一个隐藏Bug

Eigen矩阵打印踩坑记:从乱码到优雅输出的3个关键技巧与一个隐藏Bug 第一次在ROS项目里调试Eigen矩阵时,我盯着终端里歪歪扭扭的数字对齐和突然冒出的科学计数法,花了整整两小时才意识到这不是算法问题,而是输出格式在作祟。Eigen作…...