haproxy 高可用

news2024/11/16 11:37:04

一 haproxy

 HAProxy简介

     HAProxy提供高可用、负载均衡以及基于TCP和HTTP的应用代理,适合处理高负载站点的七层数据请求。类似的代理服务可以屏蔽内部真实服务器,防止内部服务器遭受攻击。

   HAProxy特点和优点

   1.支持原声SSL,同时支持客户端和服务器的SSL.

   2.支持IPv6和UNIX套字节(sockets

   3.支持HTTP Keep-Alive

   4.支持HTTP/1.1压缩,节省宽带

   5.支持优化健康检测机制(SSL、scripted TCP、check agent...)

   6.支持7层负载均衡

   7.可靠性和稳定性非常好。

   8.并发连接40000-50000个,单位时间处理最大请求20000个,最大数据处理10Gbps.

   9.支持8种负载均衡算法,同时支持session保持。

   10.支持虚拟主机

   11.支持连接拒绝全透明代理

  12.拥有服务器状态监控页面

   13.支持ACL.

     HAProxy为了让同一客户端访问服务器可以保持会话。有三种解决方法:客户端IPCookie以及Session

   1.HAProxy通过客户端IP进行Hash计算并保存,以此确保当相同IP访问代理服务器可以转发给固定的真实服务器。

   2.HAProxy依靠真实服务器发送客户端的Cookie信息进行会话保持。

   3.HAProxy将保存真实服务器的Session以及服务器标识,实现会话保持。(HAProxy只要求后端服务器能够在网络联通,也没有像LVS那样繁琐的ARP配置)

   HAProxy的balance8种负载均衡算法:

   1.roundrobin : 基于权重轮循。

   2.static-rr : 基于权重轮循。静态算法,运行时改变无法生效

   3.source : 基于请求源IP的算法。对请求的源IP进行hash运算,然后将结果与后端服务器的权重总数想除后转发至某台匹配服务器。使同一IP客户端请求始终被转发到某特定的后端服务器。

   4.leastconn : 最小连接。(适合数据库负载均衡,不适合会话短的环境) 

   5.uri : 对部分或整体URI进行hash运算,再与服务器的总权重想除,最后转发到匹配后端。

   6.uri_param : 根据URL路径中参数进行转发,保证在后端服务器数量不变的情况下,同一用户请求分发到同一机器。

   7.hdr(<name>) : 根据http头转发,如果不存在http头。则使用简单轮循。

   HAProxy主要工作模式

   1.tcp模式:该模式下,在客户端和服务器之间将建立一个全双工的连接,且不会对7层的报文做任何处理的简单模式。此模式默认,通常用于SSL、SSH、SMTP应用。

   2.http模式(一般使用):该模式下,客户端请求在转发给后端服务器之前会被深度分析,所有不与RFC格式兼容的请求都会被拒绝。

   HAProxy架构图

五 使用keepalived+Haproxy主从配置来达到能够针对前段流量进行负载均衡到多台后端web1、web2、web3、img1、img2.但是由于haproxy会存在单点故障问题,因此使用keepalived来实现对Haproxy单点问题的高可用处理。

六 三大主流软件负载均衡器对比(LVS VS Nginx VS Haproxy)

衡量负载均衡器好坏的几个重要因素: 

1、会话率 :单位时间内的处理的请求数  

2、会话并发能力:并发处理能力  

3、数据率:处理数据能力  

经过官方测试统计,haproxy  单位时间处理的最大请求数为20000个,可以同时维护40000-50000个并发连接,最大数据处理能力为10Gbps。综合上述,haproxy是性能优越的负载均衡、反向代理服务器。

LVS
1、抗负载能力强。抗负载能力强、性能高,能达到F5硬件的60%;对内存和cpu资源消耗比较低
2、工作在网络4层,通过vrrp协议转发(仅作分发之用),具体的流量由linux内核处理,因此没有流量的产生。
2、稳定性、可靠性好,自身有完美的热备方案;(如:LVS+Keepalived)
3、应用范围比较广,可以对所有应用做负载均衡;
4、不支持正则处理,不能做动静分离。
5、支持负载均衡算法:rr(轮循)、wrr(带权轮循)、lc(最小连接)、wlc(权重最小连接)
6、配置 复杂,对网络依赖比较大,稳定性很高。

Ngnix

1、工作在网络的7层之上,可以针对http应用做一些分流的策略,比如针对域名、目录结构;

2、Nginx对网络的依赖比较小,理论上能ping通就就能进行负载功能;

3、Nginx安装和配置比较简单,测试起来比较方便;

4、也可以承担高的负载压力且稳定,一般能支撑超过1万次的并发;

5、对后端服务器的健康检查,只支持通过端口来检测,不支持通过url来检测。

6、Nginx对请求的异步处理可以帮助节点服务器减轻负载;

7、Nginx仅能支持http、https和Email协议,这样就在适用范围较小。

8、不支持Session的直接保持,但能通过ip_hash来解决。、对Big request header的支持不是很好,

9、支持负载均衡算法:Round-robin(轮循)、Weight-round-robin(带权轮循)、Ip-hash(Ip哈希)

10、Nginx还能做Web服务器即Cache功能。

HAProxy
1 支持两种代理模式:TCP(四层)和HTTP(七层),支持虚拟主机;
2 能够补充Nginx的一些缺点比如Session的保持,Cookie的引导等工作
3 支持url检测后端的服务器出问题的检测会有很好的帮助。
4 更多的负载均衡策略比如:动态加权轮循(Dynamic Round Robin),加权源地址哈希(Weighted Source Hash),加权URL哈希和加权参数哈希(Weighted Parameter Hash)已经实现
5 单纯从效率上来讲HAProxy更会比Nginx有更出色的负载均衡速度。
6 HAProxy可以对Mysql进行负载均衡,对后端的DB节点进行检测和负载均衡。
7 支持负载均衡算法:Round-robin(轮循)、Weight-round-robin(带权轮循)、source(原地址保持)、RI(请求URL)、rdp-cookie(根据cookie)
10 不能做Web服务器即Cache。

七 Haproxy的配置文件进行详解

八 实验拓扑图

1 准备五台虚拟机

2 配置ip

Client:192.168.1.1

HAproxy:192.168.1.2

Web1:192.168.1.3

Web2:192.168.1.4

Web3:192.168.1.5

3 下载软件

Client:#yum -y install elinks

HAproxy:#yum -y install haproxy

Web1/2/3:#yum -y install httpd

  配置主页文件:#vim /etc/www/html/index.html

4.编辑HAproxy配置文件

 #vim /etc/haproxy/haproxy.cfg

5.启动服务

#systemctl start haproxy

6.客户端测试

#elinks http:192.168.1.2(反复浏览,web1/2/3主页文件交替出现)

注:假若想访问监控界面:配置stats uri  /haproxy项,重启服务(在haproxy服务器上加一个网卡。改为nat模式,用真实机浏览器访问http://新加网卡的IP/haproxy)

九 keepalived+haproxy

 1.实验拓扑图

2.需要五台虚拟机

3.全部设置为nat模式

4.下载软件

主/备:yum -y install keepalived haproxy

  Wed1/2/3:yum install httpd(配置主页文件)

5编辑配置文件

 #vim /etc/keepalived/keepalived.conf

主:

备:

主/备:

6.在真实机用浏览器访问http://192.168.20.188,web1/2/3主页文件交替出现。(访问检测页面只需在IP地址后加/haproxy)

注:若主负载均衡器宕机,用浏览器依然可以看到web1/2/3主页交替出现。若其中一台web服务器宕机,依然可以看到web主页文件

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

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

相关文章

【Android 源码】Android源码下载指南

文章目录 前言安装Repo初始化Repo选择分支没有梯子替换为清华源 有梯子 下载源码下载开始参考 前言 这是关于Android源码下载的过程记录。 环境&#xff1a;Windows上通过VMware安装的Ubuntu系统 安装Repo 创建Repo文件目录 mkdir ~/bin PATH~/bin:$PATH下载Repo工具&#…

火哥Windows内核第五期

主要讲解windows的保护模式&#xff0c;系统调试&#xff0c;异常发现及处理等等。事件等待、异常、软件调试、内存管理、消息机制、调试器开发项目、内核工具开发项目&#xff0c;发展方向:CC驱动开发&#xff0c;软件逆向&#xff0c;破解&#xff0c;游戏保护&#xff0c;反…

huggingface的transformers训练bert

目录 理论 实践 理论 https://arxiv.org/abs/1810.04805 BERT&#xff08;Bidirectional Encoder Representations from Transformers&#xff09;是一种自然语言处理&#xff08;NLP&#xff09;模型&#xff0c;由Google在2018年提出。它是基于Transformer模型的预训练方法…

力扣HOT100 - 128. 最长连续序列

解题思路&#xff1a; 注意&#xff1a; 1.Set不能直接排序&#xff0c;必须要转换成ArrayList或者LinkedList后用Collections.sort()方法进行排序。 &#xff08;Queue也不能直接排序&#xff0c;排序方法同Set&#xff09; 2.连续的序列不能只找第一个&#xff0c;因为不…

dbscan算法实现鸢尾花聚类(python实现)

DBscan算法原理 : dbscan算法-CSDN博客 法一(调库) : 直接调库 : import numpy as np import matplotlib.pyplot as plt from sklearn import datasets from sklearn.cluster import DBSCAN from sklearn.decomposition import PCA from sklearn.discriminant_analysis …

【数据结构刷题专题】——二分查找

二分查找 二分查找模板题&#xff1a;704. 二分查找 二分查找前提&#xff1a; 有序数组数组中无重复元素 左闭右闭&#xff1a; class Solution { public:int search(vector<int>& nums, int target) {int left 0;int right nums.size() - 1;while (left <…

重新配置node.js,npm,环境变量

起因是检查最近收到的一些朋友分享给我的各种资料&#xff0c;什么前端&#xff0c;后端&#xff0c;java,go,python等语言&#xff0c;想着将一个模拟QQ音乐的一个源代码进行跑通&#xff0c;看看有什么特别之处。如下图 出现了node环境路径问题&#xff0c;参考链接 https:/…

回收站的数据删了可以找回来吗?方法已备好

在数字化时代&#xff0c;数据的安全性与恢复问题逐渐受到大家的关注。回收站&#xff0c;作为电脑中存储已删除文件的地方&#xff0c;常常被视为数据恢复的“救命稻草”。然而&#xff0c;当回收站中的数据也被删除时&#xff0c;许多人可能会感到无助和困惑。本文旨在探讨回…

nuclei使用方法

nuclei使用方法 查看帮助 nuclei -h 列出所有模板 nuclei -tl 查找某种cms的相关漏洞模板&#xff0c;wordpress为例 nuclei -tl -tc "contains(name,wordpress)"便会列出内容里含有wordpress关键字的漏洞检测模板 使用与某cms相关的所有漏洞模板进行扫描&#…

每日一题 --- 209. 长度最小的子数组[力扣][Go]

长度最小子数组 题目&#xff1a; 给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其总和大于等于 target 的长度最小的 连续 子数组 [numsl, numsl1, ..., numsr-1, numsr] &#xff0c;并返回其长度**。**如果不存在符合条件的子数组&#xff0c…

web学习笔记(四十三)ajax

目录 1.相关基础概念 1.1客户端与服务器 1.2URL地址 1.3 客户端和服务器端通信的过程 1.4 一个URL地址放入浏览器&#xff0c;到页面渲染发生了什么事情 1.5 数据 1.6资源的请求方式 2.Ajax 2.1什么是Ajax 2.2 jQuery 中的Ajax 2.2.1 $.get()的语法 2.2.2$.post()…

Linux:http协议初步认识

文章目录 OSI七层模型http协议域名路径信息请求和响应 编写一个httpserver OSI七层模型 在结束了前面对于序列化反序列化等内容的学习后&#xff0c;重新回到对于OSI模型的部分 如上所示的是对于OSI接口的示意图&#xff0c;在这当中可以看到会话层的概念&#xff0c;会话层的…

简介:KMeans聚类算法

在机器学习中&#xff0c;无监督学习一直是我们追求的方向&#xff0c;而其中的聚类算法更是发现隐藏数据结构与知识的有效手段。聚类是一种包括数据点分组的机器学习技术。给定一组数据点&#xff0c;我们可以用聚类算法将每个数据点分到特定的组中。 理论上&#xff0c;属于同…

SQL Server 2008R2 日志文件大小设置及查询

SQL Server 2008R2 建立数据库存在日志无限增长问题&#xff0c;造成磁盘内存不足。本文解决这个问题&#xff0c;如下&#xff1a; 1.设置日志文件的最大大小 USE master; GO ALTER DATABASE [D_total] MODIFY FILE (NAME D_total_log, -- 日志文件的逻辑名称MAXSIZE 200…

LeetCode Python - 69. x 的平方根

目录 题目描述解法运行结果 题目描述 给你一个非负整数 x &#xff0c;计算并返回 x 的 算术平方根 。 由于返回类型是整数&#xff0c;结果只保留 整数部分 &#xff0c;小数部分将被 舍去 。 注意&#xff1a;不允许使用任何内置指数函数和算符&#xff0c;例如 pow(x, 0.…

稀碎从零算法笔记Day21-LeetCode:单词规律

题型&#xff1a;哈希表、字符串 链接&#xff1a;290. 单词规律 - 力扣&#xff08;LeetCode&#xff09; 来源&#xff1a;LeetCode 题目描述 给定一种规律 pattern 和一个字符串 s &#xff0c;判断 s 是否遵循相同的规律。 这里的 遵循 指完全匹配&#xff0c;例如&am…

先进电机技术 —— 何为轴电压?

一、特定场景举例 长线驱动指的是在电动机与变频器之间存在较长的连接电缆&#xff0c;尤其是在大型工业应用中&#xff0c;电机可能远离变频器几十米甚至上百米。这种情况下&#xff0c;变频器通过长线向电动机传输功率时&#xff0c;可能会加剧电机轴电压和轴电流的产生&…

Flutter-仿携程首页类型切换

效果 唠叨 闲来无事&#xff0c;不小心下载了携程app&#xff0c;还幻想可以去旅游一番&#xff0c;奈何自己运气不好&#xff0c;自从高考时第一次吹空调导致自己拉肚子考试&#xff0c;物理&#xff0c;数学考了一半就交卷&#xff0c;英语2B铅笔除了问题&#xff0c;导致原…

ensp静态路由综合实验(一)

实验拓扑&#xff1a; 实验目的&#xff1a; 1、R6为ISP&#xff0c;接口IP地址均为公有地址&#xff0c;该设备只能配置IP地址&#xff0c;之后不能再对其进行任何配置&#xff1b; 2、R1-R5为局域网&#xff0c;私有IP地址192.168.1.0/24&#xff0c;请合理分配&#xff1b;…

【图解物联网】第7章 物联网与可穿戴设备

7.1 可穿戴设备的基础 顾名思义&#xff0c;可穿戴设备就是指穿戴在身上的设备&#xff0c;因此&#xff0c;比起单独使用前面说的那些设备&#xff0c;可穿戴设备能够令服务更加贴近人们的生活。如果你想率先实现物联网服务&#xff0c;那么就可以选择使用可穿戴设备。 …