Haproxy搭建 Web 群集实现负载均衡
目录
1 Haproxy
1.1 HAProxy的主要特性
1.2 HAProxy负载均衡策略
1.3 LVS、Nginx、HAproxy的区别
2 Haproxy搭建 Web 群集
2.1 haproxy 服务器部署
2.1.1 关闭防火墙
2.1.2 内核配置(实验环境可有可无)
2.1.3 安装 Haproxy
2.1.4 Haproxy服务器配置
2.1.4 添加为系统服务
2.2 节点服务器部署
2.3 测试 Web群集
1 Haproxy
HAProxy是可提供高可用性、负载均衡以及基于TCP和HTTP应用的代理,是免费、快速并且可靠的一种解决方案。HAProxy非常适用于并发大(并发达1w以上)web站点,这些站点通常又需要会话保持或七层处理。HAProxy的运行模式使得它可以很简单安全的整合至当前的架构中,同时可以保护web服务器不被暴露到网络上。
1.1 HAProxy的主要特性
●可靠性和稳定性非常好,可以与硬件级的F5负载均衡设备相媲美;
●最高可以同时维护40000-50000个并发连接,单位时间内处理的最大请求数为20000个,最大处理能力可达10Git/s;
●支持多达8种负载均衡算法
●支持Session会话保持,Cookie的引导;
●支持通过获取指定的url来检测后端服务器的状态;
●支持虚机主机功能,从而实现web负载均衡更加灵活;
●支持连接拒绝、全透明代理等独特的功能;
●拥有强大的ACL支持,用于访问控制;
●支持TCP和HTTP协议的负载均衡转发;
●支持客户端的keepalive功能,减少客户端与haproxy的多次三次握手导致资源浪费,让多个请求在一个tcp连接中完成
1.2 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请求。
1.3 LVS、Nginx、HAproxy的区别
●LVS基于Linux操作系统内核实现软负载均衡,而HAProxy和Nginx是基于第三方应用实现的软负载均衡;
●LVS是可实现4层的IP负载均衡技术,无法实现基于目录、URL的转发。而HAProxy和Nginx都可以实现4层和7层技术,HAProxy可提供TCP和HTTP应用的负载均衡综合解决方案;
●LVS因为工作在ISO模型的第四层,其状态监测功能单一,而HAProxy在状态监测方面功能更丰富、强大,可支持端口、URL、脚本等多种状态检测方式;
●HAProxy功能强大,单纯从效率上来讲HAProxy会比Nginx有更出色的负载均衡速度,在并发处理上也是优于Nginx的。但整体性能低于4层模式的LVS负载均衡;
●Nginx主要用于Web服务器或缓存服务器。Nginx的upstream模块虽然也支持群集功能,但是性能没有LVS和Haproxy好,对群集节点健康检查功能不强,只支持通过端口来检测,不支持通过URL来检测。
2 Haproxy搭建 Web 群集
Haproxy服务器:192.168.30.105
Nginx 服务器1:192.168.30.107
Nginx 服务器2:192.168.30.109
客户端:192.168.30.115
2.1 haproxy 服务器部署
2.1.1 关闭防火墙
systemctl stop firewalldsetenforce 0
2.1.2 内核配置(实验环境可有可无)
vim /etc/sysctl.confnet.ipv4.tcp_tw_reuse = 1#启用端口重用,允许一个服务器进程在进行完一个连接后立即再次使用相同的连接端口。
net.ipv4.ip_local_port_range = 1024 65023#本地端口范围。指定可用于本地TCP/UDP端口的端口号范围。
net.ipv4.tcp_max_syn_backlog = 10240#TCP半连接请求的最大长度,如果超过这个值,对方就会收到RST响应。
net.ipv4.tcp_max_tw_buckets = 400000#系统中同时保持TIME_WAIT状态的最大数量,一般设置为TCP建立连接次数的2倍。
net.ipv4.tcp_max_orphans = 60000#系统中允许存在的最大orphan连接数(没有对应的socket文件),这个数字越大,系统支持的TCP连接数也越多。
net.ipv4.tcp_synack_retries = 3#尝试发送SYN+ACK应答报文的最大次数。
net.core.somaxconn = 10000#服务器套接字排队长度的最大值
2.1.3 安装 Haproxy
//编译安装
yum install -y pcre-devel bzip2-devel gcc gcc-c++ maketar zxvf haproxy-2.2.11.tar.gz
cd haproxy-2.2.11/
make TARGET=linux31 PREFIX=/usr/local/haproxy
make install PREFIX=/usr/local/haproxy---------------------参数说明---------------------------------------------------------------------------
TARGET=linux26 #内核版本,#使用uname -r查看内核,如:2.6.18-371.el5,此时该参数用TARGET=linux26;kernel大于2.6.28的用TARGET=linux2628
安装依赖环境
编译安装HAproxy
2.1.4 Haproxy服务器配置
useradd -M -s /sbin/nologin haproxy
mkdir -p /usr/local/haproxy/conf
cd /usr/local/haproxy/conf
HAProxy 的配置文件共有 5 个域:
●global:用于配置全局参数
●default:用于配置所有frontend和backend的默认属性
●frontend:用于配置前端服务(即HAProxy自身提供的服务)实例
●backend:用于配置后端服务(即HAProxy后面接的服务)实例组●listen:frontend + backend的组合配置,可以理解成更简洁的配置方法,frontend域和backend域中所有的配置都可以配置在listen域下
global #全局配置,主要用于定义全局参数,属于进程级的配置,通常和操作系统配置有关log 127.0.0.1 local1 warningdaemon #让haproxy以守护进程的方式工作于后台option dontlognull #不在日志中记录空连接option abortonclose #当服务器负载很高的时候,自动结束掉当前队列处理比较久的链接maxconn 20000 #最大连接数,“defaults”中的值不能超过“global”段中的定义timeout queue 3s #默认客户端请求在队列中的最大时长timeout connect 1s #默认haproxy和服务端建立连接的最大时长,新版本中替代contimeout,该参数向后兼容frontend http-inbind *:80acl url_jsp path_end -i .jspuse_backend tomcat_server if url_jspdefault_backend nginx_serverbackend nginx_serverbalance roundrobinoption httpchk GET /test.htmlserver ngx01 192.168.30.107:80 check inter 2000 fall 3 rise 2server ngx02 192.168.30.109:80 check inter 2000 fall 3 rise 2backend tomcat_serverbalance roundrobinoption http-server-closecookie HA_STICKY_dy insert indirect nocacheserver tomcat01 192.168.30.107:8080 cookie tomcat01 check inter 2000 fall 3 rise 2server tomcat02 192.168.30.109:8080 cookie tomcat02 check inter 2000 fall 3 rise 2listen statsbind *:1080stats enablestats refresh 30sstats uri /statsstats realm HAProxy\ Statsstats auth admin:admin
2.1.4 添加为系统服务
添加执行的权限
chmod +x /etc/init.d/haproxy
将 /etc/init.d/haproxy 脚本添加到 chkconfig 管理工具中
chkconfig --add /etc/init.d/haproxy
chkconfig --level 35 haproxy on
chkconfig --level 35 haproxy on
service haproxy start
开启haproxy服务
!!!注意!!!
HAProxy默认使用端口80来监听HTTP流量
2.2 节点服务器部署
systemctl stop firewalld
setenforce 0yum install -y pcre-devel zlib-devel gcc gcc-c++ make useradd -M -s /sbin/nologin nginxcd /opt
tar zxvf nginx-1.12.0.tar.gz -C /opt/cd nginx-1.12.0/
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx && make && make installmake && make install--192.168.80.100---
echo "this is kgc web" > /usr/local/nginx/html/test.html--192.168.80.101---
echo "this is benet web" > /usr/local/nginx/html/test.htmlln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/nginx #启动nginx 服务
---Nginx 服务器1:192.168.30.107---
---Nginx 服务器1:192.168.30.109---
2.3 测试 Web群集
在客户端使用浏览器打开 http://192.168.30.105 ,不断刷新浏览器测试负载均衡效果
相关文章:
Haproxy搭建 Web 群集实现负载均衡
目录 1 Haproxy 1.1 HAProxy的主要特性 1.2 HAProxy负载均衡策略 1.3 LVS、Nginx、HAproxy的区别 2 Haproxy搭建 Web 群集 2.1 haproxy 服务器部署 2.1.1 关闭防火墙 2.1.2 内核配置(实验环境可有可无) 2.1.3 安装 Haproxy 2.1.4 Haproxy服务…...
Tessy 5.0.4
Tessy 5.0.4 Linux 2692407267qq.com,更多内容请见http://user.qzone.qq.com/2692407267/...
mybatis-plus根据指定条件批量更新
1.service实现类中 比如我这里只针对UserEntity,在UserServiceImpl下(该实现类是继承了mybatis-plus的ServiceImpl的)新增如下代码: public boolean updateBatchByQueryWrapper(Collection<UserEntity> entityList, Funct…...
虹科方案 | LIN/CAN总线汽车零部件测试方案
文章目录 摘要一、汽车零部件测试的重要性?二、虹科的测试仿真工具如何在汽车零部件测试展露头角?三、应用场景**应用场景1:方向盘开关的功能测试****应用场景2:各类型电机的控制测试****应用场景3:RGB氛围灯的功能测试…...
[solidity]合约调用合约
先写一个简单的合约将其部署,部署后的合约地址为:0xd9145CCE52D386f254917e481eB44e9943F39138 // SPDX-License-Identifier: MIT pragma solidity ^0.8.0;contract A{string myname;function setName(string memory _name) public{myname_name;}functi…...
Vulnhub系列靶机---JANGOW 1.0.1
文章目录 网卡配置信息收集主机发现端口扫描 漏洞利用反弹Shell提权 靶机文档:JANGOW 1.0.1 下载地址:Download (Mirror) 难易程度:. 网卡配置 水果味儿 信息收集 主机发现 端口扫描 访问80端口 点击site目录 点击页面上方的一个选项&…...
肖sir__项目环境之全流程__005
一、测试流程(h模型) 1、需求文档(产品) 需求文档(软件需求规格说明书srs) (1)如何分析需求 a、显示需求(主流程、功能,业务) b、隐性需求&#x…...
搜狗输入法下键翻页
搜狗输入法下键翻页 从官网下载 搜狗输入法智慧版关闭超级候选关闭候选...
C#多线程
一、多线程实现方式 1. 使⽤Thread类: System.Threading.Thread 类是C#中最基本的多线程编程⼯具。 2. 使⽤ThreadPool: 线程池是⼀个管理和重⽤线程的机制,它可以在应⽤程序中创建和使 ⽤多个线程,⽽⽆需显式地管理线程的…...
Unity 编辑器常用方法
unity编辑器开发 脚本注解1. RuntimeInitializeOnLoadMethod2. ColorUsage3. Header4. SerializeField5. HideInInspector6. Space7. Range8. Multiline9.[RequireComponent(typeof())]10.HelpURL 右键菜单注解1. CreateAssetMenu - 针对ScriptableObject 菜单栏注解1. MenuIt…...
21 mysql ref 查询
前言 这里主要是 探究一下 explain $sql 中各个 type 诸如 const, ref, range, index, all 的查询的影响, 以及一个初步的效率的判断 这里会调试源码来看一下 各个类型的查询 需要 lookUp 的记录 以及 相关的差异 此系列文章建议从 mysql const 查询 开始看 测试表结构…...
启山智软/一款包含主流商城类型的一款电商中台系统100%开源
文章目录 介绍一、Smart Shop JAVA 微服务电商中台优势二、电商中台包含那些主流商城模式1.S2B2C供应链商城2.B2B2C多商户商城3.B2C单商户商城4.O2O外卖配送商城5.社区团购商城 6.演示地址总结 介绍 想要了解代码规范,学习商城解决方案,点击下方官网链接…...
【C语言】指针的进阶(四)—— 企业笔试题解析
笔试题1: int main() {int a[5] { 1, 2, 3, 4, 5 };int* ptr (int*)(&a 1);printf("%d,%d", *(a 1), *(ptr - 1));return 0; } 【答案】在x86环境下运行 【解析】 &a是取出整个数组的地址,&a就表示整个数组,因此…...
博弈论——连续产量古诺模型
连续产量古诺模型 连续产量古诺模型是博弈论中非常经典的模型,以两厂商连续产量古诺博弈为例: 1、模型建立 Player:两个供应相同产品的厂商 产量:厂商1的产量为q1,厂商2的产量为q2,市场总供给为Qq1q2。…...
ROS2 驱动思岚G4雷达(ydlidar)- Rviz显示
记录G4雷达的配置 系统环境为:Ubuntu22.04 配置步骤 1、安装雷达SDK 2、构建 G4 雷达 ROS2 项目工程文件 3、使用Rviz可视化界面显示 1、安装雷达SDK 1.1 安装CMake YDLidar SDK需要CMake 2.8.2作为依赖项 Ubuntu 18.04或者Ubuntu 22.04 sudo apt install cmak…...
Spring Cloud Alibaba Sentinel流量防卫兵
文章目录 Spring Cloud Alibaba Sentinel流量防卫兵1. 分布式遇到的问题2.解决的方法 Sentinel: 分布式系统的流量防卫兵1. 简介和特折 Sentinel流量防卫兵的搭建1.引入依赖2.添加配置类3.运行类上添加SentinelResource,并配置blockHandler和fallback4. linux中放入…...
1.简单工厂模式
UML类图 代码 main.cpp #include <iostream> #include "OperationFactory.h" using namespace std;int main(void) {float num1;float num2;char operate;cin >> num1 >> num2 >> operate;Operation* oper OperationFactory::createOpera…...
GitHub Copilot Chat
9月21日,GitHub在官网宣布,所有个人开发者可以使用GitHub Copilot Chat。用户通过文本问答方式就能生成、检查、分析各种代码。 据悉,GitHub Copilot Chat是基于OpenAI的GPT-4模型打造而成,整体使用方法与ChatGPT类似。例如&…...
利用 QT 完成一个人脸识别系统,完成登录操作
1.配置文件 # Project created by QtCreator 2023-09-22T10:34:23 # #-------------------------------------------------QT core guigreaterThan(QT_MAJOR_VERSION, 4): QT widgetsTARGET project TEMPLATE appSOURCES main.cpp\widget.cppHEADERS widget.hFOR…...
MATLAB APP纯小白入门 两数相加
万事开头难,最怕第一次。使用matlab APP 实现两数求和,如下图所示,c a b,输入数字后,按 “” 就计算。 步骤 拖拽三个 Edit Field(Numeric) 过来,并且双击名字分别改为 a,b,c。注意修改名字后右边会有点变…...
ubuntu右上角的网络连接图标消失解决办法
ubuntu更新了几个文件后,我的ubuntu系统右上角的网络连接图标就消失了,然后怎么也找不到了,怎么办呢? 1、按快捷键ctrlaltt打开终端 2、按以下顺序输入如下的命令行 sudo service network-manager stop sudo rm /var/lib/Netw…...
conda创建虚拟环境安装aix360
目录 创建虚拟环境查看已有虚拟环境进入所创建的虚拟环境查看已安装的程序查看已安装的python模块配置镜像pipconda 安装aix360将环境添加到jupyter删除虚拟环境 创建虚拟环境 conda create -n aix360 python3.9查看已有虚拟环境 conda env list进入所创建的虚拟环境 activa…...
CentOS安装mariadb
1、 安装 [rootlocalhost ~]# yum install mariadb mariadb-server2、 启动并自启 [rootecs-3f21 ~]# systemctl enable mariadb –now3、 查看启动状态 [rootecs-3f21 ~]# systemctl status mariadb4、 初始化mariadb并设置root密码 [rootecs-3f21 ~]# mysql_secure_inst…...
FPGA——基础知识合集
文章目录 前言1、简述触发器与锁存器的区别2、简述 if-else 语句和 case 语句的区别3、相对 ARM、DSP 等处理器,谈谈 FPGA 具有哪些优势4、简述 Verilog 语句中阻塞赋值与非阻塞赋值的含义与区别,以及各自的适用的场景5、什么是同步电路,什么…...
【pytest】 标记冒烟用例 @pytest.mark.smoke
1. 使用 pytest.mark.smoke 标记用例 import pytest class Test_Smoke:def test_01(self):assert 112pytest.mark.smokedef test_02(self):assert 121pytest.mark.smokedef test_03(self):assert 1 2 3 2.配置文件pytest.ini [pytest] markers smoke 3. 运行指定标签 运…...
数据结构入门-14-排序
一、选择排序 1.1 选择排序思想 先把最小的元素拿出来 剩下的,再把最小的拿出来 剩下的,再把最小的拿出来 但是这样 空间复杂度是O(n) 优化一下,希望原地排序 1.1.2 选择原地排序 索引i指向0的位置 索引j指向i1的元素 j 后面的元素遍历&…...
Gin学习记录4——Controller和中间件
一. Controller 用不同的Controller可以实现业务的分类,不同类型的请求可以共用同一套中间件 1.1 单文件Controller 几乎等同于函数封装,直接将ctrl的代码写入到一个文件里然后调用: package adminimport ("net/http""git…...
FL Studio21.2中文版数字音乐制作软件
现在的FL也可以像splice一样啦,需要什么样的声音只需在fl里搜索,就会自动展示给你! FL Studio 简称FL,全称:Fruity Loops Studio,国人习惯叫它"水果"。软件现有版本是 FL Studio 21,已全面升级支…...
ELK 企业级日志分析系统 ELFK
目录 一、概述 二、组件介绍 2.1、ElasticSearch 2.2、Kiabana 2.3、Logstash 2.4、可以添加的其它组件:Filebeat 2.5、缓存/消息队列(redis、kafka、RabbitMQ等) 2.6、Fluentd 三、ELK工作原理 四、实例演示 1.ELK之 部署"E&q…...
IDEA中创建Java Web项目方法1
以下过程使用IntelliJ IDEA 2021.3 一、File-> New -> Project... 1. 项目类型中选择 Java Enterprise 项目 2. Name:填写自己的项目名称 3. Project template:选择项目的模板,Web application。支持JSP和Servlet的项目 4. Applica…...
做网站用什么云服务器吗/营销活动有哪些
文章目录简介均值滤波实现Sobel边缘检测实现福利简介 FPGA数字图像处理系列终于迎来了第三更了,马上要开始写毕业论文了,这次的教程写的比较潦草,不过代码和上位机都是完整的,重点参考了《基于FPGA的数字图像处理原理及应用》的第…...
电商网站开发主要技术问题/关于友情链接说法正确的是
当我们想要对应用程序的请求或响应进行一些预处理/后处理时,使用截取过滤器设计模式。 在将请求传递到实际目标应用程序之前,在请求上定义和应用过滤器。 过滤器可以进行请求的认证/授权/日志记录或跟踪,然后将请求传递给相应的处理程序。 以…...
有哪些类型的网站/个人网站首页设计
415. 字符串相加给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和。注意:num1和num2的长度都小于 5100.num1和num2都只包含数字0-9.num1和num2都不包含任何前导零。你不能使用任何內建BigInteger库, 也不能直接将输入的字符串转换为整…...
做棋盘游戏辅助的网站/网络营销的含义的理解
2019独角兽企业重金招聘Python工程师标准>>> 需求: 1.可以通过数据库配置cronExpression表达式,动态修改执行时间 2.不修改服务器环境支持集群架构:即保证集群环境下单实例运行 3.实现业务上的实时开启/停止控制功能 第一步&#…...
河池公司做网站/网站优化外包价格
一、Postman背景介绍1. Postman是一款功能强大的网页调试与发送网页HTTP请求的Chrome插件2. 可以在开发或者调试网络程序或者是网页B/S模式时来跟踪网页请求二、Postman的操作环境postman适用于不同的操作系统,Postman Mac、Windows X32、Windows X64、Linux系统&am…...
广告设计有哪些/苏州网站优化排名推广
目录 一.什么是红黑树? 二. 红黑树的基本概念 三.红黑树的插入 红黑树节点的构造 红黑树的插入 1.parent是黑色 2.parent是红色 四.右单旋 五. 左单旋 一.什么是红黑树? 在学红黑树之前,我们需要回顾二叉树的知识,二叉树…...