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

keepalived

在业务量达到一定量的时候,往往单机的服务是会出现瓶颈的。此时最常见的方式就是通过负载均衡来进行横向扩展。其中我们最常用的软件就是 Nginx。通过其反向代理的能力能够轻松实现负载均衡,当有服务出现异常,也能够自动剔除。但是负载均衡服务自身也可能出现故障,因此需要引入其他的软件来实现负载均衡服务的高可用。本文就介绍了一种基于 LVS+Keepalived 的方式,来实现高可用 Web 集群。


前言

一、keepalived双机热备

(一)、概述

Keepalived 是一个基于 VRRP 协议来实现的 LVS 服务高可用方案,可以解决静态路由出现的单点故障问题。

1.原理

在一个 LVS 服务集群中通常有主服务器(MASTER)和备份服务器(BACKUP)两种角色的服务器,但
是对外表现为一个虚拟 IP,主服务器会发送 VRRP 通告信息给备份服务器,当备份服务器收不到 VRRP消息的时候,即主服务器异常的时候,备份服务器就会接管虚拟 IP,继续提供服务,从而保证了高可用性。

解决单点故障问题

2.功能模块


    core                主进程启动
        
    vrrp                vrrp协议:热备份路由协议
        
    check             健康状态检测

3.双机热备的脑裂现象


    Keepalived配置里同一 VRRP实例,如果 virtual_router_id两端参数配置不一致也会导致裂脑问题发生。
    vrrp实例名字不一致、优先级一致
    防火墙打开,导致心跳无法正常通信
    网卡故障,网卡进行多路复用
        
      

案列

192.168.238.138

192.168.238.139(web)

192.168.238.140(web)

基础环境(防火墙配置、宽容模式、IP配置)

(二)、web配置

192.168.238.139(web)

yum install -y keepalived

yum install -y epel-release

yum install -y nignx

cd /etc/keepalived

vim keepalived.conf

 systemctl start keepalived

ip a 

systemctl start nginx

192.168.238.140(web)

yum install -y keepalived

yum install -y epel-release

yum install -y nignx

cd /etc/keepalived

vim keepalived.conf

systemctl start keepalived

systemctl start nginx

192.168.238.138

创建个共享目录

mkdir /opt/kkk -p

vim /etc/exports

systemclt start nfs

将web的访问目录挂载到共享目录上

showmount -e 192.168.238.138:/opt/kkk /usr/share/nginx/html

停掉master(139)        systemctl stop keepalived

查看backup(140)            ip a

证明双击热备成功

 

(三)、测试

 在138上进行访问

 cd /opt/kkk

echo HI > index.html

 再将原master启动又恢复原master

二、keepalived+lvs(DR)

作用                使用keepalived解决lvs的单点故障,高可用集群。

案列

192.168.238.136(lvs备)

192.168.238.138(lvs)

192.168.238.139(web)

192.168.238.140(web)

(一)、调度器配置

192.168.238.138(lvs)

yum install -y epel-release

yum install -y ipvsadm

cd /etc/sysconfig/network-scripts

vim ifcfg-ens33:0

 

vim /etc/sysctl.conf中插入

net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects=0
net.ipv4.conf.ens33.send_redirects = 0

sysctl -p

modprobe ip_vs

systemctl start ipvsadm

ipvsadm -A -t 192.168.238.100:80 -s rr

ipvsadm -a -t 192.168.238.100:80 -r 192.168.238.139:80 -g

ipvsadm -a -t 192.168.238.100:80 -r 192.168.238.140:80 -g

ipvsadm-save > /etc/sysconfig/ipvsadm

ipvsadm -ln

 yum install -y keepalived

vim /etc/keepalived/keepalived.conf

 

 systemctl start keepalived

192.168.238.136(lvs备)

192.168.238.138(lvs)操作

除了keepalived文件和不需要创建ens33:0

ip a 

 

 

(二)、web节点配置

192.168.238.139(web)

cd /usr/share/nginx/html 

echo OK > index.html

vim /etc/sysctl.conf中插入

net.ipv4.conf.all.arp_ignore=1
net.ipv4.conf.all.arp_announce=2
net.ipv4.conf.default.arp_ignore=1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce=2

sysctl -p

cd /etc/sysconfig/network-scripts/

cp ifcfg-lo ifcfg-lo:0

vim ifcfg-lo:0

systemctl restart network

route add -host 192.168.238.100/32 dev lo:0

 192.168.238.140(web)139操作

除了访问文件

cd /usr/share/nginx/html 

echo HOW > index.html

 

(三)、测试

正常访问可以实现负载均衡

 

 停掉138的keepalived

systemctl stop keepalived访问依然正常,136中 ip a 可以查看到虚拟IP,表面已实现双击热备和负载均衡

 

 

 


 

总结

今天的双机备热比较简单,只需修改配置文件即可。keepalived+lvs要在LVS的DR工作模式之上,构建好DR后再创建备用LVS即可。理清思绪,保持头脑清醒,才能更快的将实验做通。

相关文章:

keepalived

在业务量达到一定量的时候,往往单机的服务是会出现瓶颈的。此时最常见的方式就是通过负载均衡来进行横向扩展。其中我们最常用的软件就是 Nginx。通过其反向代理的能力能够轻松实现负载均衡,当有服务出现异常,也能够自动剔除。但是负载均衡服…...

react-native-gesture-handler 手势的使用

要在React Native项目中使用react-native-gesture-handler,可以按照以下步骤进行设置: 1、首先,在你的React Native项目中安装react-native-gesture-handler。可以使用npm或者yarn命令来安装: npm install react-native-gesture…...

【SA8295P 源码分析】系列文章链接汇总 - 持续更新中

【SA8295P 源码分析】00 - 系列文章链接汇总 - 持续更新中 一、分区、下载、GPIO等杂项相关二、开机启动流程代码分析二、OpenWFD 显示屏模块三、Touch Panel 触摸屏模块四、QUPv3 及 QNX Host透传配置五、Camera 摄像头模块(当前正在更新中...)六、网络…...

springBoot防止重复提交

两种方法, 一种是后端实现,较复杂,要通过自定义注解和AOP以及Redis组合实现 另一种是前端实现,简单,只需通过js,设置过期时间,一定时间内,多次点击按钮只生效一次 后端实现 自定义注…...

lvs-dr模式+keepalived

一,keepalived概述 Keepalived 是一个基于VRRP协议来实现的LVS服务高可用方案,可以解决静态路由出现的单点故障问题。 在一个LVS服务集群中通常有主服务器(MASTER)和备份服务器(BACKUP)两种角色的服务器&am…...

[C++]笔记-知识点总结

一.输入密码时候,隐藏密码 用函数getch(),头文件#include<conio.h>输入一个字符时候不会回显,getc会回显实现思路: 输入一个字符,由于不知道密码长度,所以设置为死循环,如果不是回车键,即将该字符添加到存放密码的数组里,顺便打印一个星号,如果输入的为回车键,由于getch…...

1.RabbitMQ介绍

一、MQ是什么&#xff1f;为什么使用它 MQ&#xff08;Message Queue&#xff0c;简称MQ&#xff09;被称为消息队列。 是一种用于在应用程序之间传递消息的通信方式。它是一种异步通信模式&#xff0c;允许不同的应用程序、服务或组件之间通过将消息放入队列中来进行通信。这…...

软考高级系统架构设计师系列论文七十三:论中间件在SIM卡应用开发中的作用

软考高级系统架构设计师系列论文七十三:论中间件在SIM卡应用开发中的作用 一、中间件相关知识点二、摘要三、正文四、总结一、中间件相关知识点 软考高级系统架构设计师:构件与中间件技术二、摘要 我曾于近期参与过一个基于SIM卡应用的开发项目,并在项目中担任系统分析的工作…...

【Java架构-包管理工具】-Maven进阶(二)

本文摘要 Maven作为Java后端使用频率非常高的一款依赖管理工具&#xff0c;在此咱们由浅入深&#xff0c;分三篇文章&#xff08;Maven基础、Maven进阶、私服搭建&#xff09;来深入学习Maven&#xff0c;此篇为开篇主要介绍Maven进阶知识&#xff0c;包含坐标、依赖、仓库、生…...

『C语言入门』分支和循环语句

文章目录 引言一、什么是语句&#xff1f;1.1表达式语句1.2赋值语句1.3函数调用语句1.4复合语句1.5空语句1.6控制语句 二、分支语句2.1 if语句2.1.1基本语法2.1.2使用else语句2.1.3嵌套if语句2.1.4多层if-else语句 2.2 switch语句2.2.1基本语法2.2.2示例2.2.3穿透 三、循环语句…...

【给自己挖个坑】三维视频重建(NSR技术)-KIRI Engine

文章目录 以下是我和AI的对话通过手机拍摄物体的视频&#xff0c;再根据视频生成三维模型&#xff0c;这个可实现吗我想开发类似上面的手机应用程序&#xff0c;如何开发呢 看了以上回答&#xff0c;还是洗洗睡吧NSR技术的实现原理是什么呢有案例吗我是名Java工程师&#xff0c…...

Chrome历史版本下载和Selenium驱动版本下载

Python自动化必备&#xff1a; Selenium驱动版本下载 http://chromedriver.storage.googleapis.com/index.html Chrome浏览器历史版本下载 https://www.slimjet.com/chrome/google-chrome-old-version.php...

联合注入步骤

使用场景&#xff1a; 有回显&#xff0c;可以看到某些字段的回显信息 像下面的有具体的回显信息 一、判断注入位点 在原始的id&#xff08;参数&#xff09;的输入后面添加额外的条件 如果and 11 有结果&#xff0c;and10没有结果输出&#xff0c; 就说明我们添加的额外条件…...

后端项目开发:整合redis缓存

因为各种场合比如门户和后台&#xff0c;需要不同的redis配置&#xff0c;我们在common包配置通用的reids配置。 1.新建service目录&#xff0c;建立RedisService服务接口&#xff0c;同时编写工具类实现该接口。 public interface RedisService {/*** 保存属性*/void set(Str…...

美国访问学者签证好办吗?

近年来&#xff0c;随着国际交流与合作的不断深入&#xff0c;许多人对于美国访问学者签证的办理情况产生了浓厚的兴趣。那么&#xff0c;美国访问学者签证到底好办吗&#xff1f;让知识人网小编带您一起了解一下。 首先&#xff0c;美国作为世界上的科研、教育和创新中心之一&…...

Linux之基础IO文件系统讲解

基础IO文件系统讲解 回顾C语言读写文件读文件操作写文件操作输出信息到显示器的方法stdin & stdout & stderr总结 系统文件IOIO接口介绍文件描述符fd文件描述符的分配规则C标准库文件操作函数简易模拟实现重定向dup2 系统调用在minishell中添加重定向功能 FILE文件系统…...

Django主要特点

Django 是一个开源的 Python Web 开发框架&#xff0c;它提供了一系列的工具和功能&#xff0c;帮助开发人员快速、高效地构建 Web 应用程序。 以下是 Django 的一些主要特点&#xff1a; 1. 强大的 ORM&#xff08;对象关系映射&#xff09;&#xff1a; Django 提供了一个…...

element-ui中的el-table合并单元格

描述&#xff1a; 在写项目的时候有时候会经常遇到把行和列合并起来的情况&#xff0c;因为有些数据是重复渲染的&#xff0c;不合并行列会使表格看起来非常的混乱&#xff0c;如下&#xff1a; 而我们想要的数据是下面这种情况&#xff0c;将重复的行进行合并&#xff0c;使表…...

自组织地图 (SOM) — 介绍、解释和实现

自组织地图 &#xff08;SOM&#xff09; — 介绍、解释和实现 一、说明 什么是SOM&#xff08;self orgnize map&#xff09;自组织地图&#xff0c;是GNN类似的图神经网络的概念。因为神经网络实质上可以解释为二部图的权重&#xff0c;因此无论GNN还是SOM都有共同的神经网络…...

Arduino程序设计(四)按键消抖+按键计数

按键消抖按键计数 前言一、按键消抖二、按键计数1、示例代码2、按键计数实验 参考资料 前言 本文主要介绍两种按键控制LED实验&#xff1a;第一种是采用软件消抖的方法检测按键按下的效果&#xff1b;第二种是根据按键按下次数&#xff0c;四个LED灯呈现不同的流水灯效果。 一…...

Scrum Guide Chinese Simplified.pdf

敏捷指南...

Module not found: Error: Can‘t resolve ‘vue-pdf‘ in ‘xxx‘

使用命令npm run serve时vue项目报错&#xff1a; Module not found: Error: Cant resolve vue-pdf in xxx 解决方案&#xff1a; 运行命令&#xff1a; npm install vue-pdf --save --legacy-peer-deps 即可解决。 再次顺利执行npm run serve...

ELK之LogStash介绍及安装配置

一、logstash简介 集中、转换和存储数据 Logstash 是免费且开放的服务器端数据处理管道&#xff0c;能够从多个来源采集数据&#xff0c;转换数据&#xff0c;然后将数据发送到您最喜欢的“存储库”中。 Logstash 能够动态地采集、转换和传输数据&#xff0c;不受格式或复杂度的…...

docker学习(1)

1、容器与虚拟机的对比&#xff1a; 虚拟机&#xff08;virtual machine&#xff09;就是带环境安装的一种解决方案。 它可以在一种操作系统里面运行另一种操作系统&#xff0c;比如在Windows10系统里面运行Linux系统CentOS7。 应用程序对此毫无感知&#xff0c;因为虚拟机看…...

UE5 Niagara基础知识讲解

文章目录 前言官方文档发射器生成(Emitter Spawn)发射器更新(Emitter Update)Spawn Rate(生成速率)粒子生成(Particle Spawn)Initialize Particle(初始化粒子)粒子生命周期粒子颜色粒子大小Shape Location(形状位置)形状位置Add Velocity(添加速度)粒子速度Curl …...

缓存穿透、缓存击穿和缓存雪崩

&#x1f44f;作者简介&#xff1a;大家好&#xff0c;我是爱发博客的嗯哼&#xff0c;爱好Java的小菜鸟 &#x1f525;如果感觉博主的文章还不错的话&#xff0c;请&#x1f44d;三连支持&#x1f44d;一下博主哦 &#x1f4dd;社区论坛&#xff1a;希望大家能加入社区共同进步…...

自动化编排工具Terraform介绍(一)

Terraform是什么&#xff1f;: Terraform 是 HashiCorp 公司旗下的 Provision Infrastructure 产品, 是 AWS APN Technology Partner 与 AWS DevOps Competency Partner。Terraform 是一个 IT 基础架构自动化编排工具&#xff0c;它的口号是“Write, Plan, and Create …...

zhm_real/MotionPlanning运动规划库中A*算法源码详细解读

本文主要对zhm_real/MotionPlanning运动规划库中A*算法源码进行详细解读&#xff0c;即对astar.py文件中的内容进行详细的解读&#xff0c;另外本文是 Hybrid A * 算法源码解读的前置文章&#xff0c;为后续解读Hybrid A * 算法源码做铺垫。 astar.py文件中的源码如下&#xff…...

SpringMVC中Controller层获取前端请求参数的几种方式

SpringMVC中Controller层获取前端请求参数的几种方式 1、SpringMVC自动绑定2、使用RequestParam 注解进行接收3、RequestBody注解&#xff08;1&#xff09; 使用实体来接收JSON&#xff08;2&#xff09;使用 Map 集合接收JSON&#xff08;3&#xff09; 使用 List集合接收JSO…...

记Flask-Migrate迁移数据库失败的两个Bug——详解循环导入问题

文章目录 Flask-Migrate迁移数据库失败的两个Bug1、找不到数据库&#xff1a;Unknown database ***2、迁移后没有效果&#xff1a;No changes in schema detected. Flask-Migrate迁移数据库失败的两个Bug 1、找不到数据库&#xff1a;Unknown database ‘***’ 若还没有创建数…...

wordpress文字加边框/上海网站建设制作

Flowable 6.7.0版本主要增强的是BPM异步功能&#xff1a; 1、实现了全局锁定机制&#xff0c;以更好地支持在具有多个 Flowable 引擎的设置中使用异步执行器 2、添加了对多实例变量聚合的支持 3、当多实例是一个自动步骤或一系列自动步骤时&#xff0c;为异步多实例使用添加…...

如何做淘宝商城网站设计/全网关键词搜索工具

如果在丢失数据是使用了DDL语句造成或丢失数据后修改了表结构&#xff0c;那么就会造成使用不了闪回功能。SQL> select count(1) from test;COUNT(1)----------9SQL> select systimestamp from dual;SYSTIMESTAMP------------------------------------------------------…...

专业的网站建设公司/百度不能搜的十大禁词

我在做一个微服务调用的时候出现了被调接口传参失败问题 Feign是通过http协议调用服务的&#xff0c;后来发现是因为Gep和Maping不一致&#xff0c;还有使用feign时要记得给实体类加无参构造注解 同时这些注解都尽量一致&#xff0c;不然微服务调bug很麻烦。 这是调用者 这是…...

自己建设淘宝客网站需要备案么/百度seo优化按年收费

作者&#xff1a;朱金灿 来源&#xff1a;http://blog.csdn.net/clever101 eclipse的代码组织架构是这样的&#xff1a;第一级是工作空间&#xff0c;第二级是工程项目。因此&#xff0c;eclipse的工作空间其实相当于visual studio的解决方案&#xff0c;本质就是一系列相关工…...

站群系列服务器做视频网站/手机网站建设案例

以下方法针对WIN10操作系统&#xff0c;步骤如下&#xff1a;1&#xff0c;点击开始菜单&#xff0c;选择所有应用。找到Xbox应用&#xff0c;点击打开。2&#xff0c;打开Xbox应用后&#xff0c;找到左边工具栏的第四项&#xff0c;点击一下&#xff08;会提示Win G&#xff…...

电子商务网站建设中应注意哪些问题/电商运营平台

WPF 格式化输出- IValueConverter接口的使用 (2012-06-11 00:14:00) 转自&#xff1a;http://blog.sina.com.cn/s/blog_4b0020f301014flr.htmlConvert 原数据转换为目标数据格式ConvertBack目标数据格式转换为原数据格式以前在用ASP.NET 做B/S系统时&#xff0c;可以方便地在GR…...