keepalive脑裂

keepalive脑裂

调度器的高可用

vip地址主备之间的切换,主在工作时,p地址只在主上,主停止工作,ip飘移到备服务器。

在主备的优先级不变的情况下,主恢复工作,vip会飘回到主服务器。

1、配优先级

2、配置vip和真实服务器

3、主备的id要一致。

4、主备的id要区分。

kedpalive是专门为lvs打造的,但是不是为Ivs专门服务的

keepalive也可以使用nginx,haproxy

192.168.39.30 客户端 test1
192.168.39.40 nginx1 keepalive
192.168.39.50 nginx2 keepalive
监控的脚本,来监控nginx1的状态
如果nginx1挂了,nginx1的keepalive
也要停止,实现vip的飘移。
nginx1
vim /usr/local/nginx/html/index.html
this is nginx1
cd /opt
vim check_nginx.sh
#!/bin/bash
/usr/bin/curl -I http://localhost &> /dev/null
if [ $? -ne 0 ]
thensystemctl stop keepalived
fivim /etc/keepalived/keepalive.conf
! Configuration File for keepalivedglobal_defs {notification_email {acassen@firewall.locfailover@firewall.locsysadmin@firewall.loc}notification_email_from Alexandre.Cassen@firewall.locsmtp_server 127.0.0.1smtp_connect_timeout 30router_id LVS_01vrrp_skip_check_adv_addrvrrp_strictvrrp_garp_interval 0vrrp_gna_interval 0vrrp_iptables
}
vrrp_script check_nginx {script "/opt/check_nginx.sh"#调用脚本内容,检测nginx状态interval 5#检测的间隔时间是5秒
}
vrrp_instance VI_1 {state MASTERinterface ens33virtual_router_id 51priority 120advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.39.100}track_script {check_nginx}
}
systemctl restart nginx
systemctl restart keepalivenginx2
vim /usr/local/nginx/html/index.html
this is nginx2scp root@192.168.39.40:/etc/keepalived/keepalive.con /etc/keepalivedvim /etc/keepalived/keepalive.conf
修改level等级,和优先级100
systemctl restart nginx
systemctl restart keepalive客户机中
curl 192.168.39.100在nginx1中
ip addr
#查看是否有vip地址192.168.39.100
关闭nginx和keepalive,到nginx2中ip addr查看vip地址是否飘过来
在nginx2中
关闭nginx和keepalive,到nginx1中ip addr查看vip地址是否飘过来

脑裂是什么

HA 高可用架构中的一个特殊现象,只要使用vip地址代理的冗余模式的高可用,都有可能出现脑裂的问题

主和备同时都有vip地址

主和备无法确定各自的身份,同时出现了vip地址,两边都起来了,但是两边都无法使用

原因

1、keepalive的配置文件问题

2、心跳线(网线),断了,老化

3、网卡出问题(硬件),ip地址配置冲突

4、防火墙的策略,iptables的策略,屏蔽了组播的地址广播。屏蔽了vrrp协议的报文

5、两台服务器的时间不同步也可能导致

6、其他的服务配置对心跳线的服务进行干扰

怎么解决

1、查看配置文件中主备名称是否更改,level等级是否更改,优先级是否更改,网卡是否一致

2、更换心跳线,定期检查心跳线

3、更换网卡,查看IP地址是否重复(ifconfig)

4、关闭防火墙,iptables表中,将屏蔽了报文进出的策略关闭,

5、查看服务器的时间是否一致,将两台服务器的时间同步

6、给服务做隔离,配置多个心跳线路或使用独立的网络接口,以减少单一链路问题对整体健康检测的影响。为不同的服务分配不同的资源,以防止某个服务占用过多资源影响心跳检测。使用可靠的集群管理工具

nginx lvs lvs+keepalive keepalive单独配置

web集群

Haproxy负载均衡:

nginx 四层转发,七层代理

Ivs 四层转发 内核转发 用户态

Haproxy 四层转发,七层转发

haproxy的作用和使用场景

1、场景 用于高并发的web,可以支持一万个以上的并发请求,高性能的tcp和http的负载均衡器

工作原理:

提供一个代理地址,访问集群

2、作用:

1、进行四层和七层转发

2、支持https

3、haproxy本身不自带缓存功能,请求当中添加cookie使用缓存

4、支持主备切换(keepalive)

3、特点

可靠性高,稳定性好

可以同时维护40000-50000个并发,单位时间内可以处理的最大请求数20000个(3秒钟)

支持负载均衡算法,虽然不带缓存,但是可以支持会话保持

rr

wrr

lestconn

haproxy负载均衡(高可用)
test1 192.168.39.30
nginx1 192.168.39.40
nginx2 192.168.39.50
关闭所有的防火墙nginx1和nginx2
先配置index.html网页test1
安装haproxy的环境
yum install -y pcre-devel bzip2-devel gcc gcc-c++ make
cd /opt
#将haproxy安装包拖进来
tar -xf haproxy-1.5.19.tar.gz
cd haproxy-1.5.19/
uname -r
#查看内核
make TARGET=linux2628 ARCH=x86_64
#target使用的版本要大于linux.2.60以上的版本
make install
mkdir /etc/haproxy
cd examples/
cp haproxy.cfg /etc/haproxy
cd /etc/haproxy/
vim haproxy.cfg
cd /opt/haproxy-1.5.19/examples/
cp haproxy.init /etc/init.d/haproxy
cd /etc/init.d/
chmod 777 /etc/init.d haproxy
chkconfig --add /etc/init.d/haproxy
cd /usr/local/sbin
ln -s /usr/local/sbin/haproxy /usr/sbin/
systemctl restart haproxy
客户机上 curl 192.168.39.30
vim haproxy.cfg
# this config needs haproxy-1.1.28 or haproxy-1.2.1globallog /dev/log 	local0  infolog /dev/log	local1 notice#log loghost	local0 infomaxconn 4096
# 最大连接数,推荐使用1024#chroot /usr/share/haproxyuid 99gid 99daemonnbproc 6#相当于haproxy的并发的线程数,设置的数量最好是CPU的两倍或保持一致#debug#quietdefaults
#默认参数配置,连接配置,监听配置以及代理配置log	globalmode	httpoption	httplogoption	dontlognullretries	3#检查节点服务器三次,连续三次失败,就认为节点服务器不可用redispatch#服务器负载很高时,自动结束当前结束当前队列处理比较久的连接maxconn	2000#最大连接数,这个数值可以和global中的maxconn保持一致也可以比他小,但是不能超过他
#	contimeout	5000
#	clitimeout	50000
#	srvtimeout	50000timeout http-request 10s#http请求的默认超时时间timeout queue 1m #在队列当中请求的超时时间timeout connect 10s#连接超时时间timeout client 1m#客户端连接超时时间timeout server 1m#服务端的超时时间timeout http-keep-alive 10s#默认长连接的超时时间timeout check 10s#检查后端服务器的超时时间#转发请求的设置,既可以是四层也可以是七层 
#七层配置listen	xy102   0.0.0.0:80option httpchk GET /index.html#设置转发请求的内容balance	static-rr
#默认轮询算法server	rs01 192.168.39.40  check inter 2000  fall 3 weight 2server	rs02 192.168.39.50  check inter 2000  fall 3 weight 3
#server指定真是服务器  
#rs01 自定义后台服务器的名称  
#check intern 2000  启动对后端服务器进行检查,检查的间隔2000毫秒  
#fall 3 连续三次检测不到就是失败#四层转发:
frontend test
bind *:80
mode tcp
default_backend testbackand test
mode tcp
balance roundrobin
server sever1 192.168.39.40:80 check inter 2000  fall 3 weight 2
server sever2 192.168.39.50:80 check inter 2000  fall 3 weight 2

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

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

相关文章

51单片机-第三节-LCD1602调试工具,矩阵键盘

一、LCD调试工具函数: 使用: 所有函数,前两个参数,均为指定显示位置。 四个参数的,第四个参数,为保留位数,少的保留后面(123,2 -> 23),多的前面补零。 …

Web开发 —— 放大镜效果(HTML、CSS、JavaScript)

目录 一、需求描述 二、实现效果 三、完整代码 四、实现过程 1、HTML 页面结构 2、CSS 元素样式 3、JavaScript动态控制 (1)获取元素 (2)控制大图和遮罩层的显隐性 (3)遮罩层跟随鼠标移动 &…

k8s核心操作_k8s中的存储抽象_基本概念与NFS搭建_Deployment使用NFS进行挂载---分布式云原生部署架构搭建028

然后我们继续开始看 如果我们使用容器部署,比如我们有三个节点,一个是master,一个node1 一个是node2 那么pod 中我们可以看到,容器中的 /data 等各个目录都映射了出来了,但是 如果比如上面红色的部分,有个pod,原来在node2上,最右边那个,但是这个pod宕机了 那么,k8s会在node…

永磁同步电机谐波抑制算法(7)——基于自适应陷波(adaptive notch filter,ANF)的精确谐波电流抑制策略

1.前言 1.1经典谐波抑制策略存在的问题 在之前的谐波抑制专题中,主要介绍了两种谐波抑制策略——基于多同步旋转坐标系的谐波抑制策略以及基于比例积分谐振PIR调节器的谐波抑制策略,同时还介绍了这两种策略的改进办法,进而使得这两种策略在…

Go:基本变量与数据类型

目录 前言 前期准备 Hello World! 一、基本变量 1.1 声明变量 1.2 初始化变量 1.3 变量声明到初始化的过程 1.4 变量值交换 1.5 匿名变量 1.6 变量的作用域 二、数据类型 1.1 整型 1.2 浮点型 1.3 字符串 1.4 布尔类型 1.5 数据类型判断 1.6 数据类型转换 1.…

NewStarCTF 2023 week5--web

目录 Unserialize Again 法一:(非预期) 法二: Final Yes Pickle pppython? 4-复盘 Unserialize Again f12告诉了我们cookie, 查看一下,可以发现 pairing.php <?php highlight_file(__FILE__); error_reporting(0); class story{private $useradmin;public $p…

Centos7 新增yum源

背景&#xff1a;原来的yum源&#xff0c;无法下载yum包了。新增一个阿里云的&#xff08;网易163的源失效了&#xff0c;无法使用&#xff09; Could not retrieve mirrorlist http://mirrorlist.centos.org/?release7&archx86_64&repoos&infrastock error was …

three.js官方案例webgpu_reflection.html学习记录

目录 ​1 判断浏览器是否支持 2 THREE.DirectionalLight 2.1DirectionalLightShadow 3 Texture 3.1 .wrapS 3.2 .wrapT 3.3 .colorSpace 4 创建地面 5 WebGPURenderer 6 OrbitControls 控制器 7 屏幕后处理 import * as THREE from three;import { MeshPhongNodeMa…

Spring Boot集成Atomix快速入门Demo

1.什么是Atomix&#xff1f; Atomix是一个能用的Java框架&#xff0c;用来构建高可用的分布式系统。它是基于RAFT协议的实现&#xff0c;为用户提供了各种原子数据结构&#xff0c;比如map/set/integer等&#xff0c;这些数据结构都可以在整个集群中共享并保证一致性&#xff…

简析“请求头”——可以用“头部字典”按需定制请求头

请求头是HTTP请求的重要部分&#xff0c;可以用“头部字典”按需定制请求头。 (笔记模板由python脚本于2024年07月12日 19:28:44创建&#xff0c;本篇笔记适合喜欢钻研web知识点的coder翻阅) 【学习的细节是欢悦的历程】 Python 官网&#xff1a;https://www.python.org/ Free…

RSA算法(C++)

RSA加解密过程 RSA为非对称加密算法&#xff0c;由一对公钥和一对私钥构成&#xff0c;私钥加密公钥解密&#xff0c;公钥加密私钥解密 如下图,D为私密的&#xff0c;假设传输英文字母&#xff0c;我们给英文字母编号A1,B2,C3… RSA加解密过程 两对密钥产生方法如下 C Op…

【RHCE】基于密钥的身份验证(Win-Linux)

目的&#xff1a;要提⾼系统安全性&#xff0c;通过在 OpenSSH 服务器上禁⽤密码⾝份验证来强制进⾏基于密钥的⾝份验证。 1、一台虚拟机无需密码连接另一台虚拟机 .ssh目录 > 保存了ssh相关的key和一些记录文件 &#xff08;1&#xff09;生成密钥对 使⽤这个流程在本地…

day19打卡

面试又一次失败&#xff0c;需要自我治愈一下&#xff0c;屡战屡败、屡败屡战....... 501.二叉搜索树中的众数 这题自己做的时候&#xff0c;出现了几个遗漏的思路&#xff1a;1、使用迭代法的时候&#xff0c;判断当前节点和pre节点是否相同&#xff0c;需要push的是pre节点 …

U盘打不开的终极解决方案:原因剖析、恢复策略与预防之道

U盘困境&#xff1a;打不开的焦虑与应对 在数字化时代&#xff0c;U盘作为数据交换与存储的重要工具&#xff0c;几乎成为了每个人工作、学习和生活中的必需品。然而&#xff0c;当您满怀期待地将U盘插入电脑&#xff0c;却遭遇“无法识别”、“无法访问”等提示&#xff0c;U…

【人工智能】Transformers之Pipeline(一):音频分类(audio-classification)

​​​​​​​ 目录 一、引言 二、音频分类&#xff08;audio-classification&#xff09; 2.1 概述 2.2 技术原理 2.2.1 Wav2vec 2.0模型 2.2.1 HuBERT模型 2.3 pipeline参数 2.3.1 pipeline对象实例化参数 2.3.2 pipeline对象使用参数 2.4 pipeline实战 2.4.1 …

【Qt 基础】Qt Creator 的初步使用、创建项目的过程

文章目录 1. Qt SDK 中工具程序的介绍2. 创建第一个 Qt 项目的前置步骤 1. Qt SDK 中工具程序的介绍 下载之后会出现下面几个程序&#xff1a; Assistant 表示 Qt 自带的离线官方文档&#xff1b; Designer &#xff1a;Qt设计师&#xff0c;图形化的设计界面的工具&#xf…

C++程序进阶学习

目录 引言 C内存分区 一、内存分区模型 二、 程序运行前 三、程序执行后 C引用 引用的语法 作用 本质 优点 C封装 C对象特性 C对象模型和this指针 C友元 C运算符重载 C继承 C多态 C文件 引言 看过我博客的朋友可能都了解这篇文章内容了&#xff0c;这篇博…

请使用C语言编写一个简单的MFC应用程序,实现一个窗口并在其中添加一些控件。

以下是一个简单的使用C编写的MFC应用程序示例&#xff0c;可以在其中添加一些控件。请使用Visual Studio等C开发工具打开并编译运行。 #include <afxwin.h>class CMyApp : public CWinApp { public:virtual BOOL InitInstance(); };class CMainWindow : public CFrameWn…

算术运算符. 二

# 表达式 # 操作数和运算符组成 比如 11 # 作用&#xff1a;表达式可以求值&#xff0c;也可以给变量赋值。 # Python算术运算符&#xff1a; # - * / % //&#xff08;整除:向下取整&#xff09; ** print(10 4) # 14 print(10 - 4) # 6 print(10 * 4) # 40 …

【PLC】基本概念

1、程序页 1.1 定义 PLC程序页是PLC程序中用于组织、编辑和显示各个程序段&#xff08;如主程序、子程序、中断程序等&#xff09;的独立区域。即&#xff1a;在程序编辑器窗口中&#xff0c;为不同的程序组织单元&#xff08;POU&#xff09;提供的独立页面或区域。 每个程序…