实验环境
一、访问控制
1.用户密码访问
(1)编辑配置文件
设置用户和密码以及刷新时间
vim haproxy.cfg /etc/init.d/rsyslog restartstats authadmin:peng##用户名为admin,密码为pengstats 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 httpdvim /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
<?phpif ((($_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(写操作),由此实现了读写分离