Haproxy安装部署及其简单配置

Haproxy

haproxy提供高可用性、负载均衡以及基于TCP(第四层)和HTTP(第七层)应用的代理,支持虚拟主机,它是免费、快速并且可靠的一种解决方案。
haproxy特别适用于那些负载特别大的web站点,这些站点通常又需要会话保持或七层处理。haproxy运行在时下的硬件上,完全可以支持数以万计的并发连接,并且它的运行模式使得它可以很简单安全的整合进您当前的架构中,同时可以保护你的web服务器不被暴露到网络上。
haproxy实现了一种事件驱动、单一进程模型,此模型支持非常大的并发连接数。多进程或多线程模型受内存限制、系统调度器限制以及无处不在的锁限制,很少能处理数千并发连接。
事件驱动模型因为在有更好的资源和时间管理的用户端(User-Space)实现所有这些任务,所以没有这些问题。此模型的弊端是,在多核系统上,这些程序通常扩展性较差。这就是为什么他们必须进行优化以使每个CPU时间片(Cycle)做更多的工作。

图解:
在这里插入图片描述
本篇博客中涉及的所有软件包下载可参考此博客:https://blog.csdn.net/qq657886445/article/details/83662696

haproxy配置

server1
rpmbuild -tb haproxy-1.4.24.tar.gz #需安装 rpm-build 和 pcre-devel
在这里插入图片描述
rpm -qpl haproxy-1.4.24-1.x86_64.rpm --scripts #查看rpm包隐藏的脚本
在这里插入图片描述
rpm -ivh haproxy-1.4.24-1.x86_64.rpm
在这里插入图片描述

groupadd -g 200 haproxy
useradd -g 200 -u 200 -M haproxy
vim /etc/security/limits.conf
最后一行添加
haproxy         -       nofile          65535

在这里插入图片描述

tar zxf haproxy-1.4.24.tar.gz
cp haproxy-1.4.24/examples/content-sw-sample.cfg  /etc/haproxy/haproxy.cfg
vim /etc/haproxy/haproxy.cfg     #修改配置文件

在这里插入图片描述
/etc/init.d/haproxy start #开启服务

物理机测试
浏览器访问172.25.254.1 访问轮询
在这里插入图片描述

172.25.254.1/status        #haproxy 监控页面
172.25.254.1/monitoruri   #若返回200 OK 则表示正常

在这里插入图片描述

创建指定日志文件
vim /etc/rsyslog.conf
取消注释,使UDP端口接收生效.
在这里插入图片描述
添加日志并指定日志保存路径,local0.none表示在/var/log/messages下不保存
在这里插入图片描述
acl权限列表
1)建立acl黑名单,指定ip,更改配置文件
在这里插入图片描述
/etc/init.d/haproxy restart #重启服务
测试查看:提示403错误
在这里插入图片描述
2)错误重定向
修改haproxy配置文件将错误重定向到本机的apache服务
为避免与haproxy服务端口发生冲突,将apache端口改为8080
在这里插入图片描述
在这里插入图片描述
重启服务
在这里插入图片描述
测试:
在这里插入图片描述
3)指定ip重定向
修改haproxy配置文件并重启服务
在这里插入图片描述
测试:
在这里插入图片描述

动静分离
server1:
修改配置文件/etc/haproxy/haproxy.cfg,并重启服务
在这里插入图片描述
server2:
写一个简单的.php文件
在这里插入图片描述

测试:
访问Server1 ip 默认访问server3页面
在这里插入图片描述
访问server1 ip/index.php 访问server2页面 # server2安装php并重启apache
在这里插入图片描述
读写分离
Server1:
修改配置文件/etc/haproxy/haproxy.cfg,如果有写入操作,访问动态主机server3,并重启服务
在这里插入图片描述

Sever2:

cd  /var/www/html/
mkdir upload
# 编写php页面
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"]["type"] == "image/png")
|| ($_FILES["file"]["type"] == "image/jpg"))
&& ($_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";
  }
?>

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

在这里插入图片描述

Server3:
安装php并重启httpd
在这里插入图片描述
测试:
访问server1 ip/index.php
在这里插入图片描述
上传一个图片
在这里插入图片描述
server2实现写 图片实际保存在server2上 读的时候访问的是server3;server2查看可以看到图片保存在server2上
实现了读写分离
在这里插入图片描述

©️2020 CSDN 皮肤主题: 大白 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值