实验环境

主机名 IP 服务
虚拟机server1 172.25.6.1 haproxy,httpd,服务端
虚拟机server2 172.25.6.2 httpd,php,客户端
虚拟机server3 172.25.6.3 httpd,php,客户端
物理机 172.25.6.250 测试端

一、访问控制

1.用户密码访问

(1)编辑配置文件

设置用户和密码以及刷新时间

vim haproxy.cfg
/etc/init.d/rsyslog restartstats auth      admin:peng           ##用户名为admin,密码为peng
stats refresh   5s                  ##刷新时间为5s


修改内容如下

(2)测试:浏览器访问需要输入密码,密码输入正确后可以访问


(3)查看日志看刷新时间

<1>编辑日志服务的配置文件,打开UDP接口,创建haproxy的日志文件,重启服务

vim /etc/rsyslog.conf
/etc/init.d/rsyslog restart


<2>查看日志文件,可以看到5秒刷新一次

cat /var/log/haproxy.log

2.黑名单

(1)编辑配置文件,重启服务

vim haproxy.cfg
/etc/init.d/haproxy reload

(2)物理机访问:出现403报错

curl 172.25.6.1

3.错误页面重定向

(1)编辑配置文件,重启服务

vim haproxy.cfg
/etc/init.d/haproxy reload

(2)编辑httpd配置文件修改httpd端口,编辑测试页。开启服务

yum install -y httpd
vim /etc/httpd/conf/httpd.conf

(3)物理机测试:物理机访问没有结果,浏览器访问错误页面重定向到server1

二、动静分离

在下面的实验中我们将server2设置为动态资源的服务器,server3设置为静态资源的服务器

(1)编辑配置文件

vim /etc/haproxy/haproxy.cfg
/etc/init.d/haproxy restart

(2)编辑配置文件,设置动静分离,退出保存后重启服务

vim /etc/haproxy/haproxy.cfg
/etc/init.d/haproxy restart

(3)server3安装php,编辑php默认测试页,重启httpd

yum install php -y


(4)打开浏览器测试:

三、读写分离

(1)编辑配置文件,部分内容如下:

vim /etc/haproxy/haproxy.cfg
/etc/init.d/haproxy restart

(2)server2在/var/www/html目录下创建两个文件和一个upload目录(因为我们在设置时,规定写如static服务器,即server2),给他们满权限

chmod 777 upload

(3)在server2上重写发布文件

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

(4)server2安装php,并重启httpd服务

yum install -y php
/etc/init.d/httpd restart

(5)将这三个文件和目录传给server3

scp -r /var/www/html/* server3:/var/www/html/

(6)server3查看,并将其他的文件删除

(7)编辑index.php文件,方便观察给submit前添加内容,重启服务

vim index.php
/etc/init.d/httpd restart



(8)打开浏览器测试:

访问172.25.22.1出现的页面中出现【server3 172.25.6.3】,说明读到的是server3,上传图片,可以在server2的uopload目录下看到。



上传成功

在server3的upload目录里查看

在server2的upload目录里查看

通过上述的实验证实了,用户在访问时访问了server3(读操作),当进行资源上传时,内容上传到了server2(写操作),由此实现了读写分离

HAproxy七层负载均衡——访问控制、动静分离、读写分离实现过程详解相关推荐

  1. HAproxy七层负载均衡介绍

    1.什么HAproxy? HAProxy是一个使用C语言编写的自由及开放源代码软件[1],其提供高可用性.负载均衡,以及基于TCP和HTTP的应用程序代理. HAProxy特别适用于那些负载特大的we ...

  2. HAproxy七层负载均衡——环境搭建及实现过程详解

    实验环境 主机名 IP 服务 虚拟机server1 172.25.6.1 haproxy,httpd,服务端 虚拟机server2 172.25.6.2 httpd,php,客户端 虚拟机server ...

  3. 七层负载均衡--Haproxy

    七层负载均衡--Haproxy 1 Haproxy的定义 2 七层负载均衡的概念 3 四层和七层负载均衡的对比 4 Haproxy的安装及部署 4.1 Haproxy实现负载均衡 4.2 建立监控 4 ...

  4. 四层和七层负载均衡的特点及常用负载均衡Nginx、Haproxy、LVS对比

    一.四层与七层负载均衡在原理上的区别 图示: 四层负载均衡与七层负载均衡在工作原理上的简单区别如下图: 概述: 1.四层负载均衡工作在OSI模型中的四层,即传输层.四层负载均衡只能根据报文中目标地址和 ...

  5. 网络四层、七层负载均衡的区别

    一.简介 ** 所谓四层就是基于IP+端口的负载均衡:七层就是基于URL等应用层信息的负载均衡:**同理,还有基于MAC地址的二层负载均衡和基于IP地址的三层负载均衡. 换句换说,二层负载均衡会通过一 ...

  6. 四层和七层负载均衡的区别

    负载均衡设备也常被称为"四到七层交换机",那补充: 所谓四层就是基于IP+端口的负载均衡:七层就是基于URL等应用层信息的负载均衡:同理,还有基于MAC地址的二层负载均衡和基于IP ...

  7. 四层和七层负载均衡的区别介绍--转

    简单理解四层和七层负载均衡:①所谓四层就是基于IP+端口的负载均衡:七层就是基于URL等应用层信息的负载均衡:同理,还有基于MAC地址的二层负载均衡和基于IP地址的三层负载均衡. 换句换说,二层负载均 ...

  8. Web负载均衡学习笔记之四层和七层负载均衡的区别

    0x00 简介 简单理解四层和七层负载均衡: ① 所谓四层就是基于IP+端口的负载均衡:七层就是基于URL等应用层信息的负载均衡:同理,还有基于MAC地址的二层负载均衡和基于IP地址的三层负载均衡. ...

  9. 四层和七层负载均衡的区别介绍(转载)

    简单理解四层和七层负载均衡: ①所谓四层就是基于IP+端口的负载均衡:七层就是基于URL等应用层信息的负载均衡:同理,还有基于MAC地址的二层负载均衡和基于IP地址的三层负载均衡. 换句换说,二层负载 ...

最新文章

  1. PHP的抽象类的一段简单代码示例
  2. objloader使用方法
  3. 监听iPhone的通话状态之---CoreTelephony.framework
  4. 牛顿法、梯度下降法、高斯牛顿法、Levenberg-Marquardt算法
  5. 基于PCA和SVM的人脸识别
  6. opencv-api getStructuringElement
  7. IO多路复用的机制:select、poll、epoll
  8. css不定高度实现垂直居中
  9. Vue Cli 3代理配置
  10. 【贪玩巴斯】理工类科技检索(三)——「科技检索中的课题主题分析与例题全解」
  11. 后台传给小程序的时间对象如何转为“YYYY/MM/DD“格式渲染
  12. 锁相放大器在中微流控的应用
  13. 流利阅读12.17 Why are the 'yellow vests' still protesting in France? His name is Macron
  14. 数字图像处理 - Ch3 锐化(高通)空间滤波器
  15. ChatGPT微信小程序搭建总结
  16. Peer-to-Peer 综述
  17. 地址转换和端口映射及内网穿透的区别
  18. 2022年危险化学品生产单位安全生产管理人员考试内容及危险化学品生产单位安全生产管理人员证考试
  19. linux安装centos7.3,安装CentOS 6.9与CentOS7.3
  20. AT指令返回错误代码: CMS errors CME errors 的区别!

热门文章

  1. R语言使用ggplot2包的快速可视化函数qplot绘制分组箱图实战
  2. MLNG_机器学习的动机与应用
  3. c语言和画图软件,大佬们,小菜鸟想问一问用vc编译器做简易画图软件
  4. java accept encoding_Accept-Encoding gzip 乱码 和Okhttp的解决方法
  5. numpy 数组 最大值、最小值、中位数、均值、标准差、方差、总和、排序、去重
  6. python的assert作用
  7. 13.最为经典的动态规划入门
  8. 【MySQL命令】远程连接、数据库备份
  9. Python常用函数与技巧总结(一)
  10. EasyTouch初步使用