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

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

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Linux的platform设备驱动框架
  • python中的迭代器、可迭代对象和生成器
  • 时序预测|基于变分模态分解-时域卷积-双向长短期记忆-注意力机制多变量时间序列预测VMD-TCN-BiLSTM-Attention
  • 【Linux】网络编程套接字Scoket:UDP网络编程
  • 如何设置RabbitMQ和Redis消息队列系统
  • 目标检测——YOLOv8训练自己的数据集
  • 一些常见的数据处理技术
  • android compose contraintlayout 使用 bias
  • 初识C++ · C++11(1)
  • 代码随想录——判断子序列(Leetcode 392)
  • 立仪科技光谱共焦应用之金属隔膜静态重复性测量
  • 化工材料分析丨结构分析丨配方分析丨元素分析
  • 第一百八十八节 Java XML教程 - Java StAX
  • 前端 package.json 的每一项作用
  • 初始化列表的基本介绍
  • 【Leetcode】104. 二叉树的最大深度
  • 【跃迁之路】【669天】程序员高效学习方法论探索系列(实验阶段426-2018.12.13)...
  • axios请求、和返回数据拦截,统一请求报错提示_012
  • bearychat的java client
  • Django 博客开发教程 8 - 博客文章详情页
  • Fabric架构演变之路
  • go语言学习初探(一)
  • HTTP请求重发
  • javascript 哈希表
  • JavaScript服务器推送技术之 WebSocket
  • jquery cookie
  • log4j2输出到kafka
  • ng6--错误信息小结(持续更新)
  • Python实现BT种子转化为磁力链接【实战】
  • Stream流与Lambda表达式(三) 静态工厂类Collectors
  • 对象管理器(defineProperty)学习笔记
  • 关于字符编码你应该知道的事情
  • 技术:超级实用的电脑小技巧
  • 前嗅ForeSpider采集配置界面介绍
  • 设计模式 开闭原则
  • 协程
  • 用mpvue开发微信小程序
  • 关于Kubernetes Dashboard漏洞CVE-2018-18264的修复公告
  • 湖北分布式智能数据采集方法有哪些?
  • ‌前端列表展示1000条大量数据时,后端通常需要进行一定的处理。‌
  • # 深度解析 Socket 与 WebSocket:原理、区别与应用
  • #Linux杂记--将Python3的源码编译为.so文件方法与Linux环境下的交叉编译方法
  • #控制台大学课堂点名问题_课堂随机点名
  • (10)ATF MMU转换表
  • (2)nginx 安装、启停
  • (Spark3.2.0)Spark SQL 初探: 使用大数据分析2000万KF数据
  • (vue)页面文件上传获取:action地址
  • (大众金融)SQL server面试题(1)-总销售量最少的3个型号的车及其总销售量
  • (附源码)ssm基于web技术的医务志愿者管理系统 毕业设计 100910
  • (个人笔记质量不佳)SQL 左连接、右连接、内连接的区别
  • (机器学习-深度学习快速入门)第三章机器学习-第二节:机器学习模型之线性回归
  • (三) diretfbrc详解
  • (万字长文)Spring的核心知识尽揽其中
  • (一)插入排序
  • (转)为C# Windows服务添加安装程序