-
负载均衡及反向代理的实现
-
安装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目录查看不到上传的图片