HAproxy,nginx实现七层负载均衡
环境准备:
192.168.88.25 (client)
192.168.88.26 (HAproxy)
192.168.88.27 (web1)
192.168.88.28 (web2)
192.168.88.29 (php1)
192.168.88.30 (php2)
关闭firewalld,selinux。配置yum源,扩展源epel-release
实验1
一、web1,web2
1、下载httpd服务
yum install httpd -y
2、开启httpd服务并且设置开启自启
systemctl start httpd
systemctl enable httpd
二、haproxy主机
1、安装haproxy(192.168.88.26)
yum install haproxy -y
2、配置HAproxy
vim /etc/haproxy/haproxy.cfg
globallog 127.0.0.1 local3 infomaxconn 4096uid nobody
# uid 99gid nobody
# gid 99daemonnbproc 1pidfile /run/haproxy.pid
defaultslog globalmode httpmaxconn 2048retries 3option redispatchcontimeout 5000clitimeout 50000srvtimeout 50000
#timeout connect 5000
#timeout client 50000
#timeout server 50000option abortonclosestats uri /admin?statsstats realm Private landsstats auth admin:passwordstats hide-versionfrontend http-inbind 0.0.0.0:80mode httplog globaloption httplogoption httpcloseacl html url_reg -i \.html$use_backend html-server if htmldefault_backend html-serverbackend html-servermode httpbalance roundrobinoption httpchk GET /index.htmlcookie SERVERID insert indirect nocacheserver html-A web1:80 weight 1 cookie 3 check inter 2000 rise 2 fall 5server html-B web2:80 weight 1 cookie 4 check inter 2000 rise 2 fall 5
3、域名解析
vim /etc/hosts
4、开启HAproxy服务
systemctl start haproxy.service
三、客服端(client)
1、安装elinks
yum install -y elinks
2、域名解析
vim /etc/hosts

3、进行访问测试


实验2
一、192.168.88.29(php1),192.168.88.30(php2)
1、安装httpd,php
yum install httpd php -y
2、修改php服务默认的网页,方便测试观察
192.168.88.29(php1)
echo php1 > /var/www/html/index.php
192.168.88.30(php2)
echo php2 > /var/www/html/index.php
192.168.88.29(php1),192.168.88.30(php2)开启httpd服务,并且设置开启自启
systemctl start httpd.service
systemctl enable httpd.service
二、192.168.88.26(haproxy)
1、域名解释php1,php2
vim /etc/hosts

2、修改配置文件192.168.88.26(HAproxy)
vim /etc/haproxy/haproxy.cfg
globallog 127.0.0.1 local3 infomaxconn 4096uid nobody
# uid 99gid nobody
# gid 99daemonnbproc 1pidfile /run/haproxy.pid
defaultslog globalmode httpmaxconn 2048retries 3option redispatchcontimeout 5000clitimeout 50000srvtimeout 50000
#timeout connect 5000
#timeout client 50000
#timeout server 50000option abortonclosestats uri /admin?statsstats realm Private landsstats auth admin:passwordstats hide-versionfrontend http-inbind 0.0.0.0:80mode httplog globaloption httplogoption httpcloseacl html url_reg -i \.html$use_backend html-server if htmlacl php url_reg -i \.php$use_backend php-server if phpdefault_backend html-serverbackend html-servermode httpbalance roundrobinoption httpchk GET /index.htmlcookie SERVERID insert indirect nocacheserver html-A web1:80 weight 1 cookie 3 check inter 2000 rise 2 fall 5server html-B web2:80 weight 1 cookie 4 check inter 2000 rise 2 fall 5
backend php-servermode httpbalance roundrobinoption httpchk GET /index.phpcookie SERVERID insert indirect nocacheserver php-A php1:80 weight 1 cookie 3 check inter 2000 rise 2 fall 5server php-B php2:80 weight 1 cookie 4 check inter 2000 rise 2 fall 5
3、重启服务haproxy
systemctl restart haproxy.service
4、192.168.88.25(client)访问192.168.88.26(haproxy)进行测试


三、nginx负载均衡
1、192.168.88.26(haproxy),把haproxy服务删除,替换成nginx进行负载均衡
yum remove -y haproxy
2、安装nginx服务
yum install -y nginx
3、编辑nginx服务配置文件
vim /etc/nginx/nginx.conf
#http下添加upstream html {server web1:80;server web2:80;}upstream php {server php1:80;server php2:80;}
#server下添加location / {proxy_pass http://html;}location ~ \.php$ {proxy_pass http://php;}


4、192.168.88.25(client)访问192.168.88.26(nginx)进行测试

相关文章:
HAproxy,nginx实现七层负载均衡
环境准备: 192.168.88.25 (client) 192.168.88.26 (HAproxy) 192.168.88.27 (web1) 192.168.88.28 (web2) 192.168.88.29 (php1) 192.168.88.30…...
ps aux | grep smart_webrtc这条指令代表什么意思
这条指令是在Linux系统中使用的命令,它的含义是列出所有正在运行的进程,并通过grep命令筛选出包含"smart_webrtc"关键字的进程。 具体解释如下: ps 是一个用于报告当前系统进程状态的命令。aux 是ps命令的选项,其中&a…...
第十三届蓝桥杯真题Python c组D.数位排序(持续更新)
博客主页:音符犹如代码系列专栏:蓝桥杯关注博主,后期持续更新系列文章如果有错误感谢请大家批评指出,及时修改感谢大家点赞👍收藏⭐评论✍ 问题描述 小蓝对一个数的数位之和很感兴趣, 今天他要按照数位之和给数排序。…...
【RabbitMQ】RabbitMq消息丢失、重复消费以及消费顺序性的解决方案
RabbitMq消息丢失主要是有三种情况:生产者消息未发送到服务端、服务端消息没有做持久化导致丢失、消费端未收到消息。解决方案依次如下: 开启事务或使用确认机制。对于一些重要的消息,生产者可以开启事务,确保消息发送成功后再提…...
海陆钻井自动化作业机器人比例阀放大器
海陆钻井自动化作业机器人是现代海洋石油勘探与钻井领域的关键装备,它通过自动化和无人化技术显著提高了钻井效率和安全性。海陆钻井自动化作业机器人主要用于在海上和陆地的钻井平台上进行自动化、无人化的一体化作业。这种设备能够自动切换钻杆,极大地…...
golang学习笔记19-面向对象(一):面向对象的引入
注:本人已有C,C,Python基础,只写本人认为的重点。 这节开始就是面向对象的内容了,为方便复用结构体等类型,本人定义了一个utils包,用于定义这些类型,之后的文章也会用到,希望读者注意…...
【从零开始实现stm32无刷电机FOC】【实践】【7.1/7 硬件设计】
目录 stm32电路磁编码器电路电机驱动电路电流采样电路电机选择本文示例硬件说明 为了承载和验证本文的FOC代码工程,本节设计了一个简易的三相无刷电机 硬件套件,主控采用非常常用的stm32f103c8t6单片机,电机编码器采用MT6701,电机…...
unix中父进程如何获取子进程的终止状态
一、前言 本文将介绍在unix系统中,父进程如何获取子进程的终止状态。本文主要围绕如下函数展开: 1.wait 2.waitpid 3.waitid 4.wait3、wait4 在讨论这些函数前,先介绍一个进程从创建到释放子进程的过程。 二、子进程的创建以及终止 在unix…...
【ESP 保姆级教程】小课设篇 —— 案例:20240505_基于esp01s的局域网控制灯
忘记过去,超越自己 ❤️ 博客主页 单片机菜鸟哥,一个野生非专业硬件IOT爱好者 ❤️❤️ 本篇创建记录 2024-09-30 ❤️❤️ 本篇更新记录 2023-09-30 ❤️🎉 欢迎关注 🔎点赞 👍收藏 ⭐️留言📝ὤ…...
Qt如何将外部窗口嵌入部件中
一、简述 今天给大家讲解的是使用QWindow类通过窗口句柄将外部的应用程序嵌入到我们的部件中来显示。在讲解之前可以延伸一下,当时项目中使用QProcess启动一些本地软件或者执行脚本时,需要将启动的第三方窗口嵌入到我们自己写的窗口中,此时我…...
2024年9月30日随笔
今天是国庆假期前的最后一天了,刚上完课,坐在实验室的工位前,感到焦虑又无奈,11月9号,网络规划工程师软考考试,学了一部分了,感觉有些难,还有一个月多一点点的时间,不知道…...
springboot+satoken实现刷新token(值变化)
欢迎来到我的博客,代码的世界里,每一行都是一个故事 🎏:你只管努力,剩下的交给时间 🏠 :小破站 springbootsatoken实现刷新token satoken是什么?支持什么?为什么需要&…...
63.HDMI显示器驱动设计与验证-彩条实验
(1)常见的视频传输接口有三种: VGA 接口、 DVI 接口和 HDMI 接口,目前的显示设备都配有这三种视频传输接口。三类视频接口的发展历程为 VGA→DVI→HDMI。其中 VGA 接口出现最早,只能传输模拟图像信号; 随后…...
安卓13设置删除网络和互联网选项 android13隐藏设置删除网络和互联网选项
总纲 android13 rom 开发总纲说明 文章目录 1.前言2.问题分析3.代码分析4.代码修改4.1修改方法14.2修改方法25.编译6.彩蛋1.前言 有些客户不想让用户修改默认的网络配置,禁止用户进入里面调整网络相关的配置。 2.问题分析 像这个问题,我们有好几种方法去处理,这种需求一般…...
C++的6种构造函数
在 C 中,构造函数是一种特殊的成员函数,用于初始化类对象。在对象创建时自动调用,构造函数的主要作用是分配资源、初始化数据成员等。根据不同的功能和使用场景,C 提供了多种类型的构造函数: 1. 默认构造函数 (Defaul…...
【FE】NPM——概述
NPM基本使用 下载Node 老生常谈,选择LTS版本官网放这里:https://nodejs.cn/download/ 1.镜像配置:镜像源 镜像配置 依赖仓库:版本查看 //不确定仓库有哪些版本,列出指定包的所有版本 npm view <package-name&…...
Clipboard.js实现复制文本到剪贴板功能
一、Clipboard.js简介 Clipboard.js是一个轻量级的实现复制文本到剪贴板功能的JavaScript插件,该插件可以将输入框,文本域,DOM节点元素中的文本内容复制到剪贴板中。 官网地址:Clipboard.js 浏览器兼容性:兼容Chrome、…...
Harbor安装笔记
下载离线安装包 wget https://github.com/goharbor/harbor/releases/download/v2.11.1/harbor-offline-installer-v2.11.1.tgz 解压 tar -zxvf harbor-offline-installer-v2.11.1.tgz 复制一份配置文件出来,修改配置 cp harbor.yml.tmpl harbor.yml vim harbor…...
HTTP 1.0 2.0 3.0详解
HTTP HTTP全称超文本传输协议,是一种属于应用层的通信协议。它允许将超文本标记语言文档(HTML)从Web服务器传输到客户端的浏览器。 HTTP报文结构 请求报文结构 请求方法: GET:一般用来请求已被URI识别的资源&#x…...
Python操作TXT文本:从入门到精通
在数字化时代,文本处理成为了许多工作和项目的基础。Python作为一种强大且易学的编程语言,在文本处理方面展现出了无与伦比的优势。本文将通过举例的方式,向读者介绍如何使用Python来操作TXT文本,让您轻松掌握文本处理的精髓。 一、读取TXT文本内容 首先,我们需要学会如…...
【OSG学习笔记】Day 18: 碰撞检测与物理交互
物理引擎(Physics Engine) 物理引擎 是一种通过计算机模拟物理规律(如力学、碰撞、重力、流体动力学等)的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互,广泛应用于 游戏开发、动画制作、虚…...
8k长序列建模,蛋白质语言模型Prot42仅利用目标蛋白序列即可生成高亲和力结合剂
蛋白质结合剂(如抗体、抑制肽)在疾病诊断、成像分析及靶向药物递送等关键场景中发挥着不可替代的作用。传统上,高特异性蛋白质结合剂的开发高度依赖噬菌体展示、定向进化等实验技术,但这类方法普遍面临资源消耗巨大、研发周期冗长…...
循环冗余码校验CRC码 算法步骤+详细实例计算
通信过程:(白话解释) 我们将原始待发送的消息称为 M M M,依据发送接收消息双方约定的生成多项式 G ( x ) G(x) G(x)(意思就是 G ( x ) G(x) G(x) 是已知的)࿰…...
如何在看板中体现优先级变化
在看板中有效体现优先级变化的关键措施包括:采用颜色或标签标识优先级、设置任务排序规则、使用独立的优先级列或泳道、结合自动化规则同步优先级变化、建立定期的优先级审查流程。其中,设置任务排序规则尤其重要,因为它让看板视觉上直观地体…...
什么是库存周转?如何用进销存系统提高库存周转率?
你可能听说过这样一句话: “利润不是赚出来的,是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业,很多企业看着销售不错,账上却没钱、利润也不见了,一翻库存才发现: 一堆卖不动的旧货…...
SpringBoot+uniapp 的 Champion 俱乐部微信小程序设计与实现,论文初版实现
摘要 本论文旨在设计并实现基于 SpringBoot 和 uniapp 的 Champion 俱乐部微信小程序,以满足俱乐部线上活动推广、会员管理、社交互动等需求。通过 SpringBoot 搭建后端服务,提供稳定高效的数据处理与业务逻辑支持;利用 uniapp 实现跨平台前…...
Rust 异步编程
Rust 异步编程 引言 Rust 是一种系统编程语言,以其高性能、安全性以及零成本抽象而著称。在多核处理器成为主流的今天,异步编程成为了一种提高应用性能、优化资源利用的有效手段。本文将深入探讨 Rust 异步编程的核心概念、常用库以及最佳实践。 异步编程基础 什么是异步…...
HTML前端开发:JavaScript 常用事件详解
作为前端开发的核心,JavaScript 事件是用户与网页交互的基础。以下是常见事件的详细说明和用法示例: 1. onclick - 点击事件 当元素被单击时触发(左键点击) button.onclick function() {alert("按钮被点击了!&…...
vue3+vite项目中使用.env文件环境变量方法
vue3vite项目中使用.env文件环境变量方法 .env文件作用命名规则常用的配置项示例使用方法注意事项在vite.config.js文件中读取环境变量方法 .env文件作用 .env 文件用于定义环境变量,这些变量可以在项目中通过 import.meta.env 进行访问。Vite 会自动加载这些环境变…...
IP如何挑?2025年海外专线IP如何购买?
你花了时间和预算买了IP,结果IP质量不佳,项目效率低下不说,还可能带来莫名的网络问题,是不是太闹心了?尤其是在面对海外专线IP时,到底怎么才能买到适合自己的呢?所以,挑IP绝对是个技…...
