当前位置: 首页 > news >正文

Lvs +keepalivede : 高可用集群

keepalived为Ivs应运而生的高可用服务。Ivs的调度器无法做高可用,于是keepalived这个软件。 实现的是调度器的高可用

但是: keepalived不是专为Ivs集群服务的,也可以做其他代理服务器的高可用。

lvs的高可用集群:主调度器和备调度器(可以有多个)一主两备 一主一备

主调度器能够正常运行时,有主调度器进行真实后端服务器的分配处理,其余的备用调度器处于冗余状态

不参与集群的运转,主调度器出现了故障无法运行,备调度器才会承担主调度器的工作

一旦主调度器恢复工作,继续由主调度器进行处理,备调度器又成冗余

VRRP:Keeplived是基于vrrp协议实现lvs服务的高可用。解决了调度器单节点的故障问题

VRRP协议 :提高网络路由器可靠性开发的一种协议

主备切换的解释

选举出主和备:预先设定好主和备的优先级,主的优先级高,备的优先级低 一旦开启服务

vrrp组播通信:224.0.0.18vrrp协议当中的主备服务器通过组播地址进行通信,交换服务器之间的运行状态,主服务器会周期性的发送vrrp的报文消息,以通知其他备服务器的主服务器的现在状态。

主备切换:主服务器发生故障或者不可达,vrrp协议会把请求转发到备服务器,通过组播地址,vrrp可以迅速的通知其他服务器发生了住别切换,确保新的主服务器可以正常的处理客户端的请求

故障恢复:一旦主服务器恢复通信,有组播地址进行通信, 发现在恢复的主服务器的优先级会比较高,会抢占原主服务器的位置,成为主服务器,调度和接收请求

keepalived的体系模块:

全局模块: core模块,负载整个keepalived启动加载和维护。

VRRP模块:实现vrrp协议,主备切换。

check:负责健康检查,检查后端真实服务器的健康健康。配置真实服务器的模块当中。

脑裂

脑裂:主备同时拥有vip地址  在高可用系统中,联系两个节点的心跳线,本来是一体的,动作协调的高可用系统,心跳线断开后,分裂成了两个独立的个体,主备之间取了联系,都以为对方出现了故障,两个调度器,就像脑裂人一样,开始抢主的位置,抢占vip,主有vip 备也有vip 导致整个集群失败

脑裂分析判断原因::

软件层面:配置文件错误,tcpdump抓包分析好配置 改文件重启即可

网络层面:高可用服务器之间心跳线检测失败,主备之间无法通信

硬件层面:连接主备之间的心跳线老化,网卡或者网卡的驱动失败,IP地址配置冲突防火墙没有配置心跳线的传输通道

如何解决keepalive脑裂的问题

1 硬件:准备2条心跳线,断了一条,依然能够传送心跳线

2 设置防火墙一定让心跳信息通过

3 监控软件,实时检测

环境介绍:

dev开发环境开发人员专用

sit测试环境测试人员使用(开发,运维)

pre预生产环境运维和开发(和最终的生产 环境保持一致)

prd生产环境(面向用户的环境。)

工作方式基于vrrp协议:

1  确定主备

2  vip地址只能有一个,出现在主服务器上

2  vrrp224.0.0.0.18 组播地址,发送vrrp报文,

4、主备切换,主出现故障, vip地址会飘移到备服务器。

5.主服务器恢复,VIP地址要回到主

6、脑裂主备都有vip软件层面q检查配置文件,重启。

7. keepalived不是只能和IVs搭配,也可以和其他服务配合,实现高可用。

实验前准备:

Test1主调度器 20.0.0.10

Test2 备调度器 20.0.0.20

 后端真实服务器 20.0.0.30 nginx

后端真实服务器 20.0.0.40  nginnx

vip地址:20.0.0.100  nginx

客户端  61

Lvs Keepalived 实验步骤:

Test1 20.0.0.10 主调度器

[root@localhost ~]# systemctl stop firewalld

[root@localhost ~]# setenforce 0

[root@localhost ~]# yum -y install ipvsadm keepalived

[root@localhost ~]# cd /etc/keepalived/

[root@localhost keepalived]# ls

keepalived.conf

[root@localhost keepalived]# vim keepalived.conf

##后端真实服务器20.0.0.40的配置直接复制上面20.0.0.30的配置架构

##下面的文件全部删除

global_defs {

   notification_email {

     acassen@firewall.loc

     failover@firewall.loc

     sysadmin@firewall.loc

   }

   notification_email_from Alexandre.Cassen@firewall.loc

   smtp_server 127.0.0.1

   smtp_connect_timeout 30

   router_id LVS_01

#主备服务器的id,不能一致

   vrrp_skip_check_adv_addr

   #vrrp_strict

#取消严格遵守vrrp协议功能,不取消无法连接

   vrrp_garp_interval 0

   vrrp_gna_interval 0

}

vrrp_instance VI_1 {

    state MASTER

  #表示身份,主备MASTER BACKUP

    interface ens33

#绑定vip地址的物理接口

       virtual_router_id 10

#虚拟路由器的id

    priority 100

    advert_int 1

#发送报文的间隔时间

 authentication {

        auth_type PASS

        auth_pass 1111

    }

    virtual_ipaddress {

        20.0.0.100

#指定集群的vip地址

    }

}

virtual_server 20.0.0.100 80 {

    delay_loop 6

#健康检查的间隔时间

    lb_algo rr

#负载均衡的调度算法

    lb_kind DR

#指定LVs集群的工作方式 要大写

    persistence_timeout 0

#连接保持时间

    protocol TCP

    real_server 20.0.0.30 80 {

        weight 1

#后端服务器的轮询权重

        TCP_CHECK {

        connect_port 80

#检测目标的端口号

        connect_timeout 3

#连接超时时间

       nb_get_retry 3

#重试的次数

       delay_before_retry 4

#重试的间隔描述

     }

  }

 real_server 20.0.0.30 80 {

        weight 1

#后端服务器的轮询权重

        TCP_CHECK {

        connect_port 80

#检测目标的端口号

        connect_timeout 3

#连接超时时间

       nb_get_retry 3

#重试的次数

       delay_before_retry 4

#重试的间隔描述

     }

  }

#重启Keep啊lived

[root@localhost keepalived]# systemctl restart keepalived.service

#检测配置策略

[root@localhost keepalived]# ipvsadm -ln

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn

TCP  20.0.0.100:80 rr

  -> 20.0.0.30:80                 Route   1      0          0

  -> 20.0.0.40:80                 Route   1      0          0

[root@localhost keepalived]# ip addr

#配置内核文件

[root@localhost keepalived]# vim /etc/sysctl.conf

net.ipv4.ip_forward = 0

net.ipv4.conf.all.send_redirects = 0

net.ipv4.conf.default.send_redirects = 0

net.ipv4.conf.ens33.send_redirects = 0

#检测查看内核文件

[root@localhost keepalived]# sysctl -p

net.ipv4.ip_forward = 0

net.ipv4.conf.all.send_redirects = 0

net.ipv4.conf.default.send_redirects = 0

net.ipv4.conf.ens33.send_redirects = 0

备调度器test2 20.0.20

[root@localhost ~]# systemctl stop firewalld

[root@localhost ~]# setenforce 0

[root@localhost ~]# yum -y install ipvsadm keepalived

[root@localhost ~]# cd /etc/keepalived/

[root@localhost keepalived]# ls

keepalived.conf

#直接复制test1的配置  复制前 先备份下

[root@localhost keepalived]# cp keepalived.conf keepalived.conf.bak

[root@localhost keepalived]# ls

keepalived.conf  keepalived.conf.bak

#远程复制test1的配置

[root@localhost keepalived]# scp root@20.0.0.10:/etc/keepalived/keepalived.conf /etc/keepalived/

[root@localhost keepalived]# ls

keepalived.conf  keepalived.conf.bak

[root@localhost keepalived]# vim keepalived.conf

#在再修改下几个字符 标识符、主备名称,优先级

#同上主服务操作步骤

[root@localhost keepalived]# systemctl restart keepalived.service

[root@localhost keepalived]# ipvsadm -ln

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn

TCP  20.0.0.100:80 rr

  -> 20.0.0.30:80                 Route   1      0          0

  -> 20.0.0.40:80                 Route   1      0          0

[root@localhost keepalived]# vim /etc/sysctl.conf

net.ipv4.ip_forward = 0

net.ipv4.conf.all.send_redirects = 0

net.ipv4.conf.default.send_redirects = 0

net.ipv4.conf.ens33.send_redirects = 0

#备服务器没有vip 地址

后端真实服务器test3 20.0.0.30

#配置页面内容 vip地址 再添加选址标识

[root@localhost ~]# systemctl restart nginx.service

[root@localhost ~]# systemctl restart nginx.service

[root@localhost ~]# cd /usr/local/nginx/html/

[root@localhost html]# ls

50x.html  bbs  index.html  index.php

[root@localhost html]# vim index.html

随便写入内容

[root@localhost html]# vim /etc/sysconfig/network-scripts/ifcfg-lo:0

DEVICE=lo:0

ONBOOT=yes

IPADDR=20.0.0.100

NETMASK=255.255.255.255

[root@localhost html]# ifup ifcfg-lo

[root@localhost html]# route add -host 20.0.0.100 dev lo:0

#配置内核文件

[root@localhost html]# vim /etc/sysctl.conf

net.ipv4.conf.lo.arp_ignore = 1

net.ipv4.conf.lo.arp_announce = 2

net.ipv4.conf.all.arp_ignore = 1

net.ipv4.conf.all.arp_announce = 2

[root@localhost html]# sysctl -p

net.ipv4.conf.lo.arp_ignore = 1

net.ipv4.conf.lo.arp_announce = 2

net.ipv4.conf.all.arp_ignore = 1

net.ipv4.conf.all.arp_announce = 2

后端真实服务器test4

同上配置

Last login: Mon Oct 16 22:39:57 2023 from 20.0.0.99

[root@localhost ~]# systemctl restart nginx

[root@localhost ~]# systemctl restart nginx

[root@localhost ~]# cd /usr/share/nginx/html/

[root@localhost html]#

[root@localhost html]# ls

50x.html  index.html

[root@localhost html]# vim index.html

[root@localhost html]# vim /etc/sysconfig/network

network          network-scripts/

[root@localhost html]# vim /etc/sysconfig/network-scripts/ifcfg-lo:0

[root@localhost html]# ifup ifcfg-lo:0

[root@localhost html]# route add -host 20.0.0.100 dev lo:0

[root@localhost html]# vim /etc/sysctl.conf

[root@localhost html]# sysctl -p

net.ipv4.conf.lo.arp_ignore = 1

net.ipv4.conf.lo.arp_announce = 2

net.ipv4.conf.all.arp_ignore = 1

net.ipv4.conf.all.arp_announce = 2

验证测试

Test1

[root@localhost keepalived]# systemctl stop keepalived.service

Test2

Ip addr

VIP地址飘到备用调度器上

</html>

[root@www ~]# curl 20.0.0.100

this is 33

[root@www ~]# curl 20.0.0.100

相关文章:

Lvs +keepalivede : 高可用集群

keepalived为Ivs应运而生的高可用服务。Ivs的调度器无法做高可用&#xff0c;于是keepalived这个软件。 实现的是调度器的高可用。 但是: keepalived不是专为Ivs集群服务的&#xff0c;也可以做其他代理服务器的高可用。 lvs的高可用集群&#xff1a;主调度器和备调度器&…...

得物 Redis 设计与实践yu

一、前言 自建 Redis 系统是得物 DBA 团队自研高性能分布式 KV 缓存系统&#xff0c;目前管理的 ECS 内存总容量超过数十TB&#xff0c;数百多个 Redis 缓存集群实例&#xff0c;数万多个 Redis 数据节点&#xff0c;其中内存规格超过 1T 的大容量集群多个。 自建 Redis 系统采…...

优咔科技创新连接方案助力高质量5G车联服务

上海优咔网络科技有限公司 CEO 闫楠 【摘要】本文就智能网联汽车对高质量5G车联服务的需求背景和行业趋势进行了分析&#xff0c;主要介绍采用5G双SIM卡的创新连接方案&#xff0c;重点讲述双SIM卡联网的端到端体系架构和技术方案&#xff0c;并就优咔科技全方位支撑行业领先车…...

(a /b)*c的值

系列文章目录 进阶的卡莎C++_睡觉觉觉得的博客-CSDN博客数1的个数_睡觉觉觉得的博客-CSDN博客双精度浮点数的输入输出_睡觉觉觉得的博客-CSDN博客足球联赛积分_睡觉觉觉得的博客-CSDN博客大减价(一级)_睡觉觉觉得的博客-CSDN博客小写字母的判断_睡觉觉觉得的博客-CSDN博客纸币(…...

Hive 常用DML操作

本专栏案例数据集链接: https://download.csdn.net/download/shangjg03/88478038 1.加载文件数据到表 1.1 语法 LOAD DATA [LOCAL] INPATH filepath [OVERWRITE] INTO TABLE</...

centos部署tomcat

Java Downloads | Oracle 上面是下载网址 Tomcat是由Apache开发的一个Servlet容器&#xff0c;实现了对Servlet和JSP的支持&#xff0c;并提供了作为Web服务器的一些特有功能&#xff0c;如Tomcat管理和控制平台&#xff0c;安全域管理和Tomcat阀 简单来说&#xff1a;Tomcat…...

【Spark】配置参数关系-重要

并行度数量 并行度指所有Executor可以同时执行的Task数&#xff0c; 每个Executor中的一个Core&#xff08;线程&#xff0c;虚拟核数&#xff09;同时只能执行一个Task&#xff0c; 所以 最大并行度 Executor数量 * 每个Executor的Core数&#xff1b; eg&#xff1a;资源配…...

[Qt之“MMM dd yyyyhh:mm:ss“]时间格式

这是时间格式字符串&#xff0c;用于表示日期和时间的显示格式。具体解释如下&#xff1a; “MMM”&#xff1a;表示月份的缩写&#xff0c;例如Jan、Feb、Mar等。“dd”&#xff1a;表示日期的两位数&#xff0c;例如01、02、03等。“yyyy”&#xff1a;表示年份的四位数&…...

SSM宾馆客房管理系统开发mysql数据库web结构java编程计算机网页源码eclipse项目

一、源码特点 SSM 宾馆客房管理系统是一套完善的信息系统&#xff0c;结合springboot框架和bootstrap完成本系统&#xff0c;对理解JSP java编程开发语言有帮助系统采用SSM框架&#xff08;MVC模式开发&#xff09;&#xff0c;系统具有完整的源代 码和数据库&#xff0c;系统…...

永远在路上

今年的1024是自己过的第八个程序员节&#xff0c;虽然没有放假&#xff0c;但是公司给每一个程序员都发了一个水果拼盘的福利&#xff0c;礼轻情意重吧&#xff01;毕竟有许多公司都欠薪的情况下&#xff0c;我们公司不仅按时发薪资&#xff0c;而且还有固定福利和节日福利&…...

JS递归函数详解

递归函数是一种在函数内部调用自身的编程技巧。通过不断地将问题分解为更小的子问题&#xff0c;递归函数可以处理复杂的任务&#xff0c;并提供简洁和可读性高的代码实现。 基本原理&#xff1a; 1.递归函数由两个主要部分组成&#xff1a;基准条件&#xff08;base case&…...

JS问题:如何实现文本一键复制和长按复制功能?

前端功能问题系列文章&#xff0c;点击上方合集↑ 序言 大家好&#xff0c;我是大澈&#xff01; 本文约2000字&#xff0c;整篇阅读大约需要4分钟。 本文主要内容分三部分&#xff0c;第一部分是需求分析&#xff0c;第二部分是实现步骤&#xff0c;第三部分是问题详解。 …...

react实现步进器

创建一个步进器组件&#xff0c;包含当前步骤&#xff08;currentStep&#xff09;的状态以及前进和后退的操作&#xff1a; import React, { useState } from react;function Stepper() {const [currentStep, setCurrentStep] useState(1);const handleNext () > {setCu…...

【jenkins】centos7在线安装jenkins

一、系统要求 最低推荐配置 256MB可用内存 1GB可用磁盘空间(作为一个Docker容器运行jenkins的话推荐10GB) 软件配置 Java 8—​无论是Java运行时环境&#xff08;JRE&#xff09;还是Java开发工具包&#xff08;JDK&#xff09;都可以 二、安装jenkins 准备一台安装有ce…...

Hive常用DDL操作

本专栏案例数据集链接: https://download.csdn.net/download/shangjg03/88478038 1. Database 1.1 查看数据库列表 show databases; 1.2 使用数据库 USE database_name;...

关于css中设置变量用于全局Css或者Js中使用

一、配置变量css文件 src/styles/variables.scss // 设置色值变量// 1、继承body中设置的样式内嵌style"--baseColor:#0075FF;" // 一般常用于Saas系统&#xff0c;如qiankun框架主应用决定子应用的样式 $primary: var(--baseColor, #0075FF); // 主色调&#xff0…...

Elasticsearch(十五)搜索---搜索匹配功能⑥--基于地理位置查询

一、前言 随着互联网的热门&#xff0c;越来越多的传统行业将全部或者部分业务转移到互联网上&#xff0c;其中不乏一些和地理位置强相关的行业。基于地理位置的搜索功能&#xff0c;大大提升了人们的生活和工作效率。例如&#xff0c;外出旅行时&#xff0c;只需要用手机打开…...

为什么axios会有params和data两个参数

不知道大家有没有过这种感觉&#xff0c;突然一个问题百思不得其解&#xff0c;然后突然有一天就明白了。然后就感觉这个问题原来这么简单&#xff0c;本来想记录下来&#xff0c;但是又感觉这么简单的问题记录下来没啥意义。但是回过头来想一想&#xff0c;这个问题之前其实困…...

Vite+Vue3项目全局引入scss文件

前言 Sass 是世界上最成熟、最稳定、最强大的专业级CSS扩展语言&#xff01;在日常项目开发过程中使用非常广泛&#xff0c;今天主要讲一下 ViteVue3 项目中该如何全局引入 scss 文件&#xff0c;引入混合 mixin 文件的不同配置。捎带说一下 Vue2 中的引入方式做一下简单的对比…...

android10.0(Q) MTK 6765 user版本打开root权限

前言 相比较 Android8.1、9.0 而言&#xff0c;Android10.0 版本 的 root变得相当麻烦&#xff0c;10.0 中引入了动态分区机制&#xff0c;同样的要想完全 adb root&#xff0c;需要 fastboot 解锁&#xff0c;然后关闭 verity 才能 adb remount 成功。我尝试和之前一样修改 f…...

rknn优化教程(二)

文章目录 1. 前述2. 三方库的封装2.1 xrepo中的库2.2 xrepo之外的库2.2.1 opencv2.2.2 rknnrt2.2.3 spdlog 3. rknn_engine库 1. 前述 OK&#xff0c;开始写第二篇的内容了。这篇博客主要能写一下&#xff1a; 如何给一些三方库按照xmake方式进行封装&#xff0c;供调用如何按…...

Python:操作 Excel 折叠

💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 Python 操作 Excel 系列 读取单元格数据按行写入设置行高和列宽自动调整行高和列宽水平…...

【git】把本地更改提交远程新分支feature_g

创建并切换新分支 git checkout -b feature_g 添加并提交更改 git add . git commit -m “实现图片上传功能” 推送到远程 git push -u origin feature_g...

3-11单元格区域边界定位(End属性)学习笔记

返回一个Range 对象&#xff0c;只读。该对象代表包含源区域的区域上端下端左端右端的最后一个单元格。等同于按键 End 向上键(End(xlUp))、End向下键(End(xlDown))、End向左键(End(xlToLeft)End向右键(End(xlToRight)) 注意&#xff1a;它移动的位置必须是相连的有内容的单元格…...

NPOI Excel用OLE对象的形式插入文件附件以及插入图片

static void Main(string[] args) {XlsWithObjData();Console.WriteLine("输出完成"); }static void XlsWithObjData() {// 创建工作簿和单元格,只有HSSFWorkbook,XSSFWorkbook不可以HSSFWorkbook workbook new HSSFWorkbook();HSSFSheet sheet (HSSFSheet)workboo…...

解析两阶段提交与三阶段提交的核心差异及MySQL实现方案

引言 在分布式系统的事务处理中&#xff0c;如何保障跨节点数据操作的一致性始终是核心挑战。经典的两阶段提交协议&#xff08;2PC&#xff09;通过准备阶段与提交阶段的协调机制&#xff0c;以同步决策模式确保事务原子性。其改进版本三阶段提交协议&#xff08;3PC&#xf…...

规则与人性的天平——由高考迟到事件引发的思考

当那位身着校服的考生在考场关闭1分钟后狂奔而至&#xff0c;他涨红的脸上写满绝望。铁门内秒针划过的弧度&#xff0c;成为改变人生的残酷抛物线。家长声嘶力竭的哀求与考务人员机械的"这是规定"&#xff0c;构成当代中国教育最尖锐的隐喻。 一、刚性规则的必要性 …...

uni-app学习笔记三十五--扩展组件的安装和使用

由于内置组件不能满足日常开发需要&#xff0c;uniapp官方也提供了众多的扩展组件供我们使用。由于不是内置组件&#xff0c;需要安装才能使用。 一、安装扩展插件 安装方法&#xff1a; 1.访问uniapp官方文档组件部分&#xff1a;组件使用的入门教程 | uni-app官网 点击左侧…...

起重机起升机构的安全装置有哪些?

起重机起升机构的安全装置是保障吊装作业安全的关键部件&#xff0c;主要用于防止超载、失控、断绳等危险情况。以下是常见的安全装置及其功能和原理&#xff1a; 一、超载保护装置&#xff08;核心安全装置&#xff09; 1. 起重量限制器 功能&#xff1a;实时监测起升载荷&a…...

SDU棋界精灵——硬件程序ESP32实现opus编码

一、 ​​音频处理框架​ 该项目基于Espressif的音频处理框架构建,核心组件包括 ESP-ADF 和 ESP-SR,以下是完整的音频处理框架实现细节: 1.核心组件 (1) 音频前端处理 (AFE - Audio Front-End) ​​main/components/audio_pipeline/afe_processor.c​​功能​​: 声学回声…...