Keepalived概念与安装部署过程

news2024/10/7 8:21:51

前言

目前互联网上主流高可用方案软件有keepalivedheartbeat,其中heartbeat是比较早期用来实现高可用软件的,而keepalived是目前轻量级,并且管理方便、易使用的高可用解决方案。

1.1 Keeplived高可用的功能

Keepalived是一个类似于工作在layer3, 4 & 7交换机制的软件,Keepalived软件有两种功能,分别是健康检查、VRRP冗余协议,keepalived是模块化设计,不同模块负责不同的功能。

1.2 Keeplived常见模块

Core:是keepalived的核心,它负责主进程的启动和维护,全局配置文件的加载解析等;
check负责keepalived健康检查,包括了各种健康检查方式,以及对应的配置的解析包括LVS的配置解析;
VRRP:VRRPD子进程,VRRPD子进程就是来实现VRRP协议

1.3 Keeplived的作用

Keepalived的作用是检测web服务器的状态,如果有一台web服务器、Mysql服务器宕机,或工作出现故障,Keepalived将检测到后,会将有故障的web服务器或者Mysql服务器从系统中移除,当服务器工作正常后Keepalived自动将web、Mysql服务器加入到服务器群中。

这样的好处在于不需要人工的干涉,keepalived会将这些工作自动完成,人工需要做的,只是修复出现故障的WEB或MYSQL服务器。

前面说到在keepalived的功能时说到,Keepalived是一个类似于工作在layer3, 4 & 7交换机制的软件。
下面说下在3,4,7层的原理

1.4 Keeplived在3,4,7层的实现原理

  1. 传输层:keepalived使用Layer3的方式工作时,keepalived会定期向服务器群的服务器发送一个ICMP的数据包(如果发现某台服务的IP地址无法ping通时),keepalived便会报告这台服务器失效,并将它从服务器集群中移除。(Layer3的方式是以服务器的IP地址是否有效作为服务器工作正常与否的标准。)
  2. 网络层Layer4主要以TCP端口的状态来决定服务器工作正常与否。如WEB服务器的服务端口一般是80,如果keepalived检测到80端口没有启动,则keepalived会将这台服务器从服务器群中移除。
  3. 应用层:Layer7工作在应用层,keepalived将根据用户设定检测服务器程序的运行是否正常,通过这个方式进行判定,如果与用户的设定不相符,则keepalived会将服务器从服务器群中移除。

keepalived的三个模块中,VRRP的模块是比较重要的,它的全称是Virtual Router Redundancy Protocol,也就是虚拟路由器冗余协议。一起来看下它的原理。


二. Keepalived VRRP的原理

2.1 VRRP原理一

  • VRRP由IETF提出,目的是为了解决局域网中配置默认网关的单点失效问题
  • VRRP广泛应用在边缘网络(用户使用的网络)中,它的设计目标是支持特定情况下IP数据流量失败转移不会引起混乱,允许主机使用单路由器,以及及时在实际第一跳路由器使用失败的情形下仍能够维护路由器间的连通性。

在现实的网络环境中,两台需要通信的主机大多数情况下并没有直接的物理连接。对于这样的情况,它们之间路由怎样选择?主机如何选定到达目的主机的下一跳路由,这个问题通常的解决方法有二种:

使用动态路由协议RIP、OSPF;
在主机上配置静态路由.

然而在主机上配置路态路由是非常不切实际的,因为管理、维护成本以及是否支持等诸多问题。配置静态路由就变得十分流行,但路由器(或者说默认网关default gateway)却经常成为单点,VRRP的目的就是为了解决静态路由单点故障问题。VRRP通过一竞选(election)协议来动态的将路由任务交给LAN中虚拟路由器中的某台VRRP路由器。

2.1 VRRP原理二

  • 通过VRRP技术可以将两台物理主机当成路由器,两台物理机主机组成一个虚拟路由集群,Master高的主机产生VIP,该VIP负责转发用户发起的IP包或者负责处理用户的请求,Nginx+Keepalived组合,用户的请求直接访问keepalived VIP地址,然后访问Master相应服务和端口。
  • 在VRRP虚拟路由器集群中,由多台物理的路由器组成,但是这多台的物理路由器并不能同时工作,而是由一台称为MASTER路由器负责路由工作,其它的都是BACKUP,MASTER并非一成不变,VRRP会让每个VRRP路由器参与竞选,最终获胜的就是MASTER。
  • MASTER拥有一些特权,例如拥有虚拟路由器的IP地址或者成为VIP,拥有特权的MASTER要负责转发发送给网关地址的包和响应ARP请求。
  • VRRP通过竞选协议来实现虚拟路由器的功能,所有的协议报文都是通过IP组播(multicast)包(组播地址 224.0.0.18)形式发送的。虚拟路由器由VRID(范围0-255)和一组IP地址组成,对外表现为一个周知的MAC地址。所以在一组虚拟路由器集群中,不管谁是MASTER,对外都是相同的MAC和VIP。客户端主机并不需要因为MASTER的改变而修改自己的路由配置。
  • 作为MASTER的VRRP路由器会一直发送VRRP组播包(VRRP Advertisement message),BACKUP不会抢占MASTER,除非它的优先级(Priority)更高。当MASTER不可用时(BACKUP收不到组播包时), 多台BACKUP中优先级最高的这台会抢占为MASTER。这种抢占是非常快速的,以保证服务的连续性。由于安全性考虑VRRP包使用了加密协议进行,基于VRRP技术,可以实现IP地址漂移,是一种容错协议,广泛应用于企业生产环境中。

三. 部署keepalived服务

在部署服务之前还需要将虚拟机恢复至初始化后开始操作

IP服务器系统服务
192.168.28.166Centos7.9Keepalived

有两种方式安装keepalived服务,一种是通过yum命令安装,另外一种是编译安装keepalived。
两种方式都进行演示。

3.1 编译安装Keeplived服务

3.1.1 在官网上下载压缩包

keepalived官网地址—点击这里

wget -c https://www.keepalived.org/software/keepalived-1.2.0.tar.gz -P /usr/src/

若遇到证书过期的情况,可以加上--no-check-certificate
在这里插入图片描述

wget -c https://www.keepalived.org/software/keepalived-1.2.0.tar.gz -P /usr/src/ --no-check-certificate

3.1.2 将压缩包解压

[root@localhost ~]# cd /usr/src/
[root@localhost src]# tar xf keepalived-1.2.0.tar.gz 
[root@localhost src]# cd keepalived-1.2.0/
[root@localhost keepalived-1.2.0]# ls
AUTHOR     configure     COPYING  INSTALL     keepalived.spec.in  README
bin        configure.in  doc      install-sh  lib                 TODO
ChangeLog  CONTRIBUTORS  genhash  keepalived  Makefile.in         VERSION

接下来需要安装编译时所需要的软件包:gcc gcc-c++ make cmake openssl openssl-devel popt-devel等。

3.1.3 下载所需编译软件包

yum install -y gcc gcc-c++ make cmake openssl openssl-devel  popt-devel

下载好之后就可以开始预编译,以及编译安装了

3.1.4 编译并安装

./configure --prefix=/usr/local/keepalived/ --with-kernel_dir=/usr/src/kernels/3.10.0-514.el7.x86_64/
make -j4 && make -j4 install 

编译之后可以用echo $?进行判断上一条命令执行是否正确。

3.1.5 复制keepalived文件到对应的目录

cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/
cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
mkdir -p /etc/keepalived
cp /usr/local/keepalived/sbin/keepalived /usr/sbin/

3.1.6 启动服务

keepalived

一般情况下WEB服务或者MySQL服务的机器上都需要部署keepalived,作为一个服务器集群可用来做替换,实现高可用的方案;因此还需要在配置文件中添加相关的内容,具体业务具体内容。


3.2 yum安装Keepalived

yum安装的方式就比较快捷且容易

3.2.1 安装keepalived

yum install keepalived.x86_64 -y

3.2.2 修改配置文件

vim /etc/keepalived/keepalived.conf

! Configuration File for keepalived

#全局定义块
global_defs {
   notification_email {
   #指定keepalived在发生切换时需要发送email到的对象,一行一个;
     acassen@firewall.loc     
   }
   #指定发件人
   notification_email_from Alexandre.Cassen@firewall.loc
   #指定smtp服务器地址
   smtp_server 127.0.0.1
   #指定smtp连接超时时间
   smtp_connect_timeout 30
   #运行keepalived机器的名称
   router_id LVS_DEVEL
}

#VRRP实例定义块	
vrrp_instance VI_1 {
	#设置主机状态,MASTER|BACKUP
    state MASTER
	#对外提供服务的网络接口,要与本地的通信的接口一致
    interface ens32
    #VRID标记 ,路由ID,可通过tcpdump命令查看
    virtual_router_id 51
    #优先级,高优先级竞选为master
    priority 100
    #健康检查间隔,默认1秒
    advert_int 5
     #设置认证
    authentication {
    	#认证方式
        auth_type PASS
        #认证密码
        auth_pass 1111
    }
    #设置vip
    virtual_ipaddress {
    		#IP段与本地的路由一致
            192.168.28.188
    }
}

3.2.3 启动服务

systemctl start  keepalived.service
[root@localhost ~]# ps -ef|grep keepalived
root       9318      1  0 17:06 ?        00:00:00 /usr/sbin/keepalived -D
root       9319   9318  0 17:06 ?        00:00:00 /usr/sbin/keepalived -D
root       9320   9318  0 17:06 ?        00:00:00 /usr/sbin/keepalived -D
root       9360   5025  0 17:07 pts/0    00:00:00 grep --color=auto keepalived

生产环境使用Keepalived正常运行,共启动3个进程,一个是父进程,负责监控其子进程,一个是VRRP子进程,另外一个是Checkers子进程。

总结

keepalived的概念会比较多,需要先将其消化并且知道如何部署,下一篇将结合keepalived与nginx一起使用,让keepalived服务能够基于设定的服务实现高可用的方案。如觉得内容还行的,可以点赞支持一下!
在这里插入图片描述

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

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

相关文章

半监督学习经典工作:边缘生成对抗网络(MarginGAN)

来源:投稿 作者:小灰灰 编辑:学姐 论文标题:MarginGAN: Adversarial Training in Semi-Supervised Learning 论文链接: https://papers.nips.cc/paper/2019/file/517f24c02e620d5a4dac1db388664a63-Paper.pdf 代码链接&#xf…

ShardingCore安装笔记

由于本人采用Visual Studio的nuget管理器安装ShardingCore经常出现网络错误的问题,所以采用离线包的方式安装插件。 nueget包下载地址:NuGet Gallery | ShardingCore 7.7.1.8 ShardingCore使用版本7.7.1.7 1、下载各种依赖文件,并存放到系…

openTCS分析

一、openTCS概览 1. openTCS操作流程 打开ModelEditor设置点、路线、装货卸货等信息并保存模型打开Kernel和KernelControlCenter在ModelEditor上传模型打开KernelControlCenter设置车辆信息打开OperationsDesk打开OperationsDesk设置小车模式为可利用,并创建订单 …

USB 断开检测

文章目录 USB 断开检测带 Vbus 检测功能的 USB 设备断开不带 Vbus 检测功能的 USB 设备断开USB 设备端断开的检测USB 主机端断开的检测低速/全速设备高速设备 USB 断开检测 USB 主机和 USB 设备同样需要具有检测断开的能力。 USB 主机如果不能检测到 USB 设备的移除将会导致其…

测试虚拟驱动vivi

测试虚拟驱动vivi 文章目录 测试虚拟驱动vivi安装xawtv方法1方法2测试USB摄像头 测试虚拟摄像头vivi1.确定ubuntu的内核版本2. 去www.kernel.org下载同版本的内核修改Makefile测试体验 安装xawtv 方法1 sudo apt-get install xawtv方法2 源码xawtv-3.95.tar.gz: http://www.…

「2023最新」「阿米洛 VARMILO」双模机械键盘使用指南(快捷键组合)

前言 在说明书找不到的时候却需要使用键盘的某些特性时查一下 以阿米洛 minilo 尤加利为例 主要快捷键组合 开机 2 秒内连续敲击空格键三下,数字 1 或 2 或 3 键灯闪烁,键盘开机重新配对 长按 5 秒 Fn Q / W / E 键 (分别对应数字 1 / 2…

《vector的一些OJ》

本文主利用我们的vector来解决一些OJ题 前三个题目很类似,分别为 一个数字只出现一次,其他数字都出现两次两个数字只出现一次,其他数字都出现两次一个数字只出现一次,其他数字都出现三次 文章目录 1、[一个只出现一次的数字&#…

vue3:自定义指令

一、理解vue指令 1.1、指令 在 vue 中提供了一些对于页面和数据更为方便的输出&#xff0c;这些操作就叫做指令&#xff0c;以 v-xxx 表示&#xff0c;比如 html 页面中的属性 <div v-xxx ></div>。自定义指令很大程度提高了开发效率&#xff0c;提高了工程化水平…

Makefile基础教程(伪目标)

文章目录 前言一、伪目标概念二、进一步了解伪目标三、不使用.PHONY来定义伪目标总结 前言 本篇文章将讲解Makefile中的伪目标&#xff0c;Makefile的目标在前面的文章中我们已经讲解了那么这篇文章我们就来讲讲伪目标。 一、伪目标概念 Makefile 伪目标是一类特殊的目标&am…

手机摄影(四)

第8章 人物拍摄 平拍显亲切 如果侧拍好看&#xff0c;可以选择 局部自拍表现神秘&#xff08;比如嘴唇&#xff0c;眼睛&#xff0c;锁骨&#xff0c;要足够惊艳&#xff09; 技巧&#xff1a; 简单背景适合人像和镜子回头&#xff08;幅度不能太大&#xff09;小清新&…

《NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis》论文精读

Abstract 我们提出了一种方法&#xff0c;通过使用稀疏的输入视图集优化底层连续体场景函数&#xff0c;实现了合成复杂场景新视图的最先进结果。我们的算法使用全连接(非卷积)深度网络表示场景&#xff0c;其输入是单个连续的5D坐标(空间位置(x, y, z)和观看方向(θ&#xff…

C++系列五:输入/输出

C输入输出 1. 输入2. 输出3. 格式化输出4. 总结 1. 输入 输入是指从外部源获得数据的过程&#xff0c; C中可通过键盘或文件等外部源来获取输入数据。 &#xff08;1&#xff09;cin cin是C标准库中的一个输入流对象&#xff0c;用于从标准输入设备&#xff08;通常是键盘&a…

如何评价滤波器的去噪效果?

假如使用两种滤波器&#xff0c;那么滤波效果如何去评价1&#xff1f; 为了能够得到高质量的去噪后信号&#xff0c;需要对滤波器的滤波效果进行评价&#xff0c;选取去噪效果最好的滤波器对原始信号进行去噪处理。 一般使用信噪比和峰值信噪比对滤波器进行量化评价&#xff0c…

Docker 基础实战:环境搭建、容器、仓库、镜像

文章目录 Docker 基础实战环境搭建容器启动容器新建并启动容器终止容器启动已终止容器创建守护态容器 容器日志查看日志日志驱动 进入容器docker attachdocker exec 容器信息docker psdocker inspectdocker topdocker stats 删除容器容器快照导出快照导入快照 仓库Docker Hub本…

软考--快速掌握七层模型与各种协议的划分

目录 协议族 网络层涉及的协议 传输层涉及的协议 应用层涉及的协议 协议族 认识几个协议族&#xff0c;所谓协议族就是说他不是单一的协议。而是很多协议拼在一起的。 TCP/IP协议族是internet的标准协议族&#xff0c;所以使用广&#xff0c;但是tcp/ip协议族传输效率是比较…

面试题:String,StringBuilder和StringBuffer的区别

面试题&#xff1a;String&#xff0c;StringBuilder和StringBuffer的区别 一、String 1、String是一个长度不可变的字符序列&#xff0c;底层是一个被final修饰的char[]数组。 2、任何对String类型进行改变的操作实际上都是重新生产一个新的String对象&#xff0c;然后将指…

micro-app在vue-element-admin中一些使用研究

1、简述 本文承接上一篇micro-app在vue-element-admi中的搭建&#xff0c;对micro-app在vue-element-admin中的一些平时开发中常用的功能做了一些研究。本文代码 2、路由 关于路由&#xff0c;这边从两方面进行研究&#xff0c;一方面是对菜单的配置&#xff0c;另一方面是页…

❤ 个人博客的搭建和设置

❤ 个人博客的搭建和设置 闲暇时候自己试着做了一个自己的个人博客&#xff0c;博客使用的Github进行托管&#xff0c;还在阿里云买了属于自己的域名 具体步骤如下 1、登陆自己的博客账号&#xff0c;新建个人主页的仓库 2、到了我们的名字设置&#xff0c;格外注意&#xf…

Leetcode刷题之两两交换链表中的结点和相交链表

只有把抱怨环境的心情&#xff0c;化为上进的力量&#xff0c;才是成功的保证。 ——罗曼罗兰目录 &#x1f349;一.相交链表 &#x1f490;1.双指针 &#x1f34d;2.计算长度加双指针 &#x1f352;二.两两交换链表中的结点 &#x1f34c;1.迭代 &#x1f349;一…

【Golang】多线程下载器的实现

〇、前言 多线程下载&#xff0c;顾名思义就是对一个文件进行切片访问&#xff0c;等待所有的文件下载完成后在本地进行拼接成一个整体文件的过程。 因此可以利用 golang 的多协程对每个分片同步下载&#xff0c;之后再合并且进行md5校验或者总长度校验。 一、请求资源 下载…