【LVS】4、HAProxy搭建web集群
目前常见的Web集群调度器分为软件和硬件
软件通常使用开源的LVS、Haproxy、Nginx
LVS性能最好(基于内核转发),但是搭建相对复杂;Nginx的upstream模块支持群集功能,但是对群集节点健康检查功能不强,高并发性能没有 Haproxy好
硬件一般使用比较多的是F5(最多)、Array,也有很多人使用国内的一些产品,如梭子鱼、绿盟等
不在乎成本的公司会选择用硬件,更多的是采用软件
HAProxy介绍
LVS抗负载能力强,但不支持正则表达式、不能实现动静分离;大型网站,LVS实施配置复杂,维护成本相对较高;一般在上百台集群中使用
HAProxy是一款可提供高可用性和负载均衡,基于TCP(四层)和HTTP(七层)应用的代理的软件
适用于负载大的web站点,运行再硬件上,可以支持上万条并发连接的连接请求
HAProxy的主要特性
LVS在企业应用中抗负载能力强,但不支持正则表达式,不能实现动静分离;大型网站,配置复杂,维护成本高
HARoxy
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请求。
LVS、Nginx、HAProxy之间的区别
●LVS基于Linux操作系统内核实现软负载均衡,而HAProxy和Nginx是基于第三方应用实现的软负载均衡;
●LVS是可实现4层的IP负载均衡技术,无法实现基于目录、URL的转发。而HAProxy和Nginx都可以实现4层和7层技术,HAProxy可提供TCP和HTTP应用的负载均衡综合解决方案;
●LVS因为工作在ISO模型的第四层,其状态监测功能单一,而HAProxy在状态监测方面功能更丰富、强大,可支持端口、URL、脚本等多种状态检测方式;
●HAProxy功能强大,但整体性能低于4层模式的LVS负载均衡。
●Nginx主要用于Web服务器或缓存服务器。Nginx的upstream模块虽然也支持群集功能,但是对群集节点健康检查功能不强,性能没有Haproxy好。
nginx
① 支持正则
② 只支持基于端口的健康检查
③ 不支持session直接保持、但能通过ip_hash来解决
④ 对网络稳定性要求不高
⑤ 反向代理能力强
LVS
① 只能基于四层端口转发
② 尽在四层做分发作用 抗负载能力强
③ 应用范围广
haproxy
① 支持8中负载均衡策略
② 仅作负载均衡软件使用,在高并发情况下性能优于nginx
③ 支持URL检测 支持session保持
Haproxy搭建 Web 群集
Haproxy服务器:192.168.220.121
Nginx 服务器1:192.168.220.111
Nginx 服务器2:192.168.220.112
客户端:192.168.220.10
haproxy 服务器部署
1.关闭防火墙,将安装Haproxy所需软件包传到/opt目录下
systemctl stop firewalld
setenforce 0cd /opt
上传haproxy-1.5.19.tar.gz
2.编译安装 Haproxy
yum install -y pcre-devel bzip2-devel gcc gcc-c++ make
tar zxvf haproxy-1.5.19.tar.gz
cd haproxy-1.5.19/
make TARGET=linux2628 ARCH=x86_64
make install
---------------------参数说明-----------------------------------
TARGET=linux26 #内核版本,
#使用uname -r查看内核,如:2.6.18-371.el5,此时该参数用TARGET=linux26;kernel大于2.6.28的用TARGET=linux2628
ARCH=x86_64 #系统位数,64位系统
----------------------------------------------------------------------------------------------------------
3.Haproxy服务器配置
mkdir /etc/haproxy
cp examples/haproxy.cfg /etc/haproxy/cd /etc/haproxy/
vim haproxy.cfgglobal #全局配置,主要用于定义全局参数,属于进程级的配置,通常和操作系统配置有关
--4~5行--修改,定义haproxy日志输出设置和日志级别,local0为日志设备,默认存放到系统日志log /dev/log local0 info #修改log /dev/log local0 notice #修改#log loghost local0 infomaxconn 4096 #最大连接数,需考虑ulimit -n限制,推荐使用10240
--8行--注释,chroot运行路径,为该服务自设置的根目录,一般需将此行注释掉#chroot /usr/share/haproxyuid 99 #用户UIDgid 99 #用户GIDdaemon #守护进程模式nbproc 1 #添加,设置并发进程数,建议与当前服务器CPU核数相等或为其2倍defaults #配置默认参数,这些参数可以被用到Listen,frontend,backend组件 log global #引入global定义的日志格式mode http #模式为http(7层代理http,4层代理tcp)option httplog #日志类别为http日志格式option dontlognull #不记录健康检查日志信息retries 3 #检查节点服务器失败次数,连续达到三次失败,则认为节点不可用redispatch #当服务器负载很高时,自动结束当前队列处理比较久的连接maxconn 2000 #最大连接数,“defaults”中的值不能超过“global”段中的定义#contimeout 5000 #设置连接超时时间,默认单位是毫秒#clitimeout 50000 #设置客户端超时时间,默认单位是毫秒#srvtimeout 50000 #设置服务器超时时间,默认单位是毫秒timeout http-request 10s #默认http请求超时时间timeout queue 1m #默认队列超时时间timeout connect 10s #默认连接超时时间,新版本中替代contimeout,该参数向后兼容timeout client 1m #默认客户端超时时间,新版本中替代clitimeout,该参数向后兼容timeout server 1m #默认服务器超时时间,新版本中替代srvtimeout,该参数向后兼容timeout http-keep-alive 10s #默认持久连接超时时间timeout check 10s #设置心跳检查超时时间--删除下面所有listen项--,然后添加
listen webcluster 0.0.0.0:80 #haproxy实例状态监控部分配置,定义一个名为webcluster的应用option httpchk GET /test.html #检查服务器的test.html文件balance roundrobin #负载均衡调度算法使用轮询算法roundrobinserver inst1 192.168.10.16:80 check inter 2000 fall 3 #定义在线节点server inst2 192.168.10.17:80 check inter 2000 fall 3
---------------------参数说明-----------------------------------
balance roundrobin #负载均衡调度算法
#轮询算法:roundrobin;最小连接数算法:leastconn;来源访问调度算法:source,类似于nginx的ip_hash
check inter 2000 #表示启用对此后端服务器执行健康检查,设置健康状态检查的时间间隔,单位为毫秒连续三次检测不到心跳频率则认为该
fall 3 #表示节点失效
若节点配置后带有“backup”表示该节点只是个备份节点,仅在所有在线节点都失效该节点才启用。不携带“backup”,表示为主节点,和其它在线节点共同提供服务。
----------------------------------------------------------------------------------------------------------
4.添加haproxy 系统服务
cp /opt/haproxy-1.5.19/examples/haproxy.init /etc/init.d/haproxy
chmod +x haproxy
chkconfig --add /etc/init.d/haproxyln -s /usr/local/sbin/haproxy /usr/sbin/haproxy
service haproxy start 或 /etc/init.d/haproxy start
节点服务器部署
【安装 Nginx 服务】(192.168.220.111、192.168.220.112)
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
1、安装依赖包
yum -y install pcre-devel zlib-devel gcc gcc-c++ make
2、创建运行用户
useradd -M -s /sbin/nologin nginx
3、编译安装
cd /opt
tar zxvf nginx-1.22.0.tar.gz -C /opt/cd nginx-1.22.0/
./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module./configure --with-streammake -j 4 && make install
4、优化路径
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
5、添加 Nginx 系统服务
vim /lib/systemd/system/nginx.service
[Unit]
Description=nginx
After=network.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
6、赋权、启动Nginx服务
chmod 777 /lib/systemd/system/nginx.service
systemctl start nginx.service
systemctl enable nginx.service
--192.168.220.111--
echo "this is H+N web1" > /usr/local/nginx/html/test.html
--192.168.220.112--
echo "this is H+N web2" > /usr/local/nginx/html/test.html
测试 Web群集
在客户端使用浏览器打开
http://192.168.220.121/test.html
不断刷新浏览器测试负载均衡效果
相关文章:
【LVS】4、HAProxy搭建web集群
目前常见的Web集群调度器分为软件和硬件 软件通常使用开源的LVS、Haproxy、Nginx LVS性能最好(基于内核转发),但是搭建相对复杂;Nginx的upstream模块支持群集功能,但是对群集节点健康检查功能不强,高并发性…...
【应用层】网络基础 -- HTTP协议
再谈协议HTTP协议认识URLurlencode和urldecodeHTTP协议格式HTTP的方法HTTP的状态码HTTP常见HeaderHTTP周边会话保持 再谈协议 协议是一种 “约定”. socket api的接口,在读写数据时,都是按 “字符串” 的方式来发送接收的(tcp是以字节流的方式发送的&am…...
【线性DP】模型总结(terse版)
【线性DP】模型总结 最长上升子序列 DP法 dp[i]表示以i结尾的最长上升子序列的长度。 对于每个i,遍历j1~i-1,若a[j] < a[i], 则dp[i] max(dp[i], dp[j] 1); 二分法 可以优化时间复杂度。 dp[]数组用来存储当前最长上升子序列。 若dp[]数…...
conda 常用命令
conda 常用命令 一、创建环境二、删除环境三、环境重命名四 、查看环境列表五、进入某个虚拟环境六、退出当前环境七、查看当前虚拟环境下的所有安装包八、安装或卸载包(进入虚拟环境之后)九、分享虚拟环境十、源服务器管理十一、升级十二、卸载十三、卸载十四、pip…...
前端面试:【异步编程】Callback、Promise和Async/Await
嗨,亲爱的JavaScript探险家!在JavaScript开发的旅程中,你会经常遇到异步编程的需求。为了处理异步操作,JavaScript提供了多种机制,包括Callbacks、Promises和Async/Await。本文将深入介绍这些机制,让你能够…...
大数据(四):Pandas的基础应用详解
专栏介绍 结合自身经验和内部资料总结的Python教程,每天3-5章,最短1个月就能全方位的完成Python的学习并进行实战开发,学完了定能成为大佬!加油吧!卷起来! 全部文章请访问专栏:《Python全栈教…...
计算机网络第3章(数据链路层)
计算机网络第3章(数据链路层) 3.1 数据链路层概述3.1.1 概述3.1.2 数据链路层使用的信道3.1.3 三个重要问题 3.2 封装成帧3.2.1 介绍3.2.2 透明传输3.2.3 总结 3.3 差错检测3.3.1 介绍3.3.2 奇偶校验3.3.3 循环冗余校验CRC(Cyclic Redundancy Check)3.3.…...
stm32之4.时钟体系
3.时钟体系(给单片机提供一个非常稳定的频率信号) ①可以使用三种不同的时钟源来驱动系统时钟(SYSCLK),CPU运行的频率为168MHZ; HSI(RC振荡器时钟,也就是高速内部时钟,一般来说很少用,因为精度…...
RPC和HTTP协议
RPC 全称(Remote Procedure Call),它是一种针对跨进程或者跨网络节点的应用之间的远程过程调用协议。 它的核心目标是,让开发人员在进行远程方法调用的时候,就像调用本地方法一样,不需要额外为了完成这个交…...
BUGFix:onnx -> TensorRT转换过程失败
先附上相关的onnx2trt的部分代码: def onnx2trt(onnx_path):logger trt.Logger(trt.Logger.ERROR)builder trt.Builder(logger)network builder.create_network(1 << int(trt.NetworkDefinitionCreationFlag.EXPLICIT_BATCH))parser trt.OnnxParser(netw…...
FFMPEG小白常用命令行
序列帧转H264视频 ffmpeg -r 60 -f image2 -s 1920x1080 -i fram%d.jpg -vcodec libx264 -crf 25 -pix_fmt yuv420p test.mp4 -vcodec h264 .\ffmpeg -r 60 -f image2 -s 1920x1080 -i %04d.jpeg -vcodec h264 test.mp4 %04d 表示用零来填充直到长度为4,i.e 000…...
个性定制还是纯粹简约:探寻界面选择背后的心理宇宙
在数码世界中,我们的界面选择成为了一张架起的桥梁,连接着个性的渴望与效率的追求。当我们面对个性化定制界面和极简版原装界面,我们仿佛站在了一座分岔路口,左右各有一片令人心驰神往的风景。究竟是走向五光十色的个性世界&#…...
【Java 高阶】一文精通 Spring MVC - 转发重定向(四)
👉博主介绍: 博主从事应用安全和大数据领域,有8年研发经验,5年面试官经验,Java技术专家,WEB架构师,阿里云专家博主,华为云云享专家,51CTO 专家博主 ⛪️ 个人社区&#x…...
嵌入式Linux开发实操(十):ADC接口开发
#前言 ADC就是模数转换,可以用来接一些模拟量设备,所谓模拟量就是波形不是方波而是各种包络形状的波形的信号,比如电压、电流等电信号或压力、温度、湿度、位移、声音等非电信号,ADC就是将这些信号转换为数字方波信号,以便于信息传递的。 #ADC硬件设计 key按键连接了AD…...
精进语言模型:探索LLM Training微调与奖励模型技术的新途径
大语言模型训练(LLM Training) LLMs Trainer 是一个旨在帮助人们从零开始训练大模型的仓库,该仓库最早参考自 Open-Llama,并在其基础上进行扩充。 有关 LLM 训练流程的更多细节可以参考 【LLM】从零开始训练大模型。 使用仓库之…...
数据采集:selenium 提取 Cookie 自动登陆
写在前面 工作需要,简单整理博文内容涉及 通过 selenium 实现自动登陆理解不足小伙伴帮忙指正 对每个人而言,真正的职责只有一个:找到自我。然后在心中坚守其一生,全心全意,永不停息。所有其它的路都是不完整的&#x…...
[Go版]算法通关村第十三关黄金——数字数学问题之数论问题(最大公约数、素数、埃氏筛、丑数)
目录 题目:辗转相除法(求最大公约数)思路分析:辗转相除法(也叫欧几里得算法)gcd(a,b) gcd(b,a mod b)复杂度:时间复杂度 O ( n l o g ( m a x ) ) O(nlog(max)) O(nlog(max))、空间复杂度 O (…...
Qt双击某一文件通过自己实现的程序打开,并加载文件显示
双击启动 简述方法一方法二注意 简述 在Windows系统中,双击某类扩展名的文件,通过自己实现的程序打开文件,并正确加载及显示文件。有两种方式可以到达这个目的。 对于系统不知道的扩展名的文件,第一次打开时,需要自行…...
硬件产品的量产问题------硬件工程师在产线关注什么
前言: 产品开发测试无误,但量产缺遇到很多不良甚至DOA问题。 硬件开发过程中如何确保产线的治具、生产及硬件工程师在产线需要关注一些什么。 坚信:好的产品是要可以做出来的。 1、禁忌: 禁忌热插拔;禁忌测试不防呆…...
Vulnhub系列靶机--- Hackadmeic.RTB1
系列:Hackademic(此系列共2台) 难度:初级 信息收集 主机发现 netdiscover -r 192.168.80.0/24端口扫描 nmap -A -p- 192.168.80.143访问80端口 使用指纹识别插件查看是WordPress 根据首页显示的内容,点击target 点击…...
redis高级----------主从复制
redis的四种模式:单例模式;主从模式;哨兵模式,集群模式 一、主从模式 单例模式虽然操作简单,但是不具备高可用 缺点: 单点的宕机引来的服务的灾难、数据丢失单点服务器内存瓶颈,无法无限纵向扩…...
posgresql通过PL/pgSQL脚本统一修改某字段大小写
项目在做postgresql数据库适配时遇到了某些问题,需要统一将某个模式含id字段的全部表,将id字段由小写转换为大写,可以通过PL/pgSQL脚本实现。 先确保当前用户有足够的权限 DO $$ DECLARE current_table text;current_column text; BEGIN --…...
iPhone卫星通信SOS功能如何在灾难中拯救生命
iPhone上的卫星紧急求救信号功能在从毛伊岛野火中拯救一家人方面发挥了至关重要的作用。这是越来越多的事件的一部分,在这些事件中,iPhone正在帮助人们摆脱危及生命的情况。 卫星提供商国际通信卫星组织负责移动的高级副总裁Mark Rasmussen在接受Lifewir…...
NOIP真题答案 过河 数的划分
过河 题目描述 在河上有一座独木桥,一只青蛙想沿着独木桥从河的一侧跳到另一侧。在桥上有一些石子,青蛙很讨厌踩在这些石子上。由于桥的长度和青蛙一次跳过的距离都是正整数,我们可以把独木桥上青蛙可能到达的点看成数轴上的一串整点…...
图为科技-边缘计算在智慧医疗领域的作用
边缘计算在智慧医疗领域的作用 随着科技的进步,智慧医疗已成为医疗行业的重要发展趋势。边缘计算作为新兴技术,在智慧医疗领域发挥着越来越重要的作用。本文将介绍边缘计算在智慧医疗领域的应用及其优势,并探讨未来发展方向。 一、边缘计算…...
Linux配置nginx反向代理
在云服务器上部署高并发的服务,使用Nginx作为反向代理是一种常见的做法,可以实现流量分发、负载均衡,同时提升系统的可靠性和性能。 步骤概览: 安装Nginx: 确保服务器已安装Nginx。若未安装,可使用适用于你…...
随便记录记录
统一整理一下各种 pandas读csv import pandas as pd ## 默认会将第一行作为列 df pd.read_csv(path_to_your_file.csv) ## 传递 headerNone 参数来告诉 Pandas 不要将第一行 df pd.read_csv(path_to_your_file.csv, headerNone) ## 使用多种选项来处理数据,如指…...
UbuntuDDE 23.04发布,体验DeepinV23的一个新选择
UbuntuDDE 23.04发布,体验DeepinV23的一个新选择 昨晚网上搜索了一圈,无意看到邮箱一条新闻,UbuntuDDE 23.04发布了 因为前几天刚用虚拟机安装过,所以麻溜的从网站下载了ISO文件,安装上看看。本来没多想,…...
RabbitMQ 消费者
RabbitMQ的消费模式分两种:推模式和拉模式,推模式采用Basic.Consume进行消费,拉模式则是调用Basic.Get进行消费。 消费者通过订阅队列从RabbitMQ中获取消息进行消费,为避免消息丢失可采用消费确认机制 消费者 拉模式拉模式的实…...
软件测试面试真题 | 什么是PO设计模式?
面试官问:UI自动化测试中有使用过设计模式吗?了解什么是PO设计模式吗? 考察点 《page object 设计模式》:PageObject设计模式的设计思想、设计原则 《web自动化测试实战》:结合PageObject在真实项目中的实践与应用情…...
网站头部设计优化/seo和sem的关系
目录 1. UNIX的 5 种IO模型 1.1. 基本概念1.2. UNIX–5 种I/O模型 1.2.1. 介绍1.2.2. 对比 & 区别 2. 线程模型3. 套接字编程 3.1. socket的类型:3.2. 面向连接和无连接的套接字3.3. 网络模型 3.3.1. 网络通信中确认身份 4. 套接字编程 4.1. 基本概念和原理4.…...
仿历史网站模板下载/百度快速优化排名软件
Eclipse下开发Java程序,入门一好久不写blog,朋友要学Java,故以此平台交流下Java的学习过程中需要注意的问题。“好基友能做的就这么多了,你要加油啊!”哈哈,看到我的DNF图标没??首先…...
手机版传奇sf开服网站/私域流量和裂变营销
在最近配置好php的wamp服务后就想先找点源码学习一下,从各方面了解到搜索“织梦源码”能有很多可以直接配置和使用的模板,于是就有了下面这个坑。。 后来接触到了wordpress(织梦是dedecms,一种cms),才明白…...
深圳福田区天气/游戏优化
我们项目配置了AvailabilityFilteringRule作为所有Ribbon调用的负载均衡规则,它有那些坑呢(理解歧义和注意点)? 首先来看com.netflix.loadbalancer.AvailabilityFilteringRule.java源码,核心是choose方法: …...
展示产品的网站/网站关键词排名优化系统
最近在进行文件上传验证的过程中,遇到后端未验证的情况:例如我想验证文件上传的后缀对不对,而前端也对上传的文件做过验证,我需要模拟请求通过前端验证,然后在通过前端验证后拦截该请求,再次修改请求&#…...
有效的网站推广方案/百度竞价点击价格公式
IS-IS路由域内的所有路由器都会产生LSP,以下事件会触发一个新的LSP: 邻居Up或Down IS-IS相关接口Up或Down 引入的IP路由发生变化 区域间的IP路由发生变化 接口被赋了新的metric值 周期性更新 :LSP的刷新间隔为15分钟;老…...