Haproxy搭建Web群集和脑裂的概念

news2024/9/20 12:40:56

目录

脑裂概念

脑裂如何生的:

解决方法

Haproxy概念

HAProxy的主要特性有:

HAProxy负载均衡策略非常多,常见的有如下8种:

CDN

Nginx

LVS

haproxy

haproxy服务器部署

关闭防火墙

编译安装 Haproxy

Haproxy服务器配置

添加haproxy 系统服务

节点服务器部署

测试 Web群集


脑裂概念

脑裂:指在一个高可用 (HA) 系统中,当联系着的两个节点断开联系时,本来为个整体的系统,分裂为两个独立的几点,这时我们两个节点开始争抢共享资源结果会导致系统混乱,数据损坏。

脑裂如何生的:

在某一次故障切换后,原来的master并没有真正的宕机,VIP还在mastrs上,这个时候BACKUP则已经抢占master地位,并也在本地配置了VIP

解决方法

网络层面:加一条链路本地通过脚本解决写一个 while 循环 每轮ping网关累计连续失败的次数,当连续失败的次数到达一定次数则运行systemctl stopkeepalived服务

Haproxy概念

HAProxy是可提供高可用性、负载均衡以及基于TCP和HTTP应用的代理,是免费、快速并且可靠的一种解决方案。HAProxy非常适用于并发大(并发达1w以上)web站点,这些站点通常又需要会话保持或七层处理。HAProxy的运行模式使得它可以很简单安全的整合至当前的架构中,同时可以保护web服务器不被暴露到网络上。 

HAProxy的主要特性有:

●可靠性和稳定性非常好,可以与硬件级的F5负载均衡设备相媲美; 

●最高可以同时维护40000-50000个并发连接,单位时间内处理的最大请求数为20000个,最大处理能力可达10Git/s; 

●支持多达8种负载均衡算法,同时也支持会话保持; 

●支持虚机主机功能,从而实现web负载均衡更加灵活; 

●支持连接拒绝、全透明代理等独特的功能; 

●拥有强大的ACL支持,用于访问控制; 

●其独特的弹性二叉树数据结构,使数据结构的复杂性上升到了0(1),即数据的查寻速度不会随着数据条目的增加而速度有所下降; 

●支持客户端的keepalive功能,减少客户端与haproxy的多次三次握手导致资源浪费,让多个请求在一个tcp连接中完成; 

●支持TCP加速,零复制功能,类似于mmap机制; 

●支持响应池(response buffering); 

●支持RDP协议; 

●基于源的粘性,类似nginx的ip_hash功能,把来自同一客户端的请求在一定时间内始终调度到上游的同一服务器; 

●更好统计数据接口,其web接口显示后端集群中各个服务器的接收、发送、拒绝、错误等数据的统计信息; 

●详细的健康状态检测,web接口中有关于对上游服务器的健康检测状态,并提供了一定的管理功能; 

●基于流量的健康评估机制; 

●基于http认证; 

●基于命令行的管理接口; 

●日志分析器,可对日志进行分析。

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请求;

CDN

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服务器部署

关闭防火墙

systemctl stop firewalld
setenforce 0

编译安装 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

Haproxy服务器配置

mkdir /etc/haproxy
cp examples/haproxy.cfg /etc/haproxy/
 
cd /etc/haproxy/
vim haproxy.cfg
global		#全局配置,主要用于定义全局参数,属于进程级的配置,通常和操作系统配置有关
--4~5行--修改,定义haproxy日志输出设置和日志级别,local0为日志设备,默认存放到系统日志
		log /dev/log   local0 info		#修改
        log /dev/log   local0 notice	#修改
        #log loghost    local0 info
        maxconn 4096			#最大连接数,需考虑ulimit -n限制,推荐使用10240
--8行--注释,chroot运行路径,为该服务自设置的根目录,一般需将此行注释掉
        #chroot /usr/share/haproxy
        uid 99					#用户UID
        gid 99					#用户GID
        daemon					#守护进程模式
		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				#负载均衡调度算法使用轮询算法roundrobin
        server inst1 192.168.10.16:80 check inter 2000 fall 3		#定义在线节点
        server inst2 192.168.10.17:80 check inter 2000 fall 3

添加haproxy 系统服务

cp /opt/haproxy-1.5.19/examples/haproxy.init /etc/init.d/haproxy
chmod +x haproxy
chkconfig --add /etc/init.d/haproxy
 
ln -s /usr/local/sbin/haproxy /usr/sbin/haproxy
service haproxy start	或	/etc/init.d/haproxy start

节点服务器部署

systemctl stop firewalld
setenforce 0
 
yum install -y pcre-devel zlib-devel gcc gcc-c++ make 
 
useradd -M -s /sbin/nologin nginx
 
cd /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 install
 
make && make install
 
--192.168.8.11---
echo "this is kgc web" > /usr/local/nginx/html/test.html
 
--192.168.8.13---
echo "this is benet web" > /usr/local/nginx/html/test.html
 
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
 
nginx      #启动nginx 服务

测试 Web群集

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

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

相关文章

Spring MVC教程

Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。 Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。 使用 Spring 可插入的 MVC 架构,从而在使用Spring进行WEB开发时,可以选择使用Spring的Spring MVC框架或集…

明明都是2000坐标的地形图,怎么位置就不一样呢?

前几天有一个同事在工作中遇到一个问题,核心说起来就是,甲方发来两个年份的同一个片区的地形图,并且言之凿凿都是2000坐标的,但是在一个CAD复制后,到另一个CAD中使用“粘贴到原坐标”,就是位置对不上。 以下使用测试数据还原一下情景。 地形图A,是一个高程点: 地形图…

【网络系统集成】Windows Server集群实验

1.实验名称 Windows Server集群实验 2.实验目的 通过使用Windows 2003进行实验,理解与掌握服务器技术与系统集成相关知识点。 3.实验内容 (1)在Vmware Workstation中安装Windows Server 2003 (2)在Windows Server 2008中完成DNS,WEB的配置

LinuxI2C应用编程——访问EEPROM

文章目录 介绍读芯片手册代码编译运行 阅读博文:LinuxI2C应用编程——I2C-Tools的使用 介绍 EEPROM (Electrically Erasable Programmable read only memory),指带电可擦可编程只读存储器。是一种掉电后数据不丢失的存储芯片。 读芯片手册 首先按如图…

SSMP整合案例(15) 解决分页中删除最后一页的最后一条数据,导致查询错位问题

上文 我们还是做了个比较重要的是 将我们的查询全部逻辑改为了分页查询 但是 目前 我们的删除和分页配合起来 它会有一点点问题 例如 这种情况 我们最后一页只有一条数据了 我们操作删除 将这条数据给他干掉 删除完之后 它会调分页查询 但我们当前页的条件还是之前的 例如 我…

【网络】UDP协议详解

目录 UDP的感性理解 UDP协议格式 UDP协议格式感性理解 UDP特点 UDP的缓冲区 UDP的感性理解 UDP的传输过程类似于寄信,假设你要写一封家书寄回家里:首先你要在信封上填写好寄件人和收件人的地址,其次在贴好邮票,最后将信件投放…

MySQL数据库 库表操作

1. (1) mysql> create database Market; 创建数据库 mysql> use Market 使用Market数据库(2) mysql> create table customers(-> c_num int(11) primary key auto_increment,-> c_name varchar(50),-> c_contact varchar(50),-> c_city varc…

ChatGPT炒股:从巨潮资讯网上批量下载特定主题的股票公告

巨潮资讯网是股票公告的指定披露渠道之一,上面有非常详细的A股股票公告内容。 现在,我们要获取2023-01-04~2023-07-04期间所有新三板公司中标题包含“2023年日常性关联交易”的公告。 首先从network中获取到真实网址:http://www.cninfo.com…

大一下学期期末考wp

【web】 1.sign 打开题目 发现有1000个页面 打开第9999个和第9998个页面,发现是utf-8编码 当再随机打开其他页面时,页面又出现了另外一种情况 于是我们猜测,flag是由utf-8编码的,编码被拆散了随机放在10000个页面中的几个页面中…

找不到msvcp140.dll解决方法有哪些?那个修复方法更简单

是使用Windows操作系统的计算机时,总是不可避免会遇到系统报错。像计算机提示找不到msvcp140.dll,msvcp140.dll是一个Windows操作系统中的动态链接库文件,它属于Microsoft Visual C Redistributable包的一部分。这个文件包含了一些供C程序使用…

计算机的大脑 CPU

晶体管 N型MOS管P型MOS管 算术逻辑单元 ALU 晶体管–>门电路–>加法器–>ALU 既可以做逻辑运算、也可以做逻辑运算、成为计算机CPU中非常核心的组件。 指令 一条指令只完成一个基本操作的精简指令集 RISC 、它们的指令长度基本上是固定的。比如 ARM一条指令可以…

【SLAM14讲】02 视觉SLAM基本架构

一、传感器 1.1 安装位置分类 根据安装位置分为两类: 携带于机器人本体 上的传感器,比如激光传感器、相机、轮式编码器、惯性测量单元(Inertial Measurement Unit, IMU)等等,它们测到的通常都是一些间接的物理量而不…

一键创建日期命名的txt文件(方便日报)

背景 刚工作,免不了写日报,写日计划的时候。为了方便,写了一个bat文件直接点击即可创建今天时间命名的txt文件 代码 win10我的笔记本 echo set tmp%date:~3,4%%date:~8,2%%date:~11,2% type nul > %tmp%.txtwindows 下创建文件就是 t…

排序算法性能分析

目录 实现插入排序、冒泡排序、选择排序、合并排序、快速排序算法(从小到大) ①插入排序 ②冒泡排序 ③选择排序 ⑥快速排序 五种排序 现在有10亿的数据(每个数据四个字节),请快速挑选出最大的十个数&#xff0…

红黑树与234树

红黑树 参考:宇文新粥:红黑树红黑树可视化 234树 这个树有三种节点,分别包含1/2/3个元素,下方可以有2/3/4个子节点理解234树的插入 红黑树与234树之间的关系 红黑树有几个特性,但如果从234树的角度理解红黑树&…

在微软十年了!

时光飞逝,光阴如梭。 2013 年的 7 月 8 号,我在隔壁的交大软院毕业后,正式入职紫竹微软。 至今,已是整整 10 年了。 记得当时的闵行回市区的交通还不是那么堵,坐 5点半的班车下班,S4中环一路走,…

【C++ OJ练习】4.字符串中的第一个唯一字符

1.题目链接 力扣 2.解题思路 利用计数排序的思想 映射进行计数 最后计数为1的那个字符就是唯一字符 从前往后遍历 可以得到 第一个唯一字符 3.代码 class Solution { public:int firstUniqChar(string s) {//使用映射的方式统计次数 计数排序思想int count[26] { 0 };fo…

机器视觉硬件选型-工业光源-环形光源

视觉人机器视觉-硬件发货前硬件确认效果 工业光源根据灯的几何形状可分为条形光源,分区光源,环形光源、圆顶(积分)光源、平面光源,同轴光源,方形光源,线扫光源,点光源,线光源等等。 …

在上海滩,听懂5G时代的浪奔浪流

几天前的“湾区升明月”上,赵雅芝与吕良伟合唱了一首《上海滩》。“浪奔,浪流”的歌词一出,无数记忆涌上了一代人的心头。 上海这座城市,始终代表着进取、创新、引领,代表着面向世界的中国形象。黄浦江的浪花&#xff…

【尚医通】vue3+ts前端项目开发笔记 2 —— 创建项目、封装网络请求、集成elment-plus 、重置样式、准备状态管理/路由 等开发前准备

尚医通开发记录(Vue3TypeScriptPiniaAxios) 一、接口地址 服务器地址:http://syt.atguigu.cn 医院接口:http://139.198.34.216:8201/swagger-ui.html 公共数据接口:http://139.198.34.216:8202/swagger-ui.html 会员接口:http://139.198.34…