HAProxy安装配置详解

news2024/9/23 11:25:00

  HAProxy是一个使用C语言编写的自由及开放源代码软件,其提供高可用性、负载均衡,以及基于TCP和HTTP的应用程序代理。 
  HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理。HAProxy运行在当前的硬件上,完全可以支持数以万计的并发连接。并且它的运行模式使得它可以很简单安全的整合进您当前的架构中, 同时可以保护你的web服务器不被暴露到网络上。 
  HAProxy实现了一种事件驱动, 单一进程模型,此模型支持非常大的并发连接数。多进程或多线程模型受内存限制 、系统调度器限制以及无处不在的锁限制,很少能处理数千并发连接。事件驱动模型因为在有更好的资源和时间管理的用户空间(User-Space) 实现所有这些任务,所以没有这些问题。此模型的弊端是,在多核系统上,这些程序通常扩展性较差。这就是为什么他们必须进行优化以 使每个CPU时间片(Cycle)做更多的工作。
 

一、下载并解压
下载地址:http://pkgs.fedoraproject.org/repo/pkgs/haproxy/

[root@haproxy-server-master ~]# cd /usr/local/src/
[root@haproxy-server-master src]# wget http://pkgs.fedoraproject.org/repo/pkgs/haproxy/haproxy-1.7.9.tar.gz/sha512/d1ed791bc9607dbeabcfc6a1853cf258e28b3a079923b63d3bf97504dd59e64a5f5f44f9da968c23c12b4279e8d45ff3bd39418942ca6f00d9d548c9a0ccfd73/haproxy-1.7.9.tar.gz
[root@haproxy-server-master src]# tar zxvf haproxy-1.7.9.tar.gz


二、安装

解释

[root@haproxy-server-master src]# cd haproxy-1.7.9 [root@haproxy-server-master haproxy-1.7.9]# uname -r 3.10.0-514.el7.x86_64 [root@haproxy-server-master haproxy-1.7.9]# make TARGET=linux310 ARCH=x86_64 PREFIX=/usr/local/haproxy [root@haproxy-server-master haproxy-1.7.9]# make install PREFIX=/usr/local/haproxy

参数说明:

TARGET=linux310,内核版本,使用uname -r查看内核,如:3.10.0-514.el7,此时该参数就为linux310;kernel 大于2.6.28的可以用:TARGET=linux2628;
ARCH=x86_64,系统位数;
PREFIX=/usr/local/haprpxy #/usr/local/haprpxy,为haprpxy安装路径。

三、添加配置文件

1.79及以后的版本解压后文件内就没有haproxy.cfg文件,所以需要我们自己找个模板写一下。

由于没有配置其他的服务器,这里就简单的添加一个可以让Haproxy启动的配置。

[root@haproxy-server-master haproxy]# mkdir conf
[root@haproxy-server-master haproxy]# ls
conf  doc  sbin  share
[root@haproxy-server-master haproxy]# cd conf/
[root@haproxy-server-master conf]# vim haproxy.cfg
 

解释

global log 127.0.0.1 local0 maxconn 1000 daemon defaults log global mode http option httplog option dontlognull retries 3 timeout connect 5000 timeout client 50000 timeout server 50000 listen admin_stats bind 0.0.0.0:1080 mode http option httplog maxconn 10 stats refresh 30s stats uri /stats stats realm XingCloud\ Haproxy stats auth admin:admin stats auth Frank:Frank stats hide-version stats admin if TRUE

-----------------------------

解释

defaults log global mode http retries 3 option redispatch maxconn 4096 timeout http-request 10s timeout queue 1m timeout connect 10s timeout client 1m timeout server 1m timeout http-keep-alive 10s timeout check 10s maxconn 3000 listen mysql_proxy bind 0.0.0.0:3306 mode tcp balance roundrobin option tcpka option httpchk option mysql-check user haproxy #在mysql中创建无任何权限用户haproxy,且无密码 server mysql_master1 192.168.3.61:4000 weight 1 server mysql_master2 192.168.3.64:4000 weight 1 global stats socket /var/run/haproxy.sock mode 666 level user stats timeout 1m

启动haproxy

/usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/conf/haproxy.cfg

五、访问统计页面

地址:http://127.0.0.1:1080/stats

è¿éåå¾çæè¿°

六、haproxy记录日志
在配置前,我们先来了解一下日志的level:local0~local7 16~23保留为本地使用:

emerg 0 系统不可用;
alert 1 必须马上采取行动的事件;
crit 2 关键的事件;
err 3 错误事件;
warning 4 警告事件;
notice 5 普通但重要的事件;
info 6 有用的信息;
debug 7 调试信息。
默认 haproxy 是不记录日志的,为了记录日志还需要配置 syslog 模块,在 linux 下是 rsyslogd 服务。

1、先安装 rsyslog(系统应该都安装了,先查看一下)
[root@haproxy-server-master /]# yum -y install rsyslog
1
2、添加haproxy的日志配置
[root@haproxy-server-master /]# vim /etc/rsyslog.d/haproxy.conf

$ModLoad imudp
$UDPServerRun 514
local0.* /var/log/haproxy.log

[root@haproxy-server-master /]# ls /etc/rsyslog.d/
haproxy.conf  listen.conf

3、修改 /etc/rsyslog.conf 文件
在#### RULES ####上面一行的地方加入以下内容(文件里应该默认有这个配置,可以看一下):

[root@haproxy-server-master /]# vim /etc/rsyslog.conf

# Include all config files in /etc/rsyslog.d/
$IncludeConfig /etc/rsyslog.d/*.conf

4、修改 /etc/sysconfig/rsyslog 文件
把SYSLOGD_OPTIONS=”-m 0”改成 SYSLOGD_OPTIONS=”-r -m 0 -c 2”

[root@haproxy-server-master /]# vim /etc/sysconfig/rsyslog

SYSLOGD_OPTIONS="-r -m 0 -c 2"

相关解释说明:

-r:打开接受外来日志消息的功能,其监控514 UDP端口;
-x:关闭自动解析对方日志服务器的FQDN信息,这能避免DNS不完整所带来的麻烦;
-m:修改syslog的内部mark消息写入间隔时间(0为关闭),例如240为每隔240分钟写入一次”–MARK–”信息;
-h:默认情况下,syslog不会发送从远端接受过来的消息到其他主机,而使用该选项,则把该开关打开,所有 接受到的信息都可根据syslog.conf中定义的@主机转发过去。
3、保存,重启 rsyslog 服务
[root@haproxy-server-master /]# systemctl restart rsyslog.service
[root@haproxy-server-master /]# systemctl status rsyslog.service
--------------------- 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

algorithm算法库学习之——修改序列的操作

algorithm此头文件是算法库的一部分。本篇介绍修改序列的操作函数。 修改序列的操作 copycopy_if (C11) 将某一范围的元素复制到一个新的位置 (函数模板) copy_n (C11) 将一定数目的元素复制到一个新的位置 (函数模板) copy_backward 按从后往前的顺序复制一个范围内的元素 (函…

Java异常详解及自定义异常

认识异常,掌握异常处理主要的5个关键字:throw、try、catch、final、throws并掌握自定义异常 目录 1、异常概念与体系结构 1、1异常的概念 1、2异常体系结构 1、3异常的分类 编译时异常: 运行时异常 : 2、异常处理 2、1防御式…

优思学院|SPC控制图异常点占比可否用来评估过程的稳定程度?

使用SPC控制图异常点占比确实可以评估过程的稳定程度。通常来说,SPC(统计过程控制)控制图是用于监控和控制生产或业务过程,以确保这些过程在可接受的范围内运行。通过识别和分析控制图中的异常点,可以判断过程是否存在…

服务器本地部署文件服务器minio

minio类似于阿里云的OSS,为不方便把图、文、日志等形式的文件保存在公有云上的,可以在自己的服务器上部署文件服务器 看过本人前几个文章的,使用docker就会很快上手部署,直接上所有代码 #添加镜像 docker search minio docker p…

DAY1: 实习前期准备

文章目录 VS Code安装的插件C/CCMakeGitHub CopilotRemote-SSH 收获 VS Code 下载链接:https://code.visualstudio.com 安装的插件 C/C 是什么:C/C IntelliSense, debugging, and code browsing. 为什么:初步了解如何在VS Code里使用C输出…

使用C Caller 模块集成C代码到Simulink模型

可以使用 C Caller 模块将新的或现有的 C 代码集成到 Simulink 模型中。要在 Simulink 模型中创建自定义模块,C Caller 模块允许您调用在外部源代码和库中指定的外部 C 函数。C Caller 模块具有以下优势: 简单 C 函数的自动集成,包括命名空间…

同声传译的app有哪些?分享5个旅行者的多语言翻译伙伴

许多人可能并不了解什么是同声传译。其实,同声传译是一种高效的语言服务,它使得不同语言的人们能够在会议、谈判、演讲等场合中实现即时交流。 今天,本文将向您介绍几款能够实现同声传译的实用工具,帮助您更深入地了解同声传译的…

做外贸干一行爱一行,还是干一行厌一行?

记得年轻的时候,每每和同龄人不同行业聊天的时候,大家普遍的感觉就是:自己这一行太苦了,以后有孩子了干什么都不能让他做自己这一行。 和在银行上班的同学聊天,他们最大的苦恼是需要每天开发客户, 让客户在…

如何利用股指期货代替买股票?

当我们深入探讨中金所上市的三个股指期货——IF(沪深300股指期货)、IC(中证500股指期货)和IH(中证50股指期货)时,我们可以从多个角度来分析它们的特点和优势。 市场特点分析 IH(上…

科研绘图系列:R语言径向柱状图(Radial Bar Chart)

介绍 径向柱状图(Radial Bar Chart),又称为雷达图或蜘蛛网图(Spider Chart),是一种在极坐标系中绘制的柱状图。这种图表的特点是将数据点沿着一个或多个从中心向外延伸的轴来展示,这些轴通常围绕着一个中心点均匀分布。 特点: 极坐标系统:数据点不是在直角坐标系中展…

Qt json和xml操作

学习目标: 认识json和xml读写操作 前置环境 运行环境:qt creator 4.12 学习内容 XML XML(Extensible Markup Language)是一种标记语言,是一种用于描述数据结构的语言。它非常适合用于存储和传输数据。 XML 的主要特点如下: 可扩展性:XM…

TypeSscript 学习(一)

一、为什么使用 TypeScript 因为 js 是一种 弱类型语言 编写代码比较灵活 但是当项目比较大时 这种灵活不利于维护 我们用 TypeScript 这种强类型的语言 比较利于维护 二、语法 1.类型推断 ts 通过我们写的内容 知道变量的类型 定义 str 为 abc 以后 str 只能存 字符串…

element-ui操作表格行内容如何获取当前行索引?

需求&#xff1a; 根据每个用户的提交次数、撤回次数&#xff0c;动态计算出实际次数&#xff0c;并且提交次数不能小于撤回次数 <template><div><el-table:data"tableData"style"width: 80%"border><el-table-columnprop"date&…

俄罗斯VK与Yandex,谁的优势更胜一筹?

俄罗斯VK和Yandex作为该国两大重要的网络平台&#xff0c;各自具有独特的优势。 VK是一个社交媒体巨头&#xff0c;以其庞大的用户基础著称。 这个平台不仅拥有超过数亿的注册用户&#xff0c;而且这些用户在平台上的活跃度极高&#xff0c;每天都会产生海量的内容与互动。 …

优优嗨聚集团:餐饮新纪元,揭秘餐饮合作背后的双赢奥秘

在竞争激烈的餐饮市场中&#xff0c;单打独斗早已不再是主流&#xff0c;而餐饮合作却成为了一种新的趋势。那么&#xff0c;餐饮合作究竟有哪些优势&#xff0c;能够吸引众多餐饮从业者纷纷投身其中呢&#xff1f;本文将为您揭秘餐饮合作背后的双赢奥秘。 一、资源共享&#x…

go-redis 封装事件-client封装模型、批量数据处理的导出器设计

一、redis-go的封装实践-client模型 // Copyright 2020 Lingfei Kong <colin404foxmail.com>. All rights reserved. // Use of this source code is governed by a MIT style // license that can be found in the LICENSE file.package storageimport ("context&q…

(19)夹钳(用于送货)

文章目录 前言 1 常见的抓手参数 2 参数说明 前言 Copter 支持许多不同的抓取器&#xff0c;这对送货应用和落瓶很有用。 按照下面的链接&#xff08;或侧边栏&#xff09;&#xff0c;根据你的设置了解配置信息。 Electro Permanent Magnet v3 (EPMv3)Electro Permanent M…

老胡的周刊(第149期)

老胡的信息周刊[1]&#xff0c;记录这周我看到的有价值的信息&#xff0c;主要针对计算机领域&#xff0c;内容主题极大程度被我个人喜好主导。这个项目核心目的在于记录让自己有印象的信息做一个留存以及共享。 &#x1f3af; 项目 mesop[2] Mesop 是一个基于 Python 的 UI 框…

【机器学习】——决策树模型

&#x1f4bb;博主现有专栏&#xff1a; C51单片机&#xff08;STC89C516&#xff09;&#xff0c;c语言&#xff0c;c&#xff0c;离散数学&#xff0c;算法设计与分析&#xff0c;数据结构&#xff0c;Python&#xff0c;Java基础&#xff0c;MySQL&#xff0c;linux&#xf…

基于Java+SpringMvc+Vue技术的在线学习交流平台的设计与实现---60页论文参考

博主介绍&#xff1a;硕士研究生&#xff0c;专注于Java技术领域开发与管理&#xff0c;以及毕业项目实战✌ 从事基于java BS架构、CS架构、c/c 编程工作近16年&#xff0c;拥有近12年的管理工作经验&#xff0c;拥有较丰富的技术架构思想、较扎实的技术功底和资深的项目管理经…