【项目实战3】Haproxy实现负载均衡

一、基础性知识

(1) 、Haproxy概念

haproxy除了实现均衡负载,还可以做到访问重定向,读写分离等。可以结合上一节的keepalive或者下一节的pacemaker,coresync实现高可用。适应于电商这种多台服务器进行反向代理,利用此模式进行高可用和均衡访问,保证安全性和合理分配资源。

1)Haproxy7层负载均衡概念:

1.HAProxy是一种高效、可靠、免费的高可用及负载均衡解决方案,非常适合于高负载站点的七层数据请求。
因为HAProxy实现了一种事件驱动、单一进程模型,此模型支持非常大的并发连接数。客户端通过HAProxy代理服务器获得站点页面,而代理服务器收到客户请求后根据负载均衡的规则将请求数据转发给后端真实服务器。HAProxy还支持Session的保持和Cookie的引导。

2.HAProxy有前端(frontend)和后端(backend),前端和后端都可以有多个。也可以只有一个listen块来同时实现前端和后端。
前端(frontend)区域可以根据HTTP请求的header信息来定义一些规则,然后将符合某规则的请求转发到相应后端(backend)进行处理。因此HAProxy可以实现动静分离(动静分离简单来说就是指将静态请求转发到对应的静态资源服务器,将动态请求转发到动态资源服务器),我们上篇说过的LVS就没有此功能。

2)Haproxy的优缺点

优点
1.支持两种代理模式:TCP(四层)和HTTP(七层),支持虚拟主机;
2.支持Session的保持,Cookie的引导;同时支持通过获取指定的url来检测后端服务器的状态。能够补充Nginx的一些缺点。
3.HAProxy跟LVS类似,本身就只是一款负载均衡软件;单纯从效率上来讲HAProxy会比Nginx有更出色的负载均衡速度,在并发处理上也是优于Nginx的。
4.HAProxy可以对Mysql进行负载均衡,对后端的DB节点进行检测和负载均衡。
5.HAProxy负载均衡策略非常多,比如:动态加权轮循(Dynamic Round Robin),加权源地址哈希(Weighted Source Hash),加权URL哈希和加权参数哈希(Weighted Parameter Hash)
6.免费开源,稳定性也是非常好,可以与LVS相媲美;
7.自带强大的监控服务器状态的页面,实际环境中我们结合Nagios进行邮件或短信报警;
缺点:
1.不支持POP/SMTP协议 SPDY协议;
2.不能做Web服务器,即不支持HTTP cache功能;
3.重载配置的功能需要重启进程,虽然也是soft restart,但没有Nginx的reaload更为平滑和友好;
4.多进程模式支持不够好;

(2)、四层负载

将网络流量负载平衡到多个服务器的最简单方法是使用第4层(传输层)负载平衡。以这种方式进行负载均衡将根据IP范围和端口转发用户流量。用户访问负载均衡器,负载均衡器将用户的请求转发给后端服务器的Web后端组。无论选择哪个后端服务器,都将直接响应用户的请求。通常,Web后端中的所有服务器应该提供相同的内容 - 否则用户可能会收到不一致的内容。
在这里插入图片描述

(3)、七层负载

7层负载均衡是更复杂的负载均衡。网络流量使用第7层(应用层)负载均衡,允许负载均衡器根据用户请求的内容将请求转发到不同的后端服务器。这种负载平衡模式允许在同一域和端口下运行多个Web应用程序服务器。
在这里插入图片描述

二、项目搭建准备

server1 172.25.42.1作为调度器
server2 172.25.42.2作为服务器
server3 172.25.42.3作为服务器

三、haproxy的安装使用

server1中
1、下载软件,修改配置文件

 yum install haproxy.x86_64 
 vim /etc/security/limits.conf 

在这里插入图片描述

vim /etc/haproxy/haproxy.cfg 

当谁访问server1的80端口时,就会指引向后端的服务器
在这里插入图片描述

2、启用haproxy服务、查看状态
重启服务

systemctl restart haproxy.service 

检查端口,haproxy正在监听80端口

netstat -antlp|grep 80

在这里插入图片描述
2、server2,server3启动http服务
3、查看效果和监控结果
在这里插入图片描述
可以查看监控服务
在这里插入图片描述
4、添加监控的登陆密码

 vim /etc/haproxy/haproxy.cfg 

在这里插入图片描述

systemctl restart haproxy.service

登陆效果
在这里插入图片描述
5、关闭server2,进行访问测试
关闭sever2的http服务后
真机访问时,发现只能访问到server3
在这里插入图片描述
在监控中看到我们的server2服务已经关闭了
在这里插入图片描述

四、Haproxy的访问控制

根据访问端对调度端的不同请求将其引导到不同的界面

1、server1调度端更改配置文件

vim /etc/haproxy/haproxy.cfg                    图1
systemctl restart haproxy.service

图1
在这里插入图片描述
2、一般访问时
普通访问走的是server3这台主机
在这里插入图片描述
2、特殊访问(含有images等特殊指定时)
为方便看实验结果我们选择在server2加入图片
在这里插入图片描述
当访问http://172.25.42.1/images/时,查看到了在server2上传的图片。实现了不同请求,访问不同服务器的目的
在这里插入图片描述

五、Haproxy的高级设置

(1)、备用机的启用

当后端都有问题时,调度器server1自己作为备机
避免http端口与Haproxy冲突,启动http端口为8080
1、修改server1的http端口,更改haproxy的备用端口

echo server1 >  /var/www/html/index.html
vim /etc/httpd/conf/httpd.conf                         修改为8080端口
systemctl restart httpd.service 
vim /etc/haproxy/haproxy.cfg                           更改配置文件(如下图)
systemctl restart haproxy.service 

在这里插入图片描述
2、关闭server3的http服务,查看查看备用机器是否启用

systemctl stop httpd.service 

3、查看实验效果
关闭备用机器后启用备用服务器server1
在这里插入图片描述
看到server1作为备用服务器开启
在这里插入图片描述

(2)、访问黑白名单设定

1、修改server1的haproxy配置文件

vim /etc/haproxy/haproxy.cf                      修改配置文件如下图所示
systemctl restart haproxy.service 

将真机172.25.42.250作为黑名单
在2323232323232323这里插入图片描述
2、真机访问查看实验效果
发现被禁止访问了
在这里插入图片描述

(3)、访问重定向

1、黑名单用户访问显示403时,通过403特殊重定向到172.25.51.1:8080

vim /etc/haproxy/haproxy.cfg              修改配置文件如下图所示
systemctl restart haproxy.service 

在这里插入图片描述
2、真机访问测试
之前的403变成定向到了设定的server1端
在这里插入图片描述
3、黑名单用户访问时,直接重定向到指定ip
在这里插入图片描述
4、访问测试
发现直接跳转到了www.baidu.com
在这里插入图片描述

(4)、访问上传时的读写分离

在这里插入图片描述

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值