当前位置: 代码迷 >> 综合 >> haproxy-负载均衡
  详细解决方案

haproxy-负载均衡

热度:32   发布时间:2023-12-24 23:11:52.0

目录

  • 一、haproxy
  • 二、haproxy负载均衡
    • 1.安装配置haproxy
    • 2.图片访问锁定
    • 3.权重
    • 4.访问黑名单
  • 三、结合PHP


一、haproxy

haproxy 是一款提供高可用性、负载均衡以及基于TCP(第四层)和HTTP(第七层)应用的代理软件,支持虚拟主机,它是免费、快速并且可靠的一种解决方案;
lvs工作在四层、仅负责分发请求作用,负载均衡性能最强,Lvs实现负载均衡可结合keepalived进行后端健康检测;
nginx工作在7层,针对http应用做一些策略配置,可以检测后端端口故障,最大的优点是并发量高,且支持二次开发,商用价值高。
注:haproxy配置文件修改后,必须使用reload,不能restart,否则会使连接断开

二、haproxy负载均衡

1.安装配置haproxy

实验环境:
server1 172.25.36.1 作为haproxy服务器及集群管理服务器;
server2 172.25.36.2 、server3 172.25.36.3 负载均衡(后端服务器)
server4 172.25.1.4 集群管理服务器

server1安装配置haproxy
请添加图片描述
haproxy主配置目录在/etc/haproxy
请添加图片描述
sysctl -a查看内核资源,文件最多10w(根据内存变更);
free -m #查看系统内存使用情况(宿主机)
请添加图片描述
编写/etc/security/limits.conf 配置文件,修改操作系统资源使用限制 haproxy用户 - 软限(可以超过)和硬限,设定最大打开文件4096 (即改即生效)
请添加图片描述
编写配置文件vim /etc/haproxy/haproxy.cfg;
加上监控:defaults中加入stats ,虚拟目录/
请添加图片描述
修改端口:80
请添加图片描述
设定server2、server3提供服务,调度方式为轮叫
请添加图片描述
设定完毕后重启服务,查看日志
请添加图片描述
查看haproxy服务的默认端口为80(注意要关闭server1的httpd,否则会端口冲突)
请添加图片描述
此时在浏览器访问server1的IP时,由server2和server3提供服务,点击刷新图标可看到效果
请添加图片描述
请添加图片描述
测试监控项:

firefox:http://172.25.36.1/status
请添加图片描述
若关闭server2的httpd服务
请添加图片描述
可看到监控项中的app1变红,表示serve2 down掉,不能提供服务(自带健康检测)
请添加图片描述

2.图片访问锁定

编辑配置文件
请添加图片描述
path_beg:路径开头;
path_end:结尾;
表示以指定的路径开头的文件会被调度到某一个后端;
(如果上传的是指定类型的图片,则由server3提供服务,但默认访问的是server2)
请添加图片描述
监控图如下
请添加图片描述
此时server3的共享目录下有一个.jpg图片
请添加图片描述
访问如下网址的图片(server3提供服务)
请添加图片描述
查看日志
请添加图片描述
请添加图片描述

3.权重

当server2、server3权重都为1时
请添加图片描述
请添加图片描述
轮叫
请添加图片描述
设定server2的权重为2
请添加图片描述
请添加图片描述
设定172.25.36.1:8080(server1)为备机
请添加图片描述
修改server1的httpd服务端口
请添加图片描述
请添加图片描述
请添加图片描述
当访问server1的8080端口时,会看到其发布页面的内容
请添加图片描述

监控图如下
请添加图片描述
此时由三台主机提供轮叫
请添加图片描述
当停止server2和server3的httpd服务时,只留下备机server1提供服务
请添加图片描述
请添加图片描述

4.访问黑名单

编辑配置文件,加入认证策略,只有用户名是admin,密码是westos的用户才能访问
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
编辑文件/etc/rsyslog.conf:加入haproxy的日志信息!
请添加图片描述
同时打开UDP端口,修改完毕之后,systemctl restart rsyslog.service
请添加图片描述
访问测试
请添加图片描述
查看日志,可以看到当本机访问172.25.36.1时,各服务器对其响应情况
请添加图片描述
继续编辑文件,写入黑名单访问策略,当真机访问server1时,被拒绝
请添加图片描述
请添加图片描述
若是不想出现访问失败的界面,而是想让客户访问另外一个网页,需要重定向,把错误403定向到一个网页 (server1的Apache发布页面,此时httpd用8080端口,避免和haproxy端口冲突)
请添加图片描述
给server1的发布页面写入内容
请添加图片描述
测试成功
请添加图片描述
-I 参数则只显示 http response 的头信息。
请添加图片描述
将前面的错误403重定向注释掉,设置新的重定向,当真机访问server1时,重定向到百度
请添加图片描述

再次访问网页172.25.36.1时,跳转到了百度
请添加图片描述

三、结合PHP

修改haproxy中的配置文件 /etc/haproxy/haproxy.cfg,设定以.php结尾的转到访问static模块,即由server3提供服务
请添加图片描述
在server3上安装php ,编辑php默认发布页面
请添加图片描述
测试成功
请添加图片描述

  相关解决方案