HAProxy介绍

HAProxy介绍,第1张

HAProxy是一个单线程,事件驱动的非阻塞引擎,它将一个非常快速的I / O层与一个基于优先级的调度器结合在一起。由于其设计时考虑了数据转发目标,因此其架构经过优化,可尽可能快地将数据移动到最少的操作。因此,它实现了在每个级别提供旁路机制的分层模型,确保数据不会达到更高的水平,除非需要。大多数处理在内核中执行,HAProxy尽可能快地通过

提供一些提示或避免某些操作来帮助内核尽快完成工作,当它猜测它们可以被分组以后。结果,典型的数字显示了15%的处理时间花费在HAProxy上,在TCP或HTTP关闭模式下花费在内核上的85%,在HAProxy上花费约30%,在HTTP保持花费模式下花费70%。

一个进程可以运行多个代理实例据报道,单个进程中30万个不同代理的配置运行良好。因此,通常不需要为所有实例启动多个进程。

有可能使HAProxy运行在多个进程上,但是它有一些限制。一般来说,在HTTP关闭或TCP模式下没有意义,因为内核端不能很好地进行一些操作,比如connect()。对于HTTP保持活动模式,性能非常好可以通过一个单一的流程来实现,这个流程通常比一般的需求要好一个数量级。当用作SSL 卸载程序时,这是有意义的,而且这个特性在多进程模式下得到很好的支持。

HAProxy只需要haproxy可执行文件和配置文件即可运行。对于日志记录,强烈建议使用正确配置的syslog守护进程

和日志循环。配置文件在启动之前被解析,然后HAProxy尝试绑定所有监听套接字,如果有任何失败,则拒绝启动。过去这一点,它不能再失败了。这意味着没有运行时失败,如果它接受启动,它将工作,直到停止。

一旦HAProxy启动,它确实做了三件事情:

处理传入连接是迄今为止最复杂的任务,因为它依赖

于很多配置可能性,但是可以概括为以下9个步骤:

前端和后端有时被视为半代理,因为他们只看端到端连接的一端前端只关心客户端,而后端只关心服务器。HAProxy还支持

完整的代理,这正是前端和后端的联合。当需要进行HTTP 处理时,配置通常会被分割成前端和后端,因为任何前端都可能将

连接传递给任何后端。相对于TCP-only代理,使用前端和后端的一个好处是配置比用完整的代理更可读。

因为要实现高可用,需要使用到keepalived来实现,keepalived需要虚拟ip。由于阿里云已经不允许ecs上使用虚拟ip(变相必须使用slb),所以这里ecs选择了

华为云。华为云支持虚拟ip的申请,并且是免费的。接下来说明申请流程和ecs的使用.具体 请参考

随后vi。原本是没有这个文件的。

在文件中输入以下内容,DEVICE指新建的网卡,即虚拟ip所在网卡,冒号前面的是现在的网卡名,使用ifconfig可查看,IPADDR为我们在华为云申请的虚拟ip

输入后,保存退出,并reboot重启服务器。

重启后进入ecs后,使用ifconfig查看后,如果多了一个eth0:1的网卡则说明虚拟ip配置成功,如下

此时看看虚拟ip是否能ping通.到此则虚拟ip配置成功

5 如果该虚拟ip想要通过外网访问的话必须绑定公网ip,如下点击绑定即可。

此时外网还不能访问。云服务器所在的default安全组 入方向 添加ICMP协议,才能ping通。

配置文件如下

可以看到虚拟ip是我们在华为云申请的172.16.0.100,而他需要映射的是俩haproxy的虚拟ip172.40.0.100。

首先我们要保证俩点,一是telnet 172.40.0.100 8888和telnet 172.40.0.100 3306时都显示是连通的,如果这个没通则是docker haproxy的问题,

其次保证telnet 172.16.0.100 8888和telnet 172.16.0.100 3306能显示连通,如果连不通,则说明是宿主机keepalived的

问题,此时可以查看/var/log/message来查看keepalived的错误日志。如果显示都能连通,则本地keepalived启动成功

启动成功日志显示如下,要注意圈住部分,只有出现圈住的部分才是启动成功。

一、Haproxy概述;

概述:Haproxy是一个开源的高性能的反向代理或者说是负载均衡服务软件之一,由C语言编写而成,支持会话保持、七层处理、健康检查、故障修复后自动加载、动静分离。HAProxy运行在当前的硬件上,完全可以支持数以万计的并发连接;

Haproxy软件引入了frontend,backend的功能,frontend(acl规则匹配)可以运维管理人员根据任意HTTP请求头做规则匹配,然后把请求定向到相关的backend(server pools等待前端把请求转过来的服务器组)。

二、Haproxy原理实现;

代理模式:

1.四层tcp代理:例如:可用于邮件服务内部协议通信服务器、Mysql服务等;

2.七层应用代理:例如:HTTP代理或https代理。在4层tcp代理模式下,Haproxy仅在客户端和服务器之间双向转发流量。但是在7层模式下Haproxy会分析应用层协议,并且能通过运行、拒绝、交换、增加、修改或者删除请求(request)或者回应(reponse)里指定内容来控制协议。

四层代理:

ISO参考模型中的第四层传输层。四层负载均衡也称为四层交换机,它主要是通过分析IP层及TCP/UDP层的流量实现的基于IP加端口的负载均衡。常见的基于四层的负载均衡器有LVS、F5等。以常见的TCP应用为例,负载均衡器在接收到第一个来自客户端的SYN请求时,会通过设定的负载均衡算法选择一个最佳的后端服务器,同时将报文中目标IP地址修改为后端服务器IP,然后直接转发给该后端服务器,这样一个负载均衡请求就完成了。从这个过程来看,一个TCP连接是客户端和服务器直接建立的,而负载均衡器只不过完成了一个类似路由器的转发动作。在某些负载均衡策略中,为保证后端服务器返回的报文可以正确传递给负载均衡器,在转发报文的同时可能还会对报文原来的源地址进行修改。整个过程下图所示。

七层代理:

ISO参考模型中的最高层第七层应用层。七层负载均衡也称为七层交换机,此时负载均衡器支持多种应用协议,常见的有HTTP、FTP、SMTP等。七层负载均衡器可以根据报文内容,再配合负载均衡算法来选择后端服务器,因此也称为“内容交换器”。比如,对于Web服务器的负载均衡,七层负载均衡器不但可以根据“IP+端口”的方式进行负载分流,还可以根据网站的URL、访问域名、浏览器类别、语言等决定负载均衡的策略。例如,有两台Web服务器分别对应中英文两个网站,两个域名分别是A、B,要实现访问A域名时进入中文网站,访问B域名时进入英文网站,这在四层负载均衡器中几乎是无法实现的,而七层负载均衡可以根据客户端访问域名的不同选择对应的网页进行负载均衡处理。常见的七层负载均衡器有HAproxy、Nginx等。

这里仍以常见的TCP应用为例,由于负载均衡器要获取到报文的内容,因此只能先代替后端服务器和客户端建立连接,接着,才能收到客户端发送过来的报文内容,然后再根据该报文中特定字段加上负载均衡器中设置的负载均衡算法来决定最终选择的内部服务器。纵观整个过程,七层负载均衡器在这种情况下类似于一个代理服务器。整个过程如下图所示。

三、常见的代理了解

1、lvs和硬件F5,是基于IP的三层负载,硬件适配性能好,处理性能强。

2、haproxy,可以适配三层负载均衡,同样可以适配七层。对于页面明确有请求分离的时候,可以使用haproxy。

3、nginx,对于日PV小于500万,对于需要进行高并发的站点,可以使用nginx代理

四、haproxy配置文件讲解

五、案例:Haproxy+Nginx+Tomcat搭建高可用集群

实例步骤

1、配置tomcat服务器

2、安装haproxy

3、配置haproxy服务:

4、测试集群

5、配置haproxy的日志文件分离(查看haproxy日志)

6、配置haproxy服务器的日志管理web界面

测试

看到以上界面实验就做完了

END


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/507735.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-06-17
下一篇2023-06-17

发表评论

登录后才能评论

评论列表(0条)

    保存