HAProxy七层负载均衡配置方案

HAProxy

  • 一、准备
  • 二、配置HAProxy服务器
    • 1. 下载HAProxy
    • 2. 编写配置文件
    • 3. 启动HAProxy服务
  • 三、配置后端服务
    • ①配置web服务器
    • ②配置php服务器
  • 四、测试

一、准备

  • 准备5台CentOS7服务器,IP地址如下:
    • HAProxy 192.168.152.71
    • web1 192.168.152.72
    • web2 192.168.152.73
    • php1 192.168.152.74
    • php2 192.168.152.75

二、配置HAProxy服务器

1. 下载HAProxy

yum install -y haproxy

2. 编写配置文件

vim /etc/haproxy/haproxy.cfg

编写内容如下

# 全局设置
globallog 127.0.0.1 local3 info          # 日志记录到本地maxconn 4096                       # 最大连接数uid nobody                         # 运行用户,写用户编号99也行gid nobody                         # 运行组,写组编号99也行daemon                             # 以守护进程模式运行nbproc 1                           # 使用的进程数量pidfile /run/haproxy.pid           # PID 文件位置# 默认设置
defaultslog           global               # 使用全局日志设置mode          http                 # 设置模式为 HTTPmaxconn       2048                 # 默认最大连接数retries       3                    # 重试次数option        redispatch           # 如果一个服务器超载,重新分配请求contimeout    5000                 # 连接超时(毫秒)clitimeout    50000                # 客户端超时(毫秒)srvtimeout    50000                # 服务器超时(毫秒)
#timeout connect 5000   #contimeout的新版写法
#timeout client  50000  #clitimeout的新版写法
#timeout server  50000  #srvtimeout的新版写法option        abortonclose         # 客户端关闭连接时中断后端连接stats uri     /admin?stats         # 统计信息的 URIstats realm   Private lands        # 统计信息页面标题stats auth    admin:password       # 统计信息页面认证,登录用户为 admin,登录密码为 passwordstats hide-version                 # 隐藏版本信息# 前端配置
frontend http-inbind 0.0.0.0:80                    # 监听所有 IP 的 80 端口mode http                          # HTTP 模式log global                         # 使用全局日志设置option httplog                     # 启用 HTTP 日志记录option httpclose                   # 在每个请求后关闭连接acl html url_reg -i \.html$        # 匹配 URL 中的 .html 扩展名use_backend html-server if html    # 如果匹配 .html 扩展名    acl php url_reg -i \.php$          # 匹配 URL 中的 .php 扩展名acl php url_reg -i \.php$          # 匹配 URL 中的 .php 扩展名use_backend php-server if php      # 如果匹配 .php 扩展名,则使用 php-server 后端default_backend html-server        # 默认使用 html-server 后端# web后端配置
backend html-servermode http                          # HTTP 模式balance roundrobin                 # 负载均衡算法:轮询option httpchk GET /index.html     # 健康检查:请求 /index.htmlcookie SERVERID insert indirect nocache # 插入会话 Cookieserver html-A 192.168.152.72:80 weight 1 cookie 1 check inter 2000 rise 2 fall 5 # 后端服务器,注意 cookiec 后的值是唯一的server html-B 192.168.152.73:80 weight 1 cookie 2 check inter 2000 rise 2 fall 5 # 后端服务器,注意 cookiec 后的值是唯一的# php后端配置
backend php-servermode http                          # HTTP 模式balance roundrobin                 # 负载均衡算法:轮询option httpchk GET /index.php     # 健康检查:请求 /index.phpcookie SERVERID insert indirect nocache # 插入会话 Cookieserver php-A 192.168.152.74:80 weight 1 cookie 3 check inter 2000 rise 2 fall 5 # 后端服务器,注意 cookiec 后的值是唯一的server php-B 192.168.152.75:80 weight 1 cookie 4 check inter 2000 rise 2 fall 5 # 后端服务器,注意 cookiec 后的值是唯一的,则使用 html-server 后端

3. 启动HAProxy服务

systemctl start haproxy && systemctl enable haproxy

三、配置后端服务

①配置web服务器

测试用简单配置,web1 和 web2 都要配置

  1. 安装http服务
    yum install -y httpd
    
  2. 编写主页
    web1:
    echo web1 > /var/www/html/index.html
    
    web2:
    echo web2 > /var/www/html/index.html
    
  3. 启动http服务
    systemctl start httpd && systemctl enable httpd
    

②配置php服务器

测试用简单配置,php1 和 php2 都要配置

  1. 安装 php 和 http 服务
    yum install -y httpd php
    
  2. 编写主页
    php1:
    echo php1 > /var/www/html/index.php
    
    php2:
    echo php2 > /var/www/html/index.php
    
  3. 启动服务
    systemctl start httpd && systemctl enable httpd
    

四、测试

可以在浏览器访问 HAProxy服务器地址/统计信息的URIhttp://192.168.152.71/admin?stats 可以看到如下界面

  • 图中绿色部分变为其他颜色代表什么:
    • 红色
      • 配置文件中服务器地址冲突、找不到服务器
    • 黄色
      • 对应服务器中的http服务未开启

在这里插入图片描述

  • 可以在浏览器分别输入:
    • http://192.168.152.71
    • http://192.168.152.71/index.html
    • http://192.168.152.71/index.php

多次刷新,查看结果,前两个的结果为 web1,web2;最后一个结果为 php1,php2。
如果配置没有问题,但多次刷新无果,可能是浏览器缓存,可以用命令 elinks
下载 yum insdall -y elinks

elinks --dump http://192.168.152.71
elinks --dump http://192.168.152.71/index.html
elinks --dump http://192.168.152.71/index.php

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

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

相关文章

第九届世界3D渲染大赛火热报名中

世界渲染大赛是一个汇聚世界顶尖CG艺术家的大赛,目前已经成功举办了八届,神仙打架般的作品让众多3D艺术家们直呼过瘾,如今第九届也在火热进行中,快来与众多世界顶尖艺术家们一决高下吧!下面给大家介绍一下第九届的赛事…

成都数字产业中心崛起,树莓集团如何加速国际数字影像产业园的全球步伐?

在数字化浪潮的推动下,成都数字产业中心近年来强势崛起,展现出令人瞩目的发展态势。据统计,过去五年间,成都数字产业的年均增长率超过了 20%,这一数据充分证明了其强大的发展动力。而在这片充满活力与创新的土地上&…

《Unified Visual Relationship Detection with Vision and Language Models》ICCV2023

摘要 这项工作集中在训练单一的视觉关系检测器(VRD),该检测器可以预测来自多个数据集的标签空间的并集。由于不同数据集的标签体系不一致,合并标签是一个挑战。作者提出了 UniVRD,一种新颖的自下而上的方法&#xff0…

MyIP:强大且简单好用!

在这个数字化的时代,IP地址就像是我们的网络身份证。各位在日常的工作中,肯定会会遇到需要和 IP 地址相关的需求。 今天和大家聊一聊一个非常好用的开源 IP 工具项目 - MyIP。 简介 MyIP一个开源IP工具箱,提供了一系列的网络检测工具&…

axios请求响应拦截器

目录 axios-拦截器 拦截器的作用 请求拦截器-基本写法: axios请求拦截器-统一设置token 需求: 核心步骤: 关键代码: 响应拦截器-基本写法: axios响应拦截器-统一处理token失效 需求: 核心步骤: 关键代码: axios响应拦截器-数据剥离 需求: 核心步骤: 关键代码: ax…

七、ESP32-S3上使用MicroPython点亮WS2812智能LED灯珠并通过web控制和JS颜色选择器改变灯珠颜色

本地代码集成离线iro.js库来添加一个颜色选择器控件,在无网络环境可以通过JavaScript将选中的颜色发送到服务器以改变LED颜色。以下是将iro.js集成到网页后的颜色图片。 Iro.js 地址API操作手册 color:change # 每当所选颜色发生变化时触发 - 无论是当用户与颜色选…

Oracle|DM 常用|不常用 SQL大口袋

目录 一、前言 二、SQL写法 1、sql获取某一条数据中的前一条和后一条 2、实现like多个值的查询(Oracle和dm支持,MySQL未试过) 3、start with connect by prior 使用方法 4、用hextoraw解决select、update、delete语句执行慢 5、ORA-00…

Vue+Element Plus后台管理主界面搭建实现

​ 续接Django REST Framework&#xff0c;使用Vite构建Vue3的前端项目 1. 后台管理系统主界面框架搭建 后台系统主界面搭建 新建后台管理文件目录 完成后台整体布局 // 1.主界面 index.vue<script setup lang"ts"></script><template><el-…

初识自然语言处理NLP

文章目录 1、简介2、自然语言处理的发展简史3、语言学理论句法学&#xff08;Syntax&#xff09;语义学&#xff08;Semantics&#xff09;语用学&#xff08;Pragmatics&#xff09;形态学&#xff08;Morphology&#xff09; 4、统计与机器学习方法n-gram 模型隐马尔可夫模型…

C++20中的模块

大多数C项目使用多个翻译单元(translation units)&#xff0c;因此它们需要在这些单元之间共享声明和定义(share declarations and definitions)。headers的使用在这方面非常突出。模块(module)是一种language feature&#xff0c;用于在翻译单元之间共享声明和定义。它们是某些…

怎么用云手机进行TikTok矩阵运营

TikTok作为炙手可热的社交媒体巨头&#xff0c;已经吸引了亿万用户的目光。随着科技的飞速发展&#xff0c;云手机的出现为TikTok矩阵运营注入了新的活力。本文将深入探讨云手机在TikTok矩阵运营中的实际应用&#xff0c;并分享一系列高效策略与技巧。 &#xff08;1&#xff0…

DGA上的动态规划

前言&#xff1a;之前都没有写过建模成有向图来动态规划的&#xff0c;但是这个题可以抽象成有向图来做 我们可以用方块的编号和高来确定底下的长和宽 其实这题说白了就是一个记忆化搜索&#xff0c;但是不知道能不能建模出来而已 #define _CRT_SECURE_NO_WARNINGS #include&l…

39.【C语言】指针(重难点)(D)

目录 10.野指针 *定义 *案例 11.野指针规避方法 *初始化 *防止越界 *指针变量不再使用时&#xff0c;及时置NULL&#xff0c;指针使用之前检查有效性 *避免返回局部变量的地址 *assert断言 12.assert断言 *解释 *作用 *优点 *启用assert的开关 往期推荐 承接上篇 38.【C语言】指…

Qt实现类似淘宝商品展示看板功能简版

前一篇文章的简化版本只有浏览功能&#xff0c;前一篇文章链接如下&#xff1a; Qt实现类似淘宝商品看板的界面&#xff0c;带有循环翻页以及点击某页跳转的功能 效果如下&#xff1a; 代码留给有需要的人。 #ifndef ModelDashboardGroup_h__ #define ModelDashboardGroup_…

选择叮咚门铃的材质注意事项

在挑选叮咚门铃时&#xff0c;材质是一个不容忽视的重要因素。合适的材质不仅能确保门铃的耐用性和美观度&#xff0c;还能影响其性能和使用体验。 塑料材质的叮咚门铃是较为常见且经济实惠的选择。它轻巧且易于成型&#xff0c;可以被设计成各种独特的形状和颜色&#xff0c;为…

Java开发笔记--通用基础数据校验的设计

最近在开发一个功能&#xff0c;对排水管网的基础数据(包括管井、管道、泵站&#xff0c;雨水口&#xff0c;雨水口线&#xff0c;泵站&#xff0c;污水处理厂&#xff0c;排口等)的导入进行校验。 以字段为纬度&#xff0c;考虑二个方面的校验&#xff1a;数据库唯一&#xf…

【Windows】如何用防火墙禁用某个软件联网

我们使用一些激活软件时&#xff0c;经常需要防止软件联网造成激活失效&#xff0c;以下说明如何通过防火墙配置屏蔽掉软件联网。 以下说明手动添加防火墙拦截的方法&#xff1a; 使用【WinR】快捷键打开运行窗口然后输入【wf.msc】 点击确定。 点击左侧的出站规则然后点击右…

el-table自动滚动到最底部

我的需求是这样的&#xff0c;因为我的表格是动态的&#xff0c;可以手动新增行&#xff0c;固定表头&#xff0c;而且需要一屏显示&#xff0c;为了方便用户就需要再新增的时候表格自动向上滚动。 差了官方文档后发现有一个属性可以支持 这个属性正是自己需要的&#xff0c;所…

Python面试宝典第30题:找出第K大元素

题目 给定一个整数数组nums&#xff0c;请找出数组中第K大的数&#xff0c;保证答案存在。其中&#xff0c;1 < K < nums数组长度。 示例 1&#xff1a; 输入&#xff1a;nums [3, 2, 1, 5, 6, 4], K 2 输出&#xff1a;5 示例 2&#xff1a; 输入&#xff1a;nums …

Rest风格快速开发

Rest风格开发简介 简单点来说&#xff0c;Rest风格的开发就是让别人不知道你在做什么&#xff0c;以deleteUserById和selectUserById为例&#xff1a; 普通开发&#xff1a;路径 /users/deleteById?Id666 /users/selectById?Id666 别人很容易知道你这是在干什么 Rest风…