04-Haproxy搭建Web群集

news2024/11/14 1:07:27

理论讲解

Haproxy 是目前比较流行的一种群集调度工具,同类群集调度工具有很多,如LVS 和Nginx。相比较而言,LVS 性能最好,但是搭建相对复杂:Nginx的upstream模块支持群集功能,但是对群集节点健康检查功能不强,高并发性能没有 Haproxy好。Haproxy 官方网站是http://www.haproxy.org/.
本案例介绍使用 Haproxy 及 Nginx 搭建一套 Web 群集。

一:案例分析

1:案例概述

2:案例前置知识

3:案例环境

二:案例实施

2:编译安装Haproxy

[root@localhost ~]# systemctl stop firewalld

[root@localhost ~]# setenforce 0

[root@localhost ~]# yum -y install pcre-devel bzip2-devel gcc*

[root@localhost ~]# tar zxvf haproxy-1.5.19.tar.gz

[root@localhost ~]# cd haproxy-1.5.19/

[root@localhost haproxy-1.5.19]# make TARGET=linux26

[root@localhost haproxy-1.5.19]# make install

注释:

linux22     for Linux 2.2

linux24     for Linux 2.4 and above (default)

linux24e    for Linux 2.4 with support for a working epoll (> 0.21)

linux26     for Linux 2.6 and above

solaris     for Solaris 8 or 10 (others untested)

freebsd     for FreeBSD 5 to 8.0 (others untested)

openbsd     for OpenBSD 3.1 to 4.6 (others untested)

cygwin      for Cygwin

generic     for any other OS.

custom      to manually adjust every setting

3:Haproxy服务器配置

(1)建立haproxy配置文件

[root@localhost haproxy-1.5.19]# mkdir /etc/haproxy

[root@localhost haproxy-1.5.19]# cp examples/haproxy.cfg /etc/haproxy/

(2)创建服务脚本

[root@localhost haproxy-1.5.19]# cp examples/haproxy.init /etc/init.d/haproxy

[root@localhost haproxy-1.5.19]# ln -s /usr/local/sbin/haproxy /usr/sbin/haproxy

[root@localhost haproxy-1.5.19]# chmod +x /etc/init.d/haproxy

[root@localhost ~]# chkconfig --add haproxy

(3)Haproxy配置介绍

[root@localhost haproxy-1.5.19]# vi /etc/haproxy/haproxy.cfg

global

        log 127.0.0.1   local0

        log 127.0.0.1   local1 notice

        #log loghost    local0 info

        maxconn 4096

        uid 99

        gid 99

        daemon

        #debug

        #quiet

defaults

        log     global

        mode    http

        option  httplog

        option  dontlognull

        retries 3

       # redispatch         

        maxconn 2000

        contimeout      5000

        clitimeout      50000

        srvtimeout      50000

listen  webcluster 0.0.0.0:80

        option  httpchk GET /index.html

        balance roundrobin

        server  inst1 192.168.1.61:80 check inter 2000 fall 3

        server  inst2 192.168.1.62:80 check inter 2000 fall 3

可在每个服务器后加weight设置权重值

        server  inst1 192.168.1.61:80 check inter 2000 fall 3 weight 1

server  inst2 192.168.1.62:80 check inter 2000 fall 3 weight 2

各个语句的解释

global

        log 127.0.0.1   local0     \\配置日志记录,local0为日志设备,默认是系统日志

        log 127.0.0.1   local1 notice      \\日志级别为notice

        #log loghost    local0 info   

        maxconn 4096       \\最大连接数

        uid 99           \\用户uid

        gid 99           \\用户gid

        daemon        \\以守护进程的方式运行

        #debug      \\调试模式,输出启动信息到标准输出

        #quiet     \\安静模式,启动时无输出

defaults

        log     global           \\使用globle中定义的日志

        mode    http           \\模式为http

        option  httplog         \\采用http的格式记录日志

        option  dontlognull     \\保证HAProxy不记录上级负载均衡发送过来的用于检测状态数据的心跳包

        retries 3             \\检查节点连接失败的次数,超过3次认为节点不可用

       # redispatch         \\当负载很高时,自动结束当前队列处理比较久的连接

        maxconn 2000      \\最大连接数

        contimeout      5000         \\连接超时时间ms

        clitimeout      50000        客户端超时时间ms

        srvtimeout      50000              服务器超时时间ms

listen  webcluster 0.0.0.0:80        \\定义群集和监听的端口号

        option  httpchk GET /index.html    \\检查服务器的index.html文件,心跳检测URL设置

        balance roundrobin      \\负载均衡的调度算法为轮询

        server  inst1 192.168.1.61:80 check inter 2000 fall 3        \\定义在线节点

        server  inst2 192.168.1.62:80 check inter 2000 fall 3         

check inter 2000是检测心跳频率(每2000ms检测一次),fall 33次失败认为服务器不可用

在新版本中,超时的设置做了调整,具体如下

contimeout timeout connect取代:定义haproxy将客户端请求转发至后端服务器所等待的超时时长

clitimeout timeout client取代:客户端非活动状态的超时时长,是 app 连接 haproxy的时间  

srvtimeout timeout server取代:客户端与服务器端建立连接后,等待服务器端的超时时长,是haproxy 连接后端web服务器的时间.

注释:

haproxy共有八种调度算法

    1. balance leastconn   最少连接数
    2. balance roundrobin  轮询
    3. balance source      根据客户端IP进行哈希的方式
    4. static-rr    根据权重
    5. uri    根据请求的URI
    6. url_param    根据请求的URl参数
    7. hdr(name)   根据HTTP请求头来锁定每一次HTTP请求
    8. rdp-cookie(name)   根据cookie(name)来锁定并哈希每一次TCP请求
       

chroot /usr/share/haproxy  \\也就是改变程序执行时所参考的根目录位置,如果有此代码,需要创建此目录

关于日志级别

static Level DEBUG

DEBUG Level指出细粒度信息事件对调试应用程序是非常有帮助的。

static Level INFO

INFO level表明 消息在粗粒度级别上突出强调应用程序的运行过程。

static Level WARN

WARN level表明会出现潜在错误的情形。

static Level ERROR

ERROR level指出虽然发生错误事件,但仍然不影响系统的继续运行。

static Level FATAL

FATAL level指出每个严重的错误事件将会导致应用程序的退出。

另外,还有两个可用的特别的日志记录级别:

static Level ALL

ALL Level是最低等级的,用于打开所有日志记录。

static Level OFF

OFF Level是最高等级的,用于关闭所有日志记录。

4:启动

[root@localhost haproxy-1.5.19]# /etc/init.d/haproxy start

5:测试web群集

http://192.168.1.60/test.html

刷新页面进行测试

或使用脚本测试

[root@localhost ~]# for i in $(seq 10); do curl http://192.168.1.60/test.html  ;done

6:Haproxy的日志

haproxy在默认情况不会记录日志,除了在haproxy.conf中的global段指定日志的输出外,还需要配置系统日志的配置文件。

方法一:

[root@localhost haproxy-1.4.24]# vi /etc/haproxy/haproxy.cfg

global

#       log 127.0.0.1   local0

#       log 127.0.0.1   local1 notice

        #log loghost    local0 info

        maxconn 4096

        chroot /usr/share/haproxy

        uid 99

        gid 99

        daemon

        #debug

        #quiet

        log /dev/log local0 info

        log /dev/log local0 notice

[root@localhost haproxy-1.4.24]# touch /etc/rsyslog.d/haproxy.conf

[root@localhost haproxy-1.4.24]# vi /etc/rsyslog.d/haproxy.conf

if ($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

& ~

[root@localhost haproxy-1.4.24]# service rsyslog restart

[root@localhost ~]#/etc/init.d/haproxy restart

[root@localhost ~]# cat /var/log/haproxy/haproxy-info.log

方法二:

(1)编辑/etc/haproxy/haproxy.conf

[root@localhost ~]# vi /etc/haproxy/haproxy.cfg

global

 log 127.0.0.1 local3    

#local3是设备,对应于 /etc/rsyslog.conf中的配置,默认回收info的日志级别

(2)编写haproxy日志文件

[root@localhost ~]# vim  /etc/rsyslog.d/haproxy.conf

$ModLoad imudp

$UDPServerRun 514

local3.*     /var/log/haproxy.log

&~

注释:

$ModLoad imudp   采集日志的协议UDP

$UDPServerRun 514    指定日志采集使用的端口号

local3.*     /var/log/haproxy.log   指定日志存放位置

(3)配置rsyslog的主配置文件,开启远程日志(可以不配)

[root@localhost ~]# vim /etc/sysconfig/rsyslog

SYSLOGD_OPTIONS=”-c 2 -r -m 0″

#-c 2 使用兼容模式,默认是 -c 5

#-r 开启远程日志

#-m 0 标记时间戳。单位是分钟,为0时,表示禁用该功能

(4)重启haproxy和rsyslog服务

[root@localhost ~]# systemctl restart rsyslog

[root@localhost ~]# systemctl restart haproxy

(5)访问网站后查看日志

[root@localhost ~]# cat /var/log/haproxy.log

扩展:代理mysql

listen mysql 0.0.0.0:3306

server mysql1 192.168.10.205:3306 check port 3306 maxconn 300

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

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

相关文章

tiff图片怎么转jpg?值得介绍的四种tiff转jpg方法

tiff图片怎么转jpg?jpg使用有损压缩技术,可以显著减小文件大小。这使得jpg文件更适合在网络上传输和在设备上存储。而且,PG格式被各种浏览器、图像查看器、编辑软件以及社交媒体平台广泛支持,使得分享和查看图片更加方便。如果需要…

tableau条形图绘制 - 2

tableau条形图绘制 1. 条形图绘制-11.1 创建工作表1.2 修改工作表名称1.3 条形图绘制1.4 显示标签1.5 行列转换 2. 条形图绘制-22.1 新建工作表2.2 修改工作表名称2.3 条形图绘制2.4 价格度量选平均值2.5 标签度量选平均值2.6 升序,整个视图显示2.7 行列转换 3. 堆积…

叹为观止|四款让人赞不绝口的优质软件,越用越上瘾

不说闲话直接上狠货,下面神仙软件,都值得使用。 Smart Defrag 说起电脑运行慢或者抽风,磁盘碎片就是让电脑变得又卡又不稳定的元凶之一。 不过Smart Defrag就算是新手小白也能操作,它里面藏着一个超强的碎片整理引擎&#xff0…

DevEco Studio No device 无法识别 usb 设备 - 鸿蒙

DevEco Studio IDE 版本与手机系统版本升级后出现了 USB 连接设备后 IDE 无法识别 no device 的情况出现; 解决办法 首先,确定当前 DevEco Studio 的 IDE 版本与移动设备的大版本保持一致; 其次,在版本相互匹配的情况下,查看移动设备是否开启了开发者模式与 USB 调试,具体步骤…

短视频文学剧本:成都柏煜文化传媒有限公司

短视频文学剧本,是创作者对现实世界的一次微缩重构。在这个被精心设计的空间里,时间被压缩,空间被浓缩,但每一个细节都经过精心雕琢,力求在有限的时间内展现出最大的信息量与情感深度。成都柏煜文化传媒有限公司从人物…

南方SouthMap:测绘世界的利器

在现代测绘领域,南方SouthMap软件无疑是一款不可或缺的工具。作为一名长期使用这款软件的用户,我深深感受到它在工作中的重要性和便利性。SouthMap不仅仅是一款软件,更是测绘工作者的得力助手,帮助我们在复杂的地理信息数据处理中…

9.pwn 栈溢出原理

栈溢出简介 函数中的存储在栈中的局部变量数组边界检查不严格发生越界写,造成用户输入覆盖到缓冲区外的数据内容, 由于栈中同时存在着与函数调用参数的相关信息,栈溢出可以导致控制流劫持 基础栈溢出(hello world in pwn) 多数情况下我们需…

掌握【Python异常处理】:打造健壮代码的现代编程指南

目录 ​编辑 1. 什么是异常? 知识点 示例 小李的理解 2. 常见的内置异常类型 知识点 示例 小李的理解 3. 异常机制的意义 知识点 示例 小李的理解 4. 如何处理异常 知识点 示例 小李的理解 5. 抛出异常 知识点 示例 小李的理解 6. Python内置…

linux学习week2+3

linux学习 九.linux磁盘分区、挂载 3.磁盘情况查询 命令:df -h 注意:使用率到80%以上就要清理了 查询指定目录的磁盘占用情况:du -d 目录 其它参数: -s:指定目录占用大小汇总 -h:带计量单位 -a&#xff…

直播平台集成美颜工具详解:视频美颜SDK开发指南

本篇文章,小编将详细介绍如何在直播平台中集成美颜工具,帮助开发者更好地理解视频美颜SDK的开发过程。 一、美颜工具的作用和原理 1.1 美颜工具的作用 美颜工具主要用于提升直播视频的画面质量,让主播和观众在镜头前看起来更加美观。这些功…

解决Windows server 2022环境下,远程桌面连接仅允许两个用户同时登录问题,亲测有效!

文章目录 问题描述解决服务器远程桌面限制:第一步:给服务器开启远程访问权限解决服务器远程桌面限制:第一种方案:临时开启多用户远程桌面限制(120天)解决服务器远程桌面限制:第二种方案&#xf…

视频图文理解关联技术与创业团队(二)

上一篇:google gemini1.5 flash视频图文理解能力初探(一)提到了gemini 1.5 flash 可以对视频进行理解以及分析,但是整体在检索任务上效果不佳。 这几天参加了人工智能大会 网上收集,看一看有相似能力的一些技术点、创…

越来越多用户和商家选择小程序商城的原因是什么?小程序商城怎么搭建?

得益于小程序的便捷性,越来越多的用户选择在小程序商城购物,越来越多的商家也开始搭建自己的小程序商城。背后原因是什么呢?小程序商城怎么搭建? 用户为何青睐小程序商城? 1、便捷性 小程序商城无需下载安装&#xff…

无线领夹麦克风哪个牌子好,领夹麦克风十大品牌推荐

​演讲、表演或录制视频时,高质量的无线麦克风能极大提升整体体验。它保证了声音的清晰度和真实感,让演讲者或表演者更自信舒适。基于市场研究和用户体验,我挑选了几款表现突出的无线领夹麦克风,均为我个人使用过并推荐的产品&…

复古也疯狂:诺基亚105新款,4MB内存竟能干这些大事

今天我带着一丝怀旧和一份惊喜,想和你们分享一款特别的产品——诺基亚105(2024)2G功能手机。在智能手机充斥的今天,这样一款功能手机似乎显得格外与众不同。 它不仅是对经典的一次致敬,更在细节上融入了现代的便利。让…

tauri + vue3 如何实现在一个页面上局部加载外部网页?

🏆本文收录于「Bug调优」专栏,主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&…

设计模式探索:建造者模式

1. 什么是建造者模式 建造者模式 (Builder Pattern),也被称为生成器模式,是一种创建型设计模式。 定义:将一个复杂对象的构建与表示分离,使得同样的构建过程可以创建不同的表示。 建造者模式要解决的问题: 建造者模…

Vue脚手架搭建及vue项目创建---大屏

灵感在于上数据可视化这门课程,需要做大屏系统。 下面是使用VS Code搭建vue脚手架并创建项目。 第一步 安装node.js和vscode node.js在官网下载后安装,安装后输入命令看是否安装好,若没安装好,自行去网上搜索怎么配置环境变量&a…

数据库SQL Server常用字符串函数

文章目录 字符串函数 字符串函数 CONCAT:拼接字符串 CONCAT(COLUMN1,_,COLUMN2) AS COLCONVERT:转换数据类型 CONVERT(data_type(length),data_to_be_converted,style)例如:CONVERT(VARCHAR(10),GETDATE(),110) SUBSTRING():从字符串中返回…

动手实操微软开源的GraphRAG

微软在今年4月份的时候提出了GraphRAG的概念,然后在上周开源了GraphRAG,Github链接见https://github.com/microsoft/graphrag,截止当前,已有6900Star。 安装教程 官方推荐使用Python3.10-3.12版本,我使用Python3.10版本安装时,在…