用HAProxy实现——反向代理与负载均衡,添加日志,控制访问,动静分离,读写分离

haproxy类似nginx、apache 均是7层负载:动静分离,比较智能,可以实现高可用+负载均衡+支持虚拟主机
搭建实验环境

主机功能
172.25.3.1客户端
172.25.3.2haproxy代理服务器
172.25.3.3后端服务器
172.25.3.4后端服务器

搭建一个基本的haproxy服务器

(1)在server2上面搭建HAProxy服务器

yum install haproxy -y

利用haproxy实现反向代理与负载均衡

在vm2上配置服务

vim /etc/haproxy/haproxy.cfg

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在vm3 vm4上配置httpd服务和发布页面

yum install httpd -y
echo vm2/3  > /var/www/html/index.html

在vm1上去访问172.25.0.2
在这里插入图片描述
实现了负载均衡

在这里插入图片描述

添加监控页面

在这里插入图片描述

设置密码和5秒刷新

在这里插入图片描述
在这里插入图片描述

改变算法,加权轮询

在这里插入图片描述

在这里插入图片描述

给haproxy服务器添加日志

vim /etc/haproxy/haproxy.cfg

在这里插入图片描述
设置messages接受haproxy的日志信息

在这里插入图片描述
打开UDP的两个参数

在这里插入图片描述
重启rsyslog服务,此时,查看/var/log/会产生haproxy.log来专门记录haproxy产生的日志信息。haproxy的日志信息此时也不会在message中查看。

负载均衡出现问题的时候,返回给客户的信息(错误页面重定向)

vim /etc/haproxy/haproxy.cfg

在这里插入图片描述
结果
在这里插入图片描述
在这里插入图片描述

动静分离

在server4上安装php

yum install php -y

写一个文件在发布页面

[root@vm4 html]# cat index.php 
<?php
phpinfo()
?>

在vm3的HTML目录下加入photos目录下的一张图
在haproxy主机编辑haproxy配置文件

frontend  main *:80
     acl blacklist src 172.25.3.1
     block if blacklist
     errorloc 403 http://172.25.3.2:8080
    acl url_static       path_beg       -i /static /images /javascript /stylesheets
    acl url_static       path_end       -i .jpg .gif .png .css .js

    use_backend static          if url_static
    default_backend             app

#---------------------------------------------------------------------
# static backend for serving up images, stylesheets and such
#---------------------------------------------------------------------
backend static
    balance     roundrobin
    server      static 172.25.3.3:80 check

#---------------------------------------------------------------------
# round robin balancing between the various backends
#---------------------------------------------------------------------
backend app
    balance     roundrobin
   # server  app1 172.25.3.3:80 check 
    server  app2 172.25.3.4:80 check
    server  backup 127.0.0.1:8080 backup

读写分离

在vm3/4的HTML目录下加入upload目录及文件index.php

<html>
<body>

<form action="upload_file.php" method="post"
enctype="multipart/form-data">
<label for="file">Filename:</label>
<input type="file" name="file" id="file" /> 
<br />
<input type="submit" name="submit" value="Submit" />
</form>

</body>
</html>

upload_file.php

if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/pjpeg"))
&& ($_FILES["file"]["size"] < 20000))
  {
  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";
  }
?>

给予权限777

[root@vm4 html]# ll
total 12
-rw-r--r-- 1 root root   8 Aug  5 09:56 index.html
-rw-r--r-- 1 root root 257 Aug  9 15:39 index.php_backup
drwxrwxrwx 2 root root  53 Aug  7 15:03 upload
-rw-r--r-- 1 root root 929 Aug  7 14:50 upload_file.php

编辑配置文件

frontend  main *:80
 #    acl blacklist src 172.25.3.1
 #    block if blacklist
 #    errorloc 403 http://172.25.5.2:8080
 #   acl url_static       path_beg       -i /static /images /javascript /stylesheets
 #   acl url_static       path_end       -i .jpg .gif .png .css .js

    acl read_request method GET
    acl read_request method HEAD
    acl write_request method PUT
    acl write_request method POST

    use_backend static          if read_request
    use_backend app             if write_request
    default_backend             app
#---------------------------------------------------------------------
# static backend for serving up images, stylesheets and such
#---------------------------------------------------------------------
backend static
    balance     roundrobin
    server      static 172.25.3.3:80 check

#---------------------------------------------------------------------
# round robin balancing between the various backends
#---------------------------------------------------------------------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值