Haproxy的负载均衡及动静分离

本文详细介绍了使用HAProxy实现负载均衡和反向代理的过程,包括安装配置、动态内容与静态内容分离、读写分离等高级功能,以及如何通过日志记录和监控确保系统的稳定运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • 负载均衡及反向代理的实现

  • 安装haproxy
    [root@server1 ~]# yum install haproxy.x86_64 -y
    [root@server1 ~]# vim /etc/haproxy/haproxy.cfg

修改端口号为80并编辑后端处理器 在这里插入图片描述

backend static
        balance   roundrobin  #负载均衡算法
        server    statsrv1  172.25.42.2:80 check
        server    statsrv2  172.25.42.3:80 check

在这里插入图片描述
重启haproxy服务
[root@server1 ~]# systemctl restart haproxy.service

server2与server3安装http并编辑发布页面
[root@server2 ~]# yum install httpd -y
[root@server3 ~]# yum install httpd -y
[root@server2 html]# cat index.html
server2
[root@server3 html]# cat index.html
server3

测试访问:
在这里插入图片描述

  • 日志的设置

开启udp接收方式
[root@server1 ~]# vim /etc/rsyslog.conf在这里插入图片描述
复制haproxy该条配置文件到日志配置文件中
在这里插入图片描述
在这里插入图片描述
重启日志服务
[root@server1 ~]# systemctl restart rsyslog.service

这时还未建立haproxy的日志文件
在这里插入图片描述
再次访问172.25.42.1会自动创建haproxy的日志文件
在这里插入图片描述
日志中户会记录所有有关haproxy的信息

  • 在网页中查看haproxy的工作状态

1.编辑查看网页状态与返回码配置文件
在这里插入图片描述
2.重启haproxy服务并进行查看
在网页中进行测试

在这里插入图片描述
查看返回码
在这里插入图片描述

  • 网页加密及自动刷新
    编辑配置文件,添加用户为admin,密码为westos,页面每5s自动刷新一次
    在这里插入图片描述
    在页面进行测试:
    登陆:

在这里插入图片描述

在这里插入图片描述

  • 错误报告
    添加物理机至黑名单
    在这里插入图片描述
    将物理及加入黑名单后访问

在这里插入图片描述
添加报错页面后server1下载http并修改默认端口并编辑默认发布页面再次访问

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
动静分离
编辑配置文件,去除黑名单
server2与server3添加php模块并编辑php发布文件然后重新加载http服务
所有以.php结尾的访问都去访问dynamic,其余访问static
在这里插入图片描述
dynamic为server2的http默认发布目录
static为server3的http默认发布目录
在这里插入图片描述
server2与server3都添加php模块并编辑php发布文件
[root@server2 ~]# yum install -y php
[root@server2 html]# cat index.html
server2
[root@server2 ~]# systemctl restart httpd
[root@server3 ~]# yum install -y php
[root@server3 html]# cat index.html
server3
[root@server3 ~]# systemctl restart httpd

在这里插入图片描述
访问php页面展示的为server2的页面
在这里插入图片描述
访问静态页面显示server3的页面
在这里插入图片描述

  • 读写分离

  • 编辑配置文件

    [root@server1 ~]# vim /etc/haproxy/haproxy.cfg

在这里插入图片描述
该配置文件表示打开放时为写时,使用static后端,即server2,读操作时执行dynamic后端,即server3,默认打开端口为80。

  • 上传文件到server2与sever3的http默认发布目录下并进行编辑

在这里插入图片描述
在这里插入图片描述
server2index.php:
在这里插入图片描述
server3index.php:(将Filename后的名字改为server3便于分辨)
在这里插入图片描述
upload_index.php段代码

<?php
if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/pjpeg"))
&& ($_FILES["file"]["size"] < 2000000))##该条为上传图片大小
  {
  if ($_FILES["file"]["error"] > 0)
    {
    echo "Return Code: " . $_FILES["file"]["error"] . "<br />";
    }
  else
    {
    echo "Upload: " . $_FILES["file"]["name"] . "<br />";
    echo "Type: " . $_FILES["file"]["type"] . "<br />";
    echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";
    echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br />";

    if (file_exists("upload/" . $_FILES["file"]["name"]))
      {
      echo $_FILES["file"]["name"] . " already exists. ";
      }
    else
      {
      move_uploaded_file($_FILES["file"]["tmp_name"],
      "upload/" . $_FILES["file"]["name"]);
      echo "Stored in: " . "upload/" . $_FILES["file"]["name"];
      }
    }
  }
else
  {
  echo "Invalid file";
  }
?>
  • 创建upload目录并修改权限,使得upload目录接收上传图片

[root@server2 html]# mkdir upload
[root@server2 html]# chmod 777 ypload

[root@server3 html]# mkdir upload
[root@server3 html]# chmod 777 upload

  • 测试
    在浏览器中访问172.25.42.1/index.php页面

在这里插入图片描述
可以看到访问的为server3的index.php页面,因为执行的为读操作

执行写操作
点击Browse上传图片
在这里插入图片描述
点击Submit上传完后会出现如下界面
在这里插入图片描述
可以看到保存路径为(Stored in: upload/redhat.jpg)

在server2查看upload目录可以查看到上传的图片
在这里插入图片描述
在server3查看upload目录查看不到上传的图片
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值