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

本文详细介绍了使用HAProxy实现负载均衡和反向代理的过程,包括安装配置、动态内容与静态内容分离、读写分离等高级功能,以及如何通过日志记录和监控确保系统的稳定运行。
1089

被折叠的 条评论
为什么被折叠?



