HAproxy七层负载均衡——访问控制、动静分离、读写分离实现过程详解
实验环境
主机名 | 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七层负载均衡——访问控制、动静分离、读写分离实现过程详解相关推荐
- HAproxy七层负载均衡介绍
1.什么HAproxy? HAProxy是一个使用C语言编写的自由及开放源代码软件[1],其提供高可用性.负载均衡,以及基于TCP和HTTP的应用程序代理. HAProxy特别适用于那些负载特大的we ...
- HAproxy七层负载均衡——环境搭建及实现过程详解
实验环境 主机名 IP 服务 虚拟机server1 172.25.6.1 haproxy,httpd,服务端 虚拟机server2 172.25.6.2 httpd,php,客户端 虚拟机server ...
- 七层负载均衡--Haproxy
七层负载均衡--Haproxy 1 Haproxy的定义 2 七层负载均衡的概念 3 四层和七层负载均衡的对比 4 Haproxy的安装及部署 4.1 Haproxy实现负载均衡 4.2 建立监控 4 ...
- 四层和七层负载均衡的特点及常用负载均衡Nginx、Haproxy、LVS对比
一.四层与七层负载均衡在原理上的区别 图示: 四层负载均衡与七层负载均衡在工作原理上的简单区别如下图: 概述: 1.四层负载均衡工作在OSI模型中的四层,即传输层.四层负载均衡只能根据报文中目标地址和 ...
- 网络四层、七层负载均衡的区别
一.简介 ** 所谓四层就是基于IP+端口的负载均衡:七层就是基于URL等应用层信息的负载均衡:**同理,还有基于MAC地址的二层负载均衡和基于IP地址的三层负载均衡. 换句换说,二层负载均衡会通过一 ...
- 四层和七层负载均衡的区别
负载均衡设备也常被称为"四到七层交换机",那补充: 所谓四层就是基于IP+端口的负载均衡:七层就是基于URL等应用层信息的负载均衡:同理,还有基于MAC地址的二层负载均衡和基于IP ...
- 四层和七层负载均衡的区别介绍--转
简单理解四层和七层负载均衡:①所谓四层就是基于IP+端口的负载均衡:七层就是基于URL等应用层信息的负载均衡:同理,还有基于MAC地址的二层负载均衡和基于IP地址的三层负载均衡. 换句换说,二层负载均 ...
- Web负载均衡学习笔记之四层和七层负载均衡的区别
0x00 简介 简单理解四层和七层负载均衡: ① 所谓四层就是基于IP+端口的负载均衡:七层就是基于URL等应用层信息的负载均衡:同理,还有基于MAC地址的二层负载均衡和基于IP地址的三层负载均衡. ...
- 四层和七层负载均衡的区别介绍(转载)
简单理解四层和七层负载均衡: ①所谓四层就是基于IP+端口的负载均衡:七层就是基于URL等应用层信息的负载均衡:同理,还有基于MAC地址的二层负载均衡和基于IP地址的三层负载均衡. 换句换说,二层负载 ...
最新文章
- PHP的抽象类的一段简单代码示例
- objloader使用方法
- 监听iPhone的通话状态之---CoreTelephony.framework
- 牛顿法、梯度下降法、高斯牛顿法、Levenberg-Marquardt算法
- 基于PCA和SVM的人脸识别
- opencv-api getStructuringElement
- IO多路复用的机制:select、poll、epoll
- css不定高度实现垂直居中
- Vue Cli 3代理配置
- 【贪玩巴斯】理工类科技检索(三)——「科技检索中的课题主题分析与例题全解」
- 后台传给小程序的时间对象如何转为“YYYY/MM/DD“格式渲染
- 锁相放大器在中微流控的应用
- 流利阅读12.17 Why are the 'yellow vests' still protesting in France? His name is Macron
- 数字图像处理 - Ch3 锐化(高通)空间滤波器
- ChatGPT微信小程序搭建总结
- Peer-to-Peer 综述
- 地址转换和端口映射及内网穿透的区别
- 2022年危险化学品生产单位安全生产管理人员考试内容及危险化学品生产单位安全生产管理人员证考试
- linux安装centos7.3,安装CentOS 6.9与CentOS7.3
- AT指令返回错误代码: CMS errors CME errors 的区别!