Haproxy介绍及学习

ops/2025/2/5 0:43:47/

一、负载均衡(load balance):

        1.一种服务基于硬件设备实现的高可用反向代理技术,将特定的业务分担给指定的一个或者多个后端特定的服务器,提高了业务的并发处理能力保证业务的高可用并方便对业务后期的水平动态扩展性

        2.使用负载均衡的原因:

               web服务器的动态水平扩展对用户无感知

               增加业务并发访问及处理能力进而解决了单服务器的瓶颈问题

               节约公网ip地址

                隐藏内部服务器ip

                配置简单

                支持四层和七层支持动态下线主机  

        3.四层负载均衡

                通过ip+port决定负载均衡的去向且对流量请求进行nat处理转发到后台服务器

                记录tcp、udp流量分别是由哪台服务器处理后续该请求连接的流量都通过该服务器处理

                支持四层的软件:

                        lvs:重量级的四层负载均衡器

                        nginx:轻量级的四层负载均衡器

                        haproxy:模拟四层转发

        4.七层负载均衡

                通过url或主机ip进行流量识别,根据应用层信息进行解析决定是否需要进行负载均衡

                代理后台服务器与客户端建立连接

                支持七层代理的软件:

                        nginx:基于http协议

                        haproxy:七层代理,会话保持

        5.四层和七层的区别

                它们主要是依据四层或七层的信息来决定怎样转发流量

                四层负载均衡是通过发布三层的ip地址然后加四层端口号来决定哪些流量做负载均衡,对需要处理的流量进行nat处理转发到后台服务器

                七层负载均衡在四层的基础上考虑应用层,四层无需解析报文消息内容七层可以支持解析应用层保温消息内容

                四层负载均衡类似于路由器七层类似于代理服务器

二、haproxy 简介

        1.haproxy是法国开发者威利塔罗在2000年使用c语言开发的支持高并发、高性能的tcp和http负载均衡器。支持cookie的持久性,自动故障切换支持正则表达式和web状态统计

        2.haproxy的安装和服务信息

                环境:客户端        eth0:172.25.254.10

                            haproxy        eth0:172.25.254.100,eth1:192.168.0.10

                            rs1                eth0:192.168.0.101

                            rs2                eth0:192.168.0.102

                软件安装:                  

                基本配置信息:其配置文件为 /etc/haproxy/haproxy.cfg,该配置文件由两大部分组成:

                        global:全局配置段

                                进程及安全配置相关参数

                                性能调整相关参数

                                debug参数

                        proxies:代理配置参段

                                defaults:为frontend,backend,listen提供默认配置

                                frontend:前端,相当于nginx中的server{}

                                backend:后端,相当于nginx中的upstream{}

                                listen:同时拥有前端和后端配置

                global配置:

                        chroot:锁定运行目录        chroot        /var/lib/haproxy

                        deamon:以守护进程运行

                        user,group,uid,gid:运行haproxy的用户身份

                        

                        nbproc  N:        开启的haproxy worker进程数,默认进程数是1个

                        nbthread 1:        指定haproxy进程数开启的线程数,默认为每个进程一个线程

                        

                        cpu-map 1 0:        绑定haproxy worker 进程到指定的cpu,将1个worker进程绑定到0号cpu

                        cpu-map 2 1:        绑定haproxy worker进程到指定cpu,将第二个work进程绑定到1号cpu

                        maxconn  N:        每个haproxy进程的最大并发连接数

                        pidfile:        指定pid文件路径

                        log 127.0.0.1 local2 info:        定义全局的syslog服务器

                        listen  stats

                                mode  http

                                bind    0.0.0.0:8888

                                stats    enable

                                 log        global

                                stats      uri   /haproxy-status

                                stats      auth  test:test

                proxies配置:

                        frontend        前端servername,类似于nginx的虚拟主机server和lvs服务集群

                        frontend  xiao-webserver-80

                                bind  172.25.254.100:80

                                mode  http

                                use_backend  xiao-webserver-80-rs        调用backend的名称

                        backend        后端服务器组,等于nginx的upstream和lvs中的rs服务器

                         定义一组后端服务器,backend服务器将f被rontend进行调用,其名称必须唯一,且必须在listen或fronted中事先定义才可以使用否则服务无法启动

                        backend  xiao-webserver-80-rs

                                mode  http

                                server  web1  192.168.0.101:80  check  inter  3s  fall  3  rise  5

                                server   web2  192.168.0.102:80  check  inter  3s  fall  3  rise  5

                

                        listen  webserver_80

                                bind  172.25.254.100:80

                                mode  forwardfor

                                server  webserver1  192.168.0.101:80  check  inter  3s  fall  3  rise  5

                                server  webserver2  192.168.0.102:80  check  inter  3s  fall  3  rise  5

                

                3.socat工具

                        对服务器动态权重和其他状态可以利用socat工具进行调整,其特点是在两个数据流之间建立双向通道。


http://www.ppmy.cn/ops/155719.html

相关文章

【cran Archive R包的安装方式】

cran Archive R包的安装方式 添加链接描述 1.包被cran移除 2.包要求的R语言版本与你电脑上的版本不相符 ad archive包的网址或者是下载到工作目录下,ad等于文件名 install,packages(ad repos NULL)

Clojure语言的文件操作

Clojure语言的文件操作 Clojure是一种现代的函数式编程语言,运行于Java虚拟机(JVM)之上,使得它可以生成高效的字节码并可以与Java类库无缝集成。在Clojure中,文件操作是一个常见的需求,不论是在数据处理、…

git基础使用--1--版本控制的基本概念

文章目录 git基础使用--1--版本控制的基本概念1.版本控制的需求背景,即为啥需要版本控制2. 集中式版本控制SVN3. 分布式版本控制 Git4. SVN和Git的比较 git基础使用–1–版本控制的基本概念 1.版本控制的需求背景,即为啥需要版本控制 先说啥叫版本&…

关于贪心学习的文笔记录

贪心,顾名思义就是越贪越好,越多越有易,他给我的感觉是,通常是求最大或最小问题,相比于动态规划贪心让人更加琢磨不透,不易看出方法,为此在这记录我所见过的题型和思维方法,以便回头…

BUUCTF_[安洵杯 2019]easy_web(preg_match绕过/MD5强碰撞绕过/代码审计)

打开靶场,出现下面的静态html页面,也没有找到什么有价值的信息。 查看页面源代码 在url里发现了img传参还有cmd 求img参数 这里先从img传参入手,这里我发现img传参好像是base64的样子 进行解码,解码之后还像是base64的样子再次进…

虚幻基础16:locomotion direction

locomotion locomotion:角色运动系统的总称:包含移动、奔跑、跳跃、转向等。 locomotion direction 玩家输入 玩家输入:通常代表玩家想要的移动方向。 direction 可以计算当前朝向与移动方向的Δ。从而实现朝向与移动(玩家输入)方向的分…

谈谈你所了解的AR技术吧!

深入探讨 AR 技术的原理与应用 在科技飞速发展的今天,AR(增强现实)技术已经悄然改变了我们与周围世界互动的方式。你是否曾想象过如何能够通过手机屏幕与虚拟物体进行实时互动?在这篇文章中,我们将深入探讨AR技术的原…

Go 中 defer 的机制

文章目录 Go 语言中 defer 的底层机制与实战解析一、defer 的执行顺序:后进先出(LIFO)示例 :多个 defer 的执行顺序 二、defer 的参数预计算:值拷贝的陷阱示例 :参数预计算的影响 三、defer 与闭包&#xf…