Haproxy搭建Web群集

常见的Web集群调度器分为软件和硬件

软件通常使用开源的LVS、Haproxy、Nginx。

* LVS 性能最好,但是搭建相对复杂
* Nginx的upstream模块支持群集功能,但是对群集节点健康检查功能不强,高并发性能没有Haproxy好。
硬件一般使用比较多的是F5、Array,也有很多人使用国内的一些产品,如梭子鱼、绿盟等。

一、Haproxy简介

        Haproxy是可提供高可用性、负载均衡以及基于TCP和和HTTP应用的代理,是免费、快速并且可靠的一种解决方案。

        Haproxy非常适用于并发大(并发达1w以上) web站点,这些站点通常又需要会话保持或七层处理。

        Haproxy的运行模式使得它可以很简单安全的整合至当前的架构中,同时可以保护web服务器不被暴露到网络上。
 

二、主要特性

可靠性和稳定性非常好,可以与硬件级的F5负载均衡设备相媲美;
最高可以同时维护40000-50000个并发连接,单位时间内处理的最大请求数为20000个,最大处理能力可达10Git/s;
支持多达8种负载均衡算法;
支持Session会话保持,Cookie的引导;
支持通过获取指定的url来检测后端服务器的状态;
支持虚机主机功能,从而实现web负载均衡更加灵活;
支持连接拒绝、全透明代理等独特的功能;
拥有强大的ACL支持,用于访问控制;
支持TCP协议的负载均衡转发;
支持客户端的keepalive功能,减少客户端与haproxy的多次三次握手导致资源浪费,让多个请求在一个tcp连接中完成;
 

三、支撑的调度算法

HAProxy负载均衡策略非常多,常见的有如下8种

1、roundrobin,表示简单的轮询;
2、static-rr,表示根据权重;
3、leastconn,表示最少连接者先处理;
4、source,表示根据请求源IP;
5、uri,表示根据请求的URI,做cdn需使用;
6、url_param,表示根据请求的URl参数'balance url_param' requires an URL parameter name;
7、hdr(name),表示根据HTTP请求头来锁定每一次HTTP请求;
8、rdp-cookie(name),表示根据cookie(name)来锁定并哈希每一次TCP请求。
 

四、部署实例

Web 服务器1:192.168.116.10
Web 服务器2:192.168.116.20

NFS 共享存储器:192.168.116.30

Haporxy 负载调度器:192.168.116.40

网关/路由器:192.168.116.2
客户端:192.168.116.50

1.准备好Web服务器1和2 ,配置好与NFS共享存储器的网页共享

2.部署Haproxy服务器

关闭防火墙,将安装Haproxy所需软件包传到/opt目录下

systemctl stop firewalld
setenforce 0

编译安装 Haproxy

使用uname -r查看内核,kernel大于2.6.28的用此时该参数用TARGET=linux26;kernel大于2.6.28的用TARGET=linux2628

#下载依赖包​​​​​​​
yum install -y pcre-devel bzip2-devel gcc gcc-c++ make#解压
tar zxvf haproxy-1.5.19.tar.gz
cd haproxy-1.5.19/#使用uname -r查看内核,kernel大于2.6.28的用此时该参数用TARGET=linux26;kernel大于2.6.28的用TARGET=linux2628#编译安装
make TARGET=linux2628 ARCH=x86_64
make install

查看模板文件

 复制并修改配置文件

mkdir /etc/haproxy
cp examples/haproxy.cfg /etc/haproxy/
cd /etc/haproxy/vim haproxy.cfg

添加到系统服务

cp /opt/haproxy-1.5.19/examples/haproxy.init /etc/init.d/haproxy
chmod +x haproxy
chkconfig --add /etc/init.d/haproxy          #这里软连接是因为服务使通过/usr/sbin/haproxy启动的,而默认编译安装的位在/usr/local/sbin/haproxy
ln -s /usr/local/sbin/haproxy /usr/sbin/haproxy
service haproxy start

注:web节点服务器下必须存在配置文件中指定的健康检查页面(如我上面配置的是test.html),否则会显示节点服务器为down状态。

访问haproxy服务器地址,刷新测试是否负载均衡转发

五、独立保存日志

默认haproxy的日志是输出到系统的syslog中,查看起来不是非常方便,为了更好的管理haproxy的日志,我们在生产环境中一般单独定义出来。需要将haproxy的info及notice日志分别记录到不同的日志文件中。

首先需要保证配置文件定义的日志是有系统日志管理

添加日志配置文件

需要修改rsyslog配置,为了便于管理。将haproxy相关的配置独立定义到haproxy.conf,并放到/etc/rsyslog.d/下,rsyslog启动时会自动加载此目录下的所有配置文件。


        这部分配置是将haproxy的info日志记录到/var/log/haproxy/haproxy-info.log下,将notice日志记录到/var/log/haproxy/haproxy-notice.log下。
        

        “&~”表示当日志写入到日志文件后,rsyslog停止处理这个信息。

vim /etc/rsyslog.d/haproxy.confif ($programname == 'haproxy' and $syslogseverity-text == 'info')
then -/var/log/haproxy/haproxy-info.log
&~
if ($programname == 'haproxy' and $syslogseverity-text == 'notice')
then -/var/log/haproxy/haproxy-notice.log
&~

重启服务并访问测试,追踪是否记录日志

systemctl restart rsyslog.service#查看haproxy的访问请求日志信息
tail -f /var/log/haproxy/haproxy-info.log       

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/130579.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

postman连接websocket 测试(v8.5.1)

1. postman v8.5版本 以上支持 websocket。 2. 选择websocket请求模块File - New... 3. 输入请求地址, ws:// 控制台输出: 2023-09-12 15:29:23.039 INFO 11592 --- [nio-8080-exec-2] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring DispatcherServlet di…

sql注入之高权限注入和文件读写

死在山野的风里,活在自由的梦里 sql注入之高权限注入 高权限注入1.多个网站共享mysql服务器2.MySQL 权限介绍3.注入流程查询所有数据库名称查询表名对应的字段名查询数据 文件读写1.文件读写注入的原理2.文件读写注入的条件3.读取文件4.写入文件 高权限注入 在数据…

学习SpringMvc第三战-利用SpringMvc实现CRUD

目录 一.前期环境搭建 1.替换pom.xml的内容 2.导入配置文件(小编上传资源) 3.修改xml文件 4.点击创建自动生成代码 5.写一个类用于处理页面跳转 二.正式启动SpringMVC的CRUD 1.建立接口,调用自动生成的接口 2.构建分页代码 2.1书写BookMapper.xml中分页的方…

12个最受欢迎的3D打印机械臂【开源|DIY|套件】

推荐:用 NSDT编辑器 快速搭建可编程3D场景 机器人手臂的用途各不相同,但大多数都能够执行拾取和放置任务,而有些则配备用于 CNC 工作、激光雕刻,甚至 3D 打印。 机械臂具有广泛的应用和各个领域,从执行精密手术和进行工…

Kafka3.0.0版本——消费者(分区的分配以及再平衡)

目录 一、分区的分配以及再平衡1.1、消费者分区及消费者组的概述1.2、如何确定哪个consumer来消费哪个partition的数据1.3、消费者分区分配策略 一、分区的分配以及再平衡 1.1、消费者分区及消费者组的概述 一个consumer group中有多个consumer组成,一个 topic有多…

go语言基本操作---六

并发编程 并行:指在同一时刻,有多条指令在多个处理器上同时执行。 并发:指在同一时刻只能有一条指令执行,但是多个进程指令被快速的轮换执行,使得在宏观上具有多个进程同时执行的效果,但在微观上并不是同时…

python机器人编程——用python实现一个写字机器人

目录 一、前言二、整体框架2.1 系统构成2.2 硬件介绍2.2.1主要组成部分2.2.2机械结构2.2.3驱动及控制主板PS电机驱动原理简介: 2.2.4其余部分 2.3 机器人python程序框架2.3.1通信服务模块2.3.2消息处理模块2.3.3轨迹解析模块2.3.4机械臂逆解模块2.3.5写字板模块 三、机械臂的建…

浅谈基于LoRa通信技术的建筑能耗监测系统及模块

安科瑞 华楠 摘要:本文提出采用LoRa通信技术开发设计建筑能耗监测系统的建议,通过系统,该系统功能完善、界面友好、通信稳定,在建筑能耗监测领域中有较高的推广价值。 关键词:LoRa通信;建筑能耗&#xff…

63、SpringBoot---定制 RestTemplate--消息转化器、拦截器

★ 定制RestTemplate 如要对RestTemplate进行自定义设置,Spring Boot也提供了两种主要方式:▲ 局部式:在调用RestTemplateBuilder构建RestTemplate之前,先调用RestTemplateBuilder的方法对其定制,通过这种方式设置的R…

最新遥感数据与作物模型同化教程

详情点击公众号链接:最新遥感数据与作物模型同化教程一:遥感基础1.遥感平台(如无人机)与传感器、国内外主要陆地卫星(如Landsat、SPOT、HJ、GF) 2.遥感基本原理、光谱响应函数、遥感数据处理流程 3.遥感在陆…

华为交换机:STP的详解和试验

前言 为了解决网络冗余链路所产生的问题,IEEE定义了802.1D协议,即生成树协议STP,利用生成树协议可以避免帧在环路中的增生和无限循环,生成树的主要思想是,当两个交换机之间存在多条链路时,通过一定的算法只激活其中最主要的一条链路,而将其他冗余链路阻塞掉变为备用链路,当主链…

【mysql】—— 函数的基本介绍

前言: MySQL是一种常用的关系型数据库管理系统,它提供了许多内置的函数来进行数据操作和处理。本期,我将给大家介绍的就是关于 “函数” 的相关知识!!! 目录 (一)日期函数 &#…

一个好玩的浏览器插件

背景 最近抽空开发了一个有意思的浏览器插件。背景是我们在开发过程中有时需要做一些测试验证,需要修改请求头字段和响应头字段的内容,有时需要在页面做测试,反复请求同一个接口,并修改一些字段。 如果此时使用nginx做代理转发再…

数据库数据恢复-Oracle数据库truncate的数据恢复案例

Oracle数据库故障&分析: 北京某单位Oracle 11g R2数据库误执行truncate table CM_CHECK_ITEM_HIS,表数据丢失,查询该表时报错。数据库备份无法使用,表数据无法查询。 Oracle数据库Truncate数据的机理:执行Trunca…

element ui 表格组件与分页组件的二次封装

目录 效果图 组件封装 parseTime函数 debounce 函数 render通用渲染模版 页面使用 【扩展】vue 函数式组件 函数式组件特点: 函数式组件的优点: 【扩展】vue中的render函数 一、初步认识render函数 二、为什么使用render函数 三、render函数…

智慧工地:让工地可视化、数字化、智能化

智慧工地平台功能包括:劳务管理、施工安全管理、视频监控管理、机械安全管理、危大工程监管、现场物料监管、绿色文明施工、安全隐患排查、施工综合管理、施工质量管理、设备管理、系统管理等模块。 一、项目开发环境 技术架构:微服务 开发语言&#…

【面试高频题】二叉树“神级遍历“入门

题目描述 这是 LeetCode 上的 「99. 恢复二叉搜索树」 ,难度为 「中等」。 Tag : 「二叉树」、「树的搜索」、「递归」、「迭代」、「中序遍历」、「Morris 遍历」 给你二叉搜索树的根节点 root,该树中的 恰好 两个节点的值被错误地交换。请在不改变其结…

【Hive SQL】统计同名路径下目录数量(基于reverse、split和substr函数)

首先,Hive事务表所产生的的路径信息如下: PS:其中路径信息格式为 /user/hive/warehouse/${database_name}.db/${table_name}/*/user/hive/warehouse/test.db/tran_ts/delete_delta_0000002_0000002_0000 /user/hive/warehouse/test.db/tran_…

【脑机接口开源数据处理包】brainflowBrainFlow是一个库,旨在获取,解析和分析脑电图,肌电图,心电图和其他类型的数据从生物传感器。

BrainFlow是一个库,旨在获取,解析和分析脑电图,肌电图,心电图和其他类型的数据从生物传感器。 brainflow开源库官网地址 [https://brainflow.readthedocs.io/en/stable/](https://brainflow.readthedocs.io/en/stable/) 它提供了…

AntDB数据库参加ACDU中国行杭州站,分享数据库运维实践与经验

关于ACDU 和中国行: ACDU是由墨天轮社区举办的中国数据库联盟的品牌活动之一,在线下汇集数据库领域的行业知名人士,共同探讨数据库前沿技术及其应用,促进行业发展和创新的平台,也为开发者们提供友好交流的机会。 AntDB作为具有技术…