Linux-Keepalived(VRRP协议)高可用集群搭建

news2024/11/26 17:49:15


Linux-Keepalived(VRRP协议)高可用集群搭建

  • 一、VRRP简介
    • 1.1 什么是VRRP?
    • 1.2 keepalived是什么?
    • 1.3 keepalived工作原理
  • 二、实操配置过程
    • 2.1 试验模型
    • 2.2. Keepalived监控和维护VRRP集群的步骤
      • 2.2.1 安装keepalived
      • 2.2.2 配置`keepalived.conf`文件
        • 2.2.2.1 master配置
        • 2.2.2.2 backup配置
      • 2.2.3 启动keepalived
  • 三、keepalived配置文件说明
    • 3.1 global_defs 全局配置
    • 3.2 vrrp_script区域
    • 3.3 vrrp_instance区域

参考链接:Keepalived高可用集群

一、VRRP简介

1.1 什么是VRRP?

  VRRP(Virtual Router Redundancy Protocol)是虚拟路由器冗余协议,用于实现网络设备的冗余备份和负载均衡,以提高网络的可靠性和稳定性。
  在VRRP中,一组路由器形成一个虚拟路由器,虚拟路由器的IP地址是由虚拟路由器中的一个路由器的物理接口IP地址和虚拟IP地址组成的。当虚拟路由器的物理接口IP地址失效时,其他路由器将接管该虚拟路由器的IP地址,并继续提供路由服务。
  VRRP的主要目的是在一个网络中提供冗余的路由。当一个三层网络设备或服务器出现故障时,VRRP可以确保网络仍能正常工作。VRRP通过在这些设备之间使用IP组播或单播通信来实现冗余。它可以确保在网络中有多个物理节点时,且在某些节点发生故障时仍能保持服务。
  主要优点是提高了网络的可靠性,因为当主路由器出现故障时,备份路由器可以迅速接管网络服务,避免了网络中断。此外,VRRP还可以实现负载均衡,将数据流量分配到多个路由器上,提高了网络的性能。
  需要注意的是,VRRP需要在路由器上配置相应的参数和规则,以确保其正常工作。同时,在配置VRRP时,需要考虑网络拓扑、设备性能等因素,以确保网络的稳定性和可靠性。

回到目录

1.2 keepalived是什么?

  Keepalivedkeepalived是集群管理中保证集群高可用的一个服务软件,它的作用是检测web服务器的状态。它是Linux内核中的一个组件,用于实现虚拟路由冗余协议(VRRP)
  Keepalived负责监控和维护一个VRRP集群,以确保所有VRRP实例都在线并能相互通信。如果有一台服务器死机,或工作出现故障,keepalived将检测到,并将有故障的服务器从系统中剔除,当web服务器工作正常后,自动将web服务器加入到服务器集群中。解决了静态路由的单点故障问题。

回到目录

1.3 keepalived工作原理

  N台提供相同功能的路由器组成一个路由器组,这个组里面有一个master和多个backup,master上面有一个对外提供服务的vip,master不断向backup发送心跳信息,告诉backup自己还活着,当backup收不到心跳的时候就认为master已经宕机,就需要根据VRRP的优先级来选举一个backup当master,从而保证高可用。
keepalived主要有三个模块:

  • core模块:为keepalived的核心,负责进程的启动,维护,以及全局配置文件的加载和解析。
  • check模块:负责健康检查,包括常见的各种检查方式。
  • vrrp模块:是实现VRRP协议的。

回到目录

二、实操配置过程

2.1 试验模型

1
说明:通过Keepalived监控和维护一个VRRP集群,包含虚拟机1(11.11.1.111)和虚拟机2(11.11.1.113)这两台独立主机,设置其虚拟化IP地址为11.11.1.117,其中虚拟机1(11.11.1.111)为master实例,如果master实例出现故障,将由另一个backup健康实例来接管故障实例的工作。

回到目录

2.2. Keepalived监控和维护VRRP集群的步骤

2.2.1 安装keepalived

   master和backup均需要安装keepalived,执行命令:

# 如果服务器操作系统是debian系统,执行下面命令
apt install keepalived -y
# 如果服务器操作系统是其他linux系统,执行下面命令
yum -y install keepalived 

1

2.2.2 配置keepalived.conf文件

   进入系统的/etc/keepalived目录下修改keepalived.conf文件:更多配置文件说明,点击跳转
配置详解:

! Configuration File for keepalived //标记
global_defs { //global配置模块
	router_id director1 //master为director1,辅助backup修改为director2 
}
vrrp_instance VI_1 {
	state BACKUP //禁止抢占
	nopreempt
	interface ens33 //VIP绑定的网络接口
	virtual_router_id 80 //master和backup一致
	priority 100 //优先级,可以决定哪个是master,辅助按顺序递减改为50
	advert_int 1
	authentication {
		auth_type PASS //关于安全的配置,只有type和pass相同,才在一个组里 ​ 
		auth_pass 1111 ​
	 }
		virtual_ipaddress{ //指虚拟ip
			11.11.1.117
		}
	}

这里的interface(IP版本的网络接口),可以通过命令:ip addr show来查看,该命令将显示系统中所有网络接口的详细信息,包括物理接口的IP地址、MAC地址等。物理接口通常以类似于 eth0、wlan0、ens 等名称标识。
1

2.2.2.1 master配置

master配置内容:vim /etc/keepalived/keepalived.conf

! Configuration File for keepalived
global_defs {
   router_id director1
}
vrrp_instance VI_1 {
    state MASTER
    interface ens192
    virtual_router_id 80
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        11.11.1.117
    }
}

1

2.2.2.2 backup配置

backup配置内容:vim /etc/keepalived/keepalived.conf

! Configuration File for keepalived
global_defs {
   router_id director1
}
vrrp_instance VI_1 {
    state BACKUP
    interface ens192
    virtual_router_id 80
    priority 50
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        11.11.1.117
    }
}

2

回到目录

2.2.3 启动keepalived

  配置完毕后,检查haproxy的负载均衡是否启动正常,一切准备就绪后,启动keepalived

  • master机(11.11.1.111):
    1. 启动keepalived,执行命令:systemctl start keepalived
    2. 查看keepalived状态,执行命令:systemctl status keepalived
      2
    3. 在master启动keepalived后,需要查看ip,执行命令:ip a
      在ens192接口会出现111.11.1.117的虚拟IP(在backup并没有新增的ip出现)
      3
  • backup机(11.11.1.113):
    1. 启动keepalived,执行命令:systemctl start keepalived
    2. 查看keepalived状态,执行命令:systemctl status keepalived
    3. 在master启动keepalived后,需要查看ip,执行命令:ip a
      在ens192接口并没有新增的ip出现(master机会出现111.11.1.117的虚拟IP)
      4
  • master服务器宕机测试
    1. 停止master上的keepalived服务,执行命令:systemctl stop keepalived
    2. 然后查看ip(执行命令:ip a),发现虚拟ip不存在了。
      1
    3. 此时查看backup机的ip,执行命令:ip a,此时可以发现虚拟ip:11.11.1.117
      1

回到目录

三、keepalived配置文件说明

keepalived配置文件:keepalived.conf。里面主要包括以下几个配置区域,分别是:

  • global_defs 全局配置
  • static_ipaddress 静态路由配置
  • vrrp_script 检测脚本
  • vrrp_instance 定义高可用相关的配置
  • virtual_server 定义配置服务器

3.1 global_defs 全局配置

global_defs {
   notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
   vrrp_skip_check_adv_addr
   vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}
  • notification_email:故障发生时给谁发邮件通知
  • notification_email_from:通知邮件从哪个地址发出
  • smtp_server:通知邮件的smtp地址
  • smtp_connect_timeout:连接smtp服务器的超时时间
  • enable_traps:开启SNMP陷阱
  • router_id:标志本节点的字符串,通常为ip地址,故障发生时邮件会通知到

回到目录

3.2 vrrp_script区域

  用来做健康检查的,当检查失败时会将vrrp_instance的priority减少相应的值。

vrrp_script check_haproxy {
        script "/etc/keepalived/check_haproxy_status.sh"
        interval 5
        weight  -20
}
  • script:自己写的的监测脚本
  • interval 5:每5s监测一次
  • weight -20:监测失败,则相应的vrrp_instance的优先级会减少20个点

回到目录

3.3 vrrp_instance区域

  定义当前服务器的内容​

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.200.16
    }
     track_script {
        check_haproxy
        }
}
  • state:只有MASTER和BACKUP。MASTER为工作状态,BACKUP是备用状态。
  • interface:网卡接口,可通过ip addr查看自己的网卡接口。
  • virtual_router_id :虚拟路由标志,同组的virtual_router_id 应保持一致,它决定多播的mac地址
  • priority:设置本节点的优先级,优先级高的为master
  • advert_int:MASTER和BACKUP同步检查的时间间隔
  • virtual_ipaddress:虚拟ip

回到目录

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

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

相关文章

力扣算法-Day1

160. 相交链表 给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回 null 。 示例 1: 输入:intersectVal 8, listA [4,1,8,4,5], listB [5,6,1,8,4,5], skipA 2, s…

嵌入式开发必须学习qt吗?

嵌入式开发必须学习qt吗? 在开始前我有一些资料,是我根据自己从业十年经验,熬夜搞了几个通宵,精心整理了一份「 嵌入式的资料从专业入门到高级教程工具包」,点个关注,全部无偿共享给大家!&#…

STM32位带

GPIO_SetBits(GPIOF,GPIO_Pin_9);修改为PFout(9)1; GPIO_ResetBits(GPIOF,GPIO_Pin_9);修改为PFout(9)0; 位带的定义: 支持了位带操作后,可以使用普通的加载/存储指令来对单一的比特进行读写。在CM3 中,有两个区中实现了位带。其中一个是S…

Flink系列之:Checkpoints 与 Savepoints

Flink系列之:Checkpoints 与 Savepoints 一、概述二、功能和限制 一、概述 从概念上讲,Flink 的 savepoints 与 checkpoints 的不同之处类似于传统数据库系统中的备份与恢复日志之间的差异。 Checkpoints 的主要目的是为意外失败的作业提供恢复机制。 …

python实现元旦多种炫酷高级倒计时_附源码【第19篇—python过元旦】

文章目录 🌍python实现元旦倒计时 — 初级(控制台)⛅实现效果🌋实现源码🌜源码讲解 🌍python实现元旦倒计时 — 中级(精美动态图)⛅实现效果🌋实现源码🌜源码讲解 🌍python实现元旦倒计时 — 高…

中北大学 软件构造 U+

作业1 1.数据类型可分为两类:(原子类型) 、结构类型。 2.(数据结构)是计算机存储、组织数据的方式,是指相互之间存在一种或多种特定关系的数据元素的集合 3.代码重构指的是改变程序的(结构)而不改变其行为,以便提高代码的可读性、易修改性等。 4.软件实…

【经典LeetCode算法题目专栏分类】【第11期】递归问题:字母大小写全排列、括号生成

《博主简介》 小伙伴们好,我是阿旭。专注于人工智能AI、python、计算机视觉相关分享研究。 ✌更多学习资源,可关注公-仲-hao:【阿旭算法与机器学习】,共同学习交流~ 👍感谢小伙伴们点赞、关注! 《------往期经典推荐--…

设计模式----解释器模式

一、简介 解释器模式使用频率并不高,通常用来构建一个简单语言的语法解释器,它只在一些非常特定的领域被用到,比如编译器、规则引擎、正则表达式、sql解析等。 解释器模式是行为型设计模式之一,它的原始定义为:用于定义…

GIT具体配置步骤详解

GIT配置具体步骤如下 SDK 使用 Repo 工具管理,拉取 SDK 需要配置安装 Repo 工具。 Repo is a tool built on top of Git. Repo helps manage many Git repositories, does the uploads to revision control systems, and automates parts of the development workf…

4.svn版本管理工具使用

1. 什么是SVN 版本控制 它可以记录每一次文件和目录的修改情况,这样就可以借此将数据恢复到以前的版本,并可以查看数据的更改细节! Subversion(简称SVN)是一个自由开源的版本控制系统。在Subversion管理下,文件和目录可以超越时空 SVN的优势 统一的版本号 Subversi…

MySQL子查询、WITH AS、LAG查询统计数据实战

需求 给出一个比较常见的统计类业务需求:统计App(包括iOS和Android两大类)每日新注册用户数、以及累计注册用户数。 数据库采用MySQL,根据上面的需求,不难设计表如下: create table os_day_count(stat_d…

【必读】从MII到RGMII,一文了解以太网PHY芯片不同传输接口信号时序!

1、概述 不管是使用FPGA还是ARM,想要实现以太网通信,都离不开以太网PHY芯片,其功能如下所示,FPGA或者ARM将以太网数据发送给PHY芯片,PHY会将接收数据转换成模拟的差分信号传输到RJ45座子,最后通过网线与CPU…

数据库之MySQL的介绍

操作系统: windows:win10、win11、win7、windows Server2016 Linux/Unix :红帽(RedHat)、Bebian、SUSE MacOS Linux系统:CantOS(yum、dnf)、Ubuntu(apt、apt—get&am…

IP应用场景的规划

IP地址作为互联网通信的基石,在现代社会中扮演着至关重要的角色。本文将深入探讨IP地址在不同应用场景中的规划与拓展,探讨其在网络通信、安全、商业、医疗和智能城市等领域的关键作用与未来发展趋势。 IP地址的基本原理 IP地址是分配给网络上设备的数…

Odoo16 实用功能之Form视图详解(表单视图)

目录 1、什么是Form视图 2、Form视图的结构 3、源码示例 1、什么是Form视图 Form视图是用于查看和编辑数据库记录的界面。每个数据库模型在Odoo中都有一个Form视图,用于显示该模型的数据。Form视图提供了一个可编辑的界面,允许用户查看和修改数据库记…

TokenFlow详解

https://github.com/omerbt/TokenFlow/issues/25 https://github.com/omerbt/TokenFlow/issues/31 https://github.com/omerbt/TokenFlow/issues/32 https://github.com/eps696/SDfu register_extended_attention_pnp1. 为所有BasicTransformerBlock layer的attn1重构forward2.…

MySQL 数据库系列课程 05:MySQL命令行工具的配置

一、Windows启动命令行工具 (1)打开 Windows 的开始菜单,找到安装好的 MySQL,点击MySQL 8.0 Command Line Client - Unicode,这个带有 Unicode 的,是支持中文的,允许在命令行中敲中文。 &…

C++的一些零散小知识

不定时更新一些 文章目录 1、空指针nullptr的类型为std::nullptr_t2、函数定义中,如果不需要使用参数的值,可以省略参数名3、静态成员变量在C17之后可以直接在类内定义并初始化了 1、空指针nullptr的类型为std::nullptr_t 一个毫无意义的例子&#xff1…

Python自动化办公,又双叒增加功能了!

大家好,这里是程序员晚枫,今天给大家分享一下Python自动化办公,最近更新的功能。 以下代码,全部都可以免费使用哦~! 彩色的输出 有没有觉得python自带的无色输出看腻了?增加了彩色输出的功能,可以实现无痛替换。 上面效果的实现代码如下,👇 自动收发邮件 这个12月发…

Python字符串处理全攻略(三):常用内置方法轻松掌握

目录 引言Python字符串常用内置方法str.index()功能介绍语法注意事项总结 str.startswith()功能介绍语法示例注意事项 str.expandtabs()功能介绍语法示例注意事项总结 str.splitlines()功能介绍语法示例注意事项总结 str.swapcase()功能介绍语法示例注意事项 结束语 引言 欢迎…