Linux企业化运维--8.haproxy

目录

1.HAProxy简介

HAProxy优缺点

2.HAProxy工作原理

3.实现HAProxy负载均衡

1.配置部署haproxy和设置身份验证

2.自定义路由监控器

 3.指定日志存放

4.自定义路由监控器

5. 访问重定向

6.读写分离

 ​

4.HAProxy高可用

 配置集群管理VIP

5.防止脑裂


1.HAProxy简介

HAProxy提供高可用性、负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费、快速并且可靠的一种解决方案。HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会

话保持或七层处理。HAProxy运行在当前的硬件上,完全可以支持数以万计的并发连接。并且它的运行模式使得它可以很简单安全的整合进您当前的架构中, 同时可以保护你的web服务器不被暴露到网络上。



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.多进程模式支持不够好;

4层负载均衡

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

7层负载均衡

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

Haproxy特点

支持TCP与Http协议,工作在网络4层和7层
支持Session共享、Cookies引导
支持通过URL健康检测
支持8种负载均衡策略
支持心跳检测

Nginx特点

支持Http协议,工作在网络7层
支持通过端口健康检测
支持强大的正则匹配规则
支持WebSocket协议
支持Http Cache

说明:对于Http协议,Haproxy处理效率比Nginx高。所以,没有特殊要求的时候或者一般场景,建议使用Haproxy来做Http协议负载!但如果是Web,那么建议使用Nginx!



2.HAProxy工作原理

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

3.实现HAProxy负载均衡



1.配置部署haproxy和设置身份验证

 

stats uri /status                               #设置统计页面的uri为/status

stats auth admin:westos                #身份验证用户名密码
frontend main *:80                         #监听地址为80
default_backend  app                   #默认的请求转发地址,名为app
backend app                                #定义一个名为app的后端部分,需要与frontend的配置项default_backend 值相一致,算法为轮询,将动态请求转到以下两台服务器的任意一台
server app1 172.25.33.2:80 check     #定义的多个后端
server app2 172.25.33.3:80 check     #定义的多个后端

 

 

 

 

 

 

 

 

 

2.自定义路由监控器

自定义设置符合条件的url监控,并把请求转发到指定服务器

当访问路径以/static /images等开头,以.jpg .gif等结尾时,跳入backend static模块,由该模块内server提供服务

 

 

 

 如果图片在浏览器中访问不到有可能是权限不够

 3.指定日志存放

 

 

systemctl restart rsyslog.service
systemctl start haproxy.service

 

避免产生两次日志,增加负担

4.自定义路由监控器

 把来自172.25.134.250的访问拒绝

 

 添加错误代码,把相应错误代码转发至其他路径

 

 

5. 访问重定向
 

 

 

6.读写分离

 

 把2作为只读服务器,提供页面

 把server3作为存储服务器,在server3的httpd服务中创建上传页面,并赋予写入权限

 

 

设置文件大小限制

 

 

 

 在server3中也给upload777权限

 

上传后文件到server3中,server2为空

 

4.HAProxy高可用

 

 

 

 

 server1生成免密操作密钥,发送给server4

 

 配置软件仓库,安装高可用插件

 将server1的仓库配置文件发送给server4

 安装高可用插件

 开启server1和server4的pcsd服务

 修改server1和server4的hacluster认证密码,然后认证

 

 认证

 

 设定集群的名称为mycluster,集群内有server1和server4两个设备

 

 启动集群内所有服务节点

 

验证配置,出现报错,这个因为没有Fencing设备时,没有禁用stonith功能

 禁用功能

crm_mon是监控集群状态的主要命令crm status是一样的效果

 

 

  

 访问网页172.25.134.1/status可以查看到状态,查看端口可以显示80端口被监听

 配置集群管理VIP

设定VIP,查看状态显示获取到了VIP信息

关闭server1、server4的haproxy服务

 

 

 将haproxy 添加到集群管理

 查看状态发现vip运行在server1节点,haproxy运行在server4节点

 将vip和haproxy 放入同一个组中解决不同步的问题

pcs status 

 手动删除vip,查看集群运行状态,运行出现了错误和警告

 

 VIP自动添加

 关闭server1的haproxy

 

节点自动切换

 

设置集群节点为备用节点,以及重新上线

 

 节点自动切换

 5.防止脑裂

Fence主要作用是防止两个系统同时向资源写数据
破坏资源的安全性和一致性从而导致脑裂

 真实主机安装fence插件

 建立fence_xvm.key的存放目录

 配置fence,只有在网桥的时候选择br0接口,其余回车即可)

 

 

 

 

 

 

 此处可以看到之后要生成的fence_xvm.key文件的存放位置

 

 生成fence_xvm.key文件

 

 

 

 关闭火墙

 将生成的密钥文件发送给server1、server4

 

 

 在server1、server4安装客户端fence

 查询fence设备

 

 

 

 查询fence设备的元数据

 

 

 在server1将server1、server4节点添加到fence

#server1:y1(主机名:虚拟机名)

 以看到haproxy和vip在server1,fence运行在server4

 关闭server1网卡

 

 成功切换

 

 让系统崩溃,执行后主机断点重启

server1接管

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值