高可用集群-keepalived

一、高可用集群的基本理论

1.基本概念

①:单点故障(Single Point of Failure)

        硬件故障:设计缺陷、wear out(损耗)、自然灾害……

        软件故障:设计缺陷 bug

②:健康状态监测

        监测手段:基于协议层次监测  ip--->icmp

                          传输层  nmap......

                          应用层:获取关键性资源(力度精细,效率低)

        监测频次:

        状态判断:下线   ok--->fail--->fail--->fail

                          上线   fail---->ok---->ok

        监测过于频繁就会消耗CPU内存资源

        back server:

③:系统可用性

        SLA:Service-Level Agreement 服务等级协议(提供服务的企业与客户之间就服务的品质、水准、性能等方面所达成的双方共同认可的协议或契约)

        指标 :99.9%, 99.99%, 99.999%,99.9999%

2.keepalive理论介绍

在高可用集群解决方案中,keepalived属于最为流行,轻量化的HA解决方案,需要经常辅助脚本进行运行工作。

HA解决方案:keepalived   heartbeat   corosync    cman

高可用:active/backup    主节点和备节点,在主节点出现故障,能自动切换到备节点。

优点:轻量级、vrrp协议、基于脚本、可以实现指标99.9%, 99.99%, 99.999%,99.9999%。

高可用思路:①为了实现高可用,需要配置VIP,提供同一个访问接口地址。

                     ②主节点出现故障,备节点必须第一时间将VIP抢占过来,备节点必须时刻监控主节点的健康状态。

                      ③若不是负载均衡调度器,还需考虑共享资源的安全转移,而不仅仅是VIP。

                      ④若主节点健康并恢复服务,备节点需要将VIP还给主节点。

                    ⑤主节点需要定时向备节点通知自己的健康状态,让备节点实时了解主节点健康状态。

                     ⑥主节点、备节点包括整个网络架构时间必须是精确同步,需要基于ntp服务进行同步时间。

原理:在网络中,是以vip方式做的,它不会针对性去找ip地址;只会以组播方式,keepalived一旦形成,就会产生一个vrrp实例组,基于发组播的方式监测实例状态;组播ip范围为D类地址

【注】:①如果两台服务器上同时有VIP,这种现象被称为脑裂。实战中只有一个vip,一旦发生单点故障就会进行迁移。 

               ②nfs发生单点故障时,迁移时需要进行共享数据迁移;nfs需要基于keepalived 实现高可用:rsync_inotify、sernc;MySQL:pxc、MHA)

VRRP协议

VRRP协议:虚拟路由冗余协议

是针对路由器冗余的一种解决方案,目的是为了解决局域网中配置默认网关的单点失效问题,由于网关IP地址为唯一,将多个路由抽象为一个虚拟路由,使用一个IP地址。此IP地址不是物理IP地址,而是虚拟的IP地址,即VIP。在某个路由器出现故障情况下,不影响正常的路由工作。

VRRP说白了就是实现IP地址漂移的,是一种容错协议

keepalived高可用核心就是基于VRRP协议来实现

Keepalive架构体系

在Linux主机上以守护进程方式的实现

Keepalive架构体系图

原理:通过监测TCP(四层)、七层(Http)、加密协议(SSl)等,一旦发现不健康,就会发起系统调用system call或者发送邮件SMTP,通知vrrp stack 协议栈,进行vip抢占。而vrrp协议栈,和checkers(健康状态监测机制)是两个独立的机制,需要WatchDog进行看管

Keepalived是怎么样的架构体系:

Keepalived的架构体系是复杂的,我个人认为最核心的就是vrrp stack,它就是实现vrrp网络迁移的,但是为了实现vrrp网络迁移,我们要对它进行健康状态监测机制,这就是它内部核心模块checkers实现tcp、http、ssl、misc等等相关的状态监测机制;而它同时也会关联到IPVS wrapper实现IPVS内核模块的编写,从而实现lVS功能;同时健康状态监测机制要想关联vrrp协议栈,需要进行系统调用或者发送邮件的方式进行关联;另外万维组件就是Keepalived实现的I/O复用,包括内存管理单元、如何加载配置文件实现Keepalived的一些基本功能

用户空间核心组件:

vrrp stack:VIP消息通告,核心组件,实现vrrp功能,实现vip漂移

checkers:健康状态监测 Real Server,可以基于四层、七层、加密协议SSl

https://keepalived.org/doc/

http://keepalived.org/documentation.html

system call:实现 vrrp 协议状态转换时调用脚本的功能

SMTP:邮件组件

IPVS wrapper:生成 IPVS 规则

Netlink Reflector:网络接口

WatchDog:监控进程

控制组件(Control Plane):提供keepalived.conf 的解析器,完成Keepalived配置

IO复用器(Scheduler-I/O):针对网络目的而优化的自己的线程抽象

内存管理组件(Memory Mngt):为某些通用的内存管理功能(例如分配,重新分配,发布等)提供访问权限

3.keepalive安装和详细操作

 keepalived安装

Keepalived程序由C语言开发,轻量、性能强大。

可以使用yum方式进行安装,也可以使用编译安装,区别不大,建议使用yum安装

yum info keepalived

yum -y install keepalived

/usr/sbin/keepalived                     keepalived主指令文件

/etc/keepalived/keepalived.conf            keepalived主配置文件

/usr/lib/systemd/system/keepalived.service   相当于keepalived服务启停脚本

/usr/share/doc/keepalived-1.2.13/samples/   keepalived众多配置的模板

keepalived主配置文件详解

Global配置段

Vrrp配置段:vrrp_instance    vrrp synchonization

LVS 配置段

Keepalived配置高可用前提

①:主机名和hosts中定义的主机名保持一致

②:各个主机节点时间同步

③:Iptables和firewalld需要能放行

配置文件部分参数解释:

router_id:每个keepalived主机唯一标识,建议使用当前主机名,如果多节点重名可能会影响切换脚本执行

vrrp_skip_check_adv_addr:对所有通告报文都检查,会比较消耗性能,启用此配置后,

如果收到的通告报文和上一个报文是同一个路由器,则跳过检查,默认值为全检查

vrrp_strict :严格遵守VRRP协议,启用此项后以下状况将无法启动服务

①无VIP地址

②配置了单播邻居

③在VRRP版本2中有IPv6地址,开启动此项并且没有配置vrrp_iptables时会自动开启iptables防火墙规则,默认导致VIP无法访问,建议不加此项配置

vrrp_mcast_group4 224.0.0.18:指定组播IP地址范围:224.0.0.0到239.255.255.255,默认值:224.0.0.18

vrrp_iptables:此项和vrrp_strict同时开启时,则不会添加防火墙规则,如果无配置vrrp_strict项,则无需启用此项配置

Keepalived配置文件配置案例

①:配置主从keepalived主配置文件,完成在指定的网卡上绑定漂移IP

②:由于keepalived工作在抢占模式,配置如果需要手动调度为备节点,需降低优先级即可,另外在主节点和备节点的keepalived主配置文件中配置vrrp脚本,此脚本可以被keepalived实时调度

③:实现keepalived的双主模型

由于备份节点长时间处于备份状态,在某些生产环境,为了提高资源利用率,在某些情况可以新建instance,实现双主模型。

具体详细操作,鉴实验报告keepalived

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

使用 RisingWave、NATS JetStream 和 Superset 进行实时物联网监控

在物联网(IoT)背景下,处理实时数据会遇到一些特定的障碍,如边缘计算资源不足、网络条件限制、扩展性存在问题、设备间有多样性差异。要克服这些挑战,需要高效的边缘计算技术、强大的安全措施、标准化协议、可扩展的管理…

Pytorch数据结构:GPU加速

文章目录 一、GPU加速1. 检查GPU可用性:2. GPU不可用需要具体查看问题3. 指定设备4.将张量和模型转移到GPU5.执行计算:6.将结果转移回CPU 二、转移原理1. 数据和模型的存储2. 数据传输3. 计算执行4. 设备管理5.小结 三、to方法的参数类型 一、GPU加速 .…

html写一个登录注册页面

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>注册登录界面Ⅰ</title><link rel"stylesheet" href"https://cdnjs.cloudflare.com/ajax/libs/normalize/8.0.1/normalize.mi…

GA-SVM,基于GA遗传算法优化SVM支持向量机回归预测(多输入单输出)

基于遗传算法&#xff08;Genetic Algorithm, GA&#xff09;优化支持向量机&#xff08;Support Vector Machine, SVM&#xff09;用于回归预测是一个常见的任务。在这个任务中&#xff0c;我们使用GA来寻找SVM的最佳超参数配置&#xff0c;以最大化回归性能指标&#xff0c;例…

力控机器人原理及力控制实现

力控机器人原理及力控制实现 力控机器人是一种能够感知力量并具有实时控制能力的机器人系统。它们可以在与人类进行精准协作和合作时&#xff0c;将力传感技术&#xff08;Force Sensing Technology&#xff09;和控制算法&#xff08;Control Algorithm&#xff09;结合起来&a…

C++STL--排序算法

sort 使用快速排序,平均性能好O(nlogn),但最差情况可能很差O(n^2)。不稳定。 sort(v.begin(),v.end());//对v容器进行排序,默认升序 sort(v.begin(),v.end(),greater<int>());//降序排序对于支持随机访问的迭代器的容器&#xff0c; 都可以利用sort算法直接对其进行排序…

克罗地亚公司注册

克罗地亚是一个发达的资本主义国家&#xff0c;经济基础良好&#xff0c;旅游建筑造船和制药等产业发展水平较高&#xff0c;优质的基础设施&#xff0c;低成本的多语种和高技能劳动力&#xff0c;有力的地理环境&#xff0c;使旅游业发展充满活力&#xff0c;克罗地亚政府承诺…

vue+elementUI实现表格组件的封装

效果图&#xff1a; 在父组件使用表格组件 <table-listref"table":stripe"true":loading"loading":set-table-h"slotProps.setMainCardBodyH":table-data"tableData":columns"columns.tableList || []":ra…

重磅!天途推出平安校园管理平台

天途平安校园管理平台&#xff0c;是围绕校园安全事件开发的一款智能监控与巡逻系统。系统通过大疆机场、无人机和校园内的监控硬件等多端传输的视频和图片信息&#xff0c;经过 AI分析处理后形成告警信息并及时通知学校安保人员。 天途平安校园管理平台 平安校园管理平台优势 …

【深度学习】从基础原理到未来挑战的全面探索

深度学习的基本原理 深度学习&#xff0c;一种模拟人脑分析和处理数据的机器学习技术&#xff0c;已成为人工智能研究中最令人兴奋的进展之一。其核心在于构建和训练神经网络&#xff0c;这些网络由多个层次组成&#xff0c;每一层都能从输入数据中提取并转换特征。随着数据层层…

[Java线程池]ExecutorService|CompletionService的区别与选择

这段时间对业务系统做了个性能测试&#xff0c;其中使用了较多线程池的技术&#xff0c;故此做一个技术总结。 这次总结的内容比较多&#xff0c;主要是四个&#xff1a; ExecutorServiceCompletionServiceRunnableCallable 前两个是线程池相关接口&#xff0c;后两个是多线…

《手把手教你》系列基础篇(七十四)-java+ selenium自动化测试-框架设计基础-TestNG实现DDT - 上篇(详解教程)

1.简介 上一篇文章中宏哥简单的讲解了一下通过xml文件传递参数&#xff0c;这一篇宏哥讲解通过通过DataProvider传递参数&#xff0c;也就是我们常说的数据驱动测试。如何利用TestNG实现DDT&#xff08;数据驱动测试 Data Driver Test&#xff09;&#xff0c;什么是数据驱动测…

椋鸟数据结构笔记#8:二叉树的遍历、创建与销毁

萌新的学习笔记&#xff0c;写错了恳请斧正。 链式二叉树 这篇笔记我们讨论基于链式二叉树&#xff0c;其节点的数据结构如下&#xff1a; typedef int BTDatatype;typedef struct BTNode {BTDataType data;struct BTNode* left;struct BTNode* right; } BTNode;二叉树的遍历…

STM32CubeMX配置步骤详解六 —— 时钟及其它内部参数配置(1)

接前一篇文章&#xff1a;STM32CubeMX配置步骤详解五 —— 基础配置&#xff08;2&#xff09; 本文内容主要参考&#xff1a; STM32CUBEMX配置教程&#xff08;一&#xff09;基础配置-CSDN博客 野火STM32系列HAL库开发教程 —— 第12讲 STM32的复位和时钟控制&#xff08;第…

环形链表 - LeetCode 热题 25

大家好&#xff01;我是曾续缘&#x1f970; 今天是《LeetCode 热题 100》系列 发车第 25 天 链表第 4 题 ❤️点赞 &#x1f44d; 收藏 ⭐再看&#xff0c;养成习惯 环形链表 给你一个链表的头节点 head &#xff0c;判断链表中是否有环。 如果链表中有某个节点&#xff0c;可…

2-3 AUTOSAR ASW Runable可运行实体

返回总目录->返回总目录<- 目录 一、概述 二、RTE Event 一、概述 运行实体(Runnable Entity,RE)是一段可执行的代码,其包含实际实现的函数(具体的逻辑算法或者操作)。一个软件组件可以包含一个或者多个运行实体。 Runnable就是SWC中的函数,而在AutoSAR架构在被…

【云计算】云数据中心网络(一):VPC

云数据中心网络&#xff08;一&#xff09;&#xff1a;VPC 1.什么是 VPC2.VPC 的组成2.1 虚拟交换机2.2 虚拟路由器 3.VPC 网络规划3.1 VPC 数量规划3.2 交换机数量规划3.3 地址空间规划3.4 不同规模企业地址空间规划实践 4.VPC 网络高可靠设计4.1 单地域单可用区部署4.2 单地…

[StartingPoint][Tier1]Funnel

Task 1 How many TCP ports are open? (打开了多少个 TCP 端口&#xff1f;) # nmap -sS -T4 10.129.224.226 --min-rate 1000 2 Task 2 What is the name of the directory that is available on the FTP server? (FTP 服务器上可用的目录名称是什么&#xff1f;) $ n…

爬虫 新闻网站 以湖南法治报为例(含详细注释,控制台版) V3.0 升级 自定义查询关键词、时间段、粗略判断新闻是否和优化营商环境相关,避免自己再一个个判断

目标网站&#xff1a;湖南法治报 爬取目的&#xff1a;为了获取某一地区更全面的在湖南法治报的已发布的和优化营商环境相关的宣传新闻稿&#xff0c;同时也让自己的工作更便捷 环境&#xff1a;Pycharm2021&#xff0c;Python3.10&#xff0c; 安装的包&#xff1a;requests&a…