keepalived高可用

news2024/12/23 16:25:19

文章目录

  • 前言
  • 一、Keepalived简介
  • 二、keepalived工作原理
  • 三、配置文件
  • 四、实验过程
    • 1.某台Real Server down
    • 2.LVS本身down
    • 方法:
  • 五、代码详细演示整体过程
    • 调度器安装软件、设置
    • 测试keepalived对后端RS的健康检测
    • backup服务主机设置
  • 总结


前言


一、Keepalived简介

Keepalived是linux下一个轻量级别的高可用解决方案。高可用:广义来讲,是指整个系统的高可用行;狭义的来讲就是主机的冗余和接管。
Keepalived部署和使用非常的简单,所有配置只需要一个配置文件即可以完成

二、keepalived工作原理

keepalived是以VRRP协议为实现基础的,VRRP全称 Virtual Router Redundancy Protocol,即虚拟路由冗余协议。
虚拟路由冗余协议,可以认为是实现路由器高可用的协议,即将N台提供相同功能的路由器组成一个路由器组,这个组里面有一个master和多个backup,master上面有一个对外提供服务的vip(该路由器所在局域网内其他机器的默认路由为该vip),master会发组播,当backup收不到vrrp包时就认为master宕掉了,这时就需要根据VRRP的优先级来选举一个backup当master。这样就可以保证路由器的高可用了。
keepalived主要有三个模块,分别是core、check和vrrp。
core模块:keepalived的核心,负责主进程的启动、维护以及全局配置文件的加载和解析。
check:负责健康检查,包括常见的各种检查方式。
vrrp模块:实现VRRP协议的。

三、配置文件


global_defs { 
  notification_email { 
     root@localhost                         ##定义接收警告的人 
 } 
 notification_email_from root@localhost     ##定义发邮件地址  
 smtp_server 172.0.0.1                      ##定义发邮件地址,若为127.0.0.1则使用本机自带邮件服务的脚本 
 smtp_connect_timeout 30  
 router_id LVS_DEVEL 
} 
 
  #vrrp_script                               ##自定义名字,后面还会用到它 
  vrrp_garp_interval 0
  vrrp_gna_interval 0
} 
 
vrrp_instance VI_1 { 
  state MASTER                               ##角色为master,备份机的为BACKUP 
  interface eth0                             ##针对哪个网卡监听VIP 
  virtual_router_id 51 
  priority 100                               ##权重为100,master要比backup大 
  advert_int 1 
  authentication { 
    auth_type PASS 
    auth_pass 1111                           ##定义密码,这个密码自定义 
  } 
  virtual_ipaddress { 
    172.25.70.100                            ##定义VIP 
  } 
} 
virtual_server 172.25.70.100 80 {
    delay_loop 6	                         #健康检查的时间间隔
    lb_algo rr	                             #LVS调度算法
    lb_kind DR	                             #LVS模式
    #persistence_timeout 50	                 #持久化超时时间,单位是秒。默认是6分钟
    protocol TCP	                         #4层协议(TCP|UDP|SCTP)
 
    real_server 172.25.70.2 80 {
        weight 1	                         #给服务器指定权重。默认是1
        TCP_CHECK {	                         #real_server中的健康检查
			connect_timeout 3	             #连接超时时间。默认是5s
			nb_get_retry 3	                 #get尝试次数
			delay_before_retry 3	         #在尝试之前延迟多长时间
		}
    }
 
    real_server 172.25.70.3 80 {
        weight 1
        TCP_CHECK {
			connect_timeout 3
			nb_get_retry 3
			delay_before_retry 3
		}
    }
}

四、实验过程

LVS对后端不具备健康检测

1.某台Real Server down

现象
在这里插入图片描述在这里插入图片描述在这里插入图片描述

2.LVS本身down

现象
在这里插入图片描述在这里插入图片描述

方法:

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

问题一:某台Real Server down:
down服务器2的http时,ipvsadm -ln会自动删除服务器2的策略,并收到一封邮件,服务器3也是同样的;重启http后,ipvsadm -ln会自动生成策略
问题二:LVS本身down

五、代码详细演示整体过程

调度器安装软件、设置

server1:
清除资源
[root@server1 ~]# ip a d 192.168.56.100/24 dev eth0
[root@server1 ~]# ipvsadm -C

安装高可用软件
[root@server1 ~]# yum install -y keepalived

[root@server1 ~]# vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived

global_defs {
   notification_email {
        root@localhost
   }
   notification_email_from keepalived@localhost
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
   vrrp_skip_check_adv_addr
   #vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}

vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.56.100
    }
}

virtual_server 192.168.56.100 80 {
    delay_loop 3
    lb_algo rr
    lb_kind DR
    #persistence_timeout 50
    protocol TCP

    real_server 192.168.56.12 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 3
            delay_before_retry 3
        }
    }
    real_server 192.168.56.13 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 3
            delay_before_retry 3
        }
    }
}

[root@server1 ~]# systemctl enable --now keepalived


在这里插入图片描述

测试keepalived对后端RS的健康检测

[root@server2 ~]# systemctl  stop httpd

[root@server1 ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.56.100:80 rr
  -> 192.168.56.13:80             Route   1      0          0

故障的RS会自动从调度列表中被摘除

再次启动服务
[root@server2 ~]# systemctl  start httpd

恢复的RS会自动添加到调度列表

在这里插入图片描述

backup服务主机设置

server4:
安装高可用软件
[root@server4 ~]# yum install -y keepalived
从server1拷贝配置文件
[root@server1 ~]# scp /etc/keepalived/keepalived.conf server4:/etc/keepalived/

[root@server4 ~]# vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived

global_defs {
   notification_email {
        root@localhost
   }
   notification_email_from keepalived@localhost
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
   vrrp_skip_check_adv_addr
   #vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}

vrrp_instance VI_1 {
    state BACKUP
    interface eth0
    virtual_router_id 51
    priority 50
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.56.100
    }
}

virtual_server 192.168.56.100 80 {
    delay_loop 3
    lb_algo rr
    lb_kind DR
    #persistence_timeout 50
    protocol TCP

    real_server 192.168.56.12 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 3
            delay_before_retry 3
        }
    }
    real_server 192.168.56.13 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 3
            delay_before_retry 3
        }
    }
}

[root@server4 ~]# systemctl enable --now keepalived

测试:
停止server1上服务
[root@server1 ~]# systemctl  stop keepalived.service

查看资源是否自动迁移到server4

在这里插入图片描述


总结

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

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

相关文章

【深度学习】训练模型结果同时显示,模型结果对比

码字不易,如果各位看官感觉该文章对你有所帮助,麻烦点个关注,如果有任何问题,请留言交流。如需转载,请注明出处,谢谢。 文章链接:【深度学习】训练模型结果同时显示,模型结果对比_莫…

Python - 绘制人体生物节律

文章目录项目说明关于人体生物节律用到的技术代码实现获取每月有多少天计算每天到生日过了多少天计算节律绘图结果项目说明 这里仿照 http://www.4qx.net/The_Human_Body_Clock.php 做一个人体生物节律的计算和展示 关于人体生物节律 百度/维基百科 解释 https://zh.wikiped…

DaVinci 偏好设置:系统 - 内存和 GPU

偏好设置 - 系统/内存和 GPUPreferences - System/Memory and GPU内存和 GPU Memory and GPU 选项卡提供了内存配置以及 GPU 配置的相关设置。内存配置Memory Configuration系统内存System Memory列出了所用电脑的总的可用内存。限制 Resolve 内存使用到Limit Resolve memory u…

Java中如何创建和使用对象?

要想使用一个类则必须要有对象。在Java程序中可以使用new关键字创建对象,具体格式如下:类名对象名称null; 对象名称new 类名();上述格式中,创建对象分为声明对象和实例化对象两步,也可以直接通过下面的方式创建对象,具…

从 ClickHouse 到 Apache Doris,腾讯音乐内容库数据平台架构演进实践

导读:腾讯音乐内容库数据平台旨在为应用层提供库存盘点、分群画像、指标分析、标签圈选等内容分析服务,高效为业务赋能。目前,内容库数据平台的数据架构已经从 1.0 演进到了 4.0 ,经历了分析引擎从 ClickHouse 到 Apache Doris 的…

H5使用微信JSSDK的wx.chooseImage进行多文件上传

背景:项目需要用H5做一个上传多图片合成的功能页面,这里我先做了调查,调查结果是安卓在微信内核不能使用传统的input file进行多文件上传,只能限制每次上传一张,ios则不限制,所以H5想在微信内核进行多图片上…

实验室三维磁场电磁铁的主要用途及技术指标

产品用途: 北京锦正茂科技有限公司自主研发的多极电磁铁以四极电磁铁居多,也有五极、六极、八极等多极的应用,主要应用于磁滞现象研究、磁化系数测量、霍尔效应研究、磁光实验、磁场退火、核磁共振、电子顺磁共振、生物学研究、磁性测量、磁性…

实力见“证”:Tapdata 技术创新与发展潜力广受认可

Tapdata 积极拥抱各种“不确定”,变中求新,只为呈现出更加好用的产品。 而 Tapdata 在专业领域不断深耕,持续打磨产品能力的同时,也收获了诸多来自外界的肯定,从用户到投资人,从生态伙伴到技术媒体以及官方…

【Mysql系列】Mysql之窗口函数

适用场景 窗口函数适用场景: 对分组统计结果中的每一条记录进行计算的场景下, 使用窗口函数更好, 注意, 是每一条;因为MySQL的普通聚合函数的结果(如 group by)是每一组只有一条记录。 准备数据 创建表 create table app_product (id bigint auto_in…

4次迭代,让我的 Client 优化 100倍!泄漏一个 人人可用的极品方案!

4次迭代,让我的HttpClient提速100倍 在大家的生产项目中,经常需要通过Client组件(HttpClient/OkHttp/JDK Connection)调用第三方接口。 尼恩的一个生产项目也不例外。 在一个高并发的中台生产项目中。有一个比较特殊的请求,一次…

「文档数据库之争」MongoDB和CouchDB的比较

MongoDB和CouchDB都是基于文档的NoSQL数据库类型。文档数据库又称mdocument store,通常用于存储半结构化数据的文档格式及其详细描述。它允许创建和更新程序,而不需要引用主模式。移动应用程序中的内容管理和数据处理是可以应用文档存储的两个字段。Mong…

积分球原理及积分球类型介绍

标题积分球标准型积分球LED积分球均匀光源便携式高亮度积分球均匀光源微光积分球均匀光源积分球均匀光源iSphere高光谱响应光学积分球其他分类积分球 积分球原理:由于球体内整涂有白色漫反射材料的空腔球体,球壁上开有采样口,当待测样品光源进入积分球的…

Java之关于String字符串笔试面试重点

目录 一.关于字符串的常量池 1.关于字符串产生的三种方式 2.关于字符串的常量池 3.直接赋值法和new的方式产生对象的区别 二.关于intern方法 1.情况一(已经包含) 2.情况二(已经包含) 3.情况三(未包含) 4.情况四 三.关于字符串的不可变性 1.了解字符串的不可变性 2.Str…

python+selenium使用webdriver启动chrome出现闪退现象解决

这两天发现之前开发的爬虫程序出问题了:谷歌浏览器出现打开立即闪退的现象,代码未修改过,检查也没有任何问题! 查看chrome浏览器发现版本更新了 ↑(点击chrome浏览器右上角三个点,最下面帮助→Google Chr…

[软件工程导论(第六版)]第9章 面向对象方法学引论(课后习题详解)

文章目录1. 什么是面向对象方法学?它有哪些优点?2. 什么是“对象”?它与传统的数据有何异同?3. 什么是“类”?4. 什么是“继承”?5. 什么是模型?开发软件为何要建模?6. 什么是对象模…

[软件工程导论(第六版)]第8章 维护(复习笔记)

文章目录8.1 软件维护的定义8.2 软件维护的特点8.3 软件维护过程8.4 软件的可维护性8.5 预防性维护8.6 软件再工程过程维护的基本任务:保证软件在一个相当长的时期能够正常运行软件工程的主要目的就是要提高软件的可维护性,减少软件维护所需要的工作量&a…

C语言编程规范 第一部分

、代码总体原则 1、清晰第一 清晰性是易于维护、易于重构的程序必需具备的特征。代码首先是给人读的,好的代码应当可以像文章一样发声朗诵出来。目前软件维护期成本占整个生命周期成本的40%~90%。根据业界经验,维护期变更代码的成本,小型系统…

Spring Batch ItemProcessor组件-默认处理器

目录 引言 概念 默认ItemProcessor ValidatingItemProcessor:校验处理器 ItemProcessorAdapter:适配器处理器 ScriptItemProcessor:脚本处理器 CompositeItemProcessor:组合处理器 自定义ItemProcessor处理器 转视频版 引…

图数据库中的 OLTP 与 OLAP 融合实践

在一些图计算的场景下,我们会遇到同时需要处理 OLTP 和 OLAP 的问题。而本文就给了一个 OLTP 与 OLAP 融合实践的指导思路,希望给你带来一点启发。 Dag Controller 介绍 Dag Controller 是 NebulaGraph 企业版的图系统,经过反复测试无误后已…

rabbitMq安装(小短文)--未完成

rabbitMq是在activeMq的基础上创造的,有前者的功能,比前者强,属于后来居上。系统环境:windows10首先下载相关软件Erlang,因为他是这个语言写的。https://www.erlang.org/downloads然后安装,并且弄到环境变量里验证是否…