Keepalived 高可用集群详解和配置

news2024/9/19 19:44:07

Keepalived 高可用集群

集群类型

1、LB(Load Balance):负载均衡

LVS:四层负载均衡

HAProxy:七层/四层 负载均衡

nginx:七层负载均衡

(http/upstream,stream/upstream)

2、HA(High Availa bility):高可用集群

数据库、Redis

3、SPoF(Single Point of Failure):解决单点故障

HPC:High Performance Computing 高性能集群

集群实现高可用

建立冗余机制

1、active/passive:主/备

2、active/active:双主

3、active–>HEARTBEAT–>passive:心跳

4、active <–>HEARTBEAT <–>active:

VRRP 虚拟路由冗余

在现实的网络环境中,主机之间的通信都是通过配置静态路由(默认网关)来完成的,而主机之间的路由器一旦出现故障,就会通信失败。因此在这种通信模式下,路由器就会有单点瓶颈问题,为了解决这个问题,引入了VRRP协议(虚拟路由冗余协议)。

VRRP协议是一种容错的主备模式的协议,保证当主机的下一跳路由出现故障时,由另一台路由器来代替出现故障的路由器进行工作,通过VRRP可以在网络发生故障时透明的进行设备切换而不影响主机之间的数据通信。

VRRP可以将两台或多台物理路由器设备虚拟成一个虚拟路由器,这个虚拟路由器通过虚拟IP(一个或多个)对外提供服务,而在虚拟路由器内部是多个物理路由器协同工作

虚拟路由器:Virtual Router
虚拟路由器标识:VRID(0-255),唯一标识虚拟路由器
VIP:Virtual IP
VMAC:Virutal MAC(00-00-5e-00-01-VRID)

物理路由器:
	master:主设备
	backup:备用设备
	priority:优先级
	
通告:
	心跳
	优先级等
	周期性

工作方式:
	抢占式
	非抢占式

安全认证:
	无认证
	简单字符认证:预共享密钥
	MD5
	
工作模式:
	主/备:单虚拟路由器
	主/主:主/备(虚拟路由器1),备/主(虚拟路由器2)

VRRP角色如下
1、虚拟路由器:VRRP组中所有的路由器,拥有虚拟的IP+MAC(O0-00-5e-00-01-VRID)地址

2、主路由器(master):虚拟路由器内部通常只有一台物理路由器对外提供服务,主路由器是由选举算法产生,对外提供各种网络功能

3、备份路由器(backup):VRRP组中除主路由器之外的所有路由器,不对外提供任何服务,只接受主路由的通告,当主路由器挂掉之后,重新进行选举算法接替master路由器。

master路由器由选举算法产生,它拥有对外服务的VIP,提供各种网络服务,如ARP请求、数据转发、ICMP等等,而backup路由器不拥有VIP,也不对外提供网络服务;当master发生故障时,backup将重新进行选举,产生一个新的master继续对外提供服务

Keepalived 配置

Keepalived 基本配置

在调度机处配置,下载相关的软件:keepalived,ipvsamd(LVS)/HAProxy。

同一高可用集群内只能使用一种调度软件(LVS在Keepalived内的规则会与HAProxy冲突,导致服务启动失败)

全局配置
在这里插入图片描述

虚拟网段配置
在这里插入图片描述

实现VIP的通信

修改配置文件

进行添加或将两项都注释掉,都可进行通信(组播通信可开启两项,单播通信时需将注释掉)

......
 12#   vrrp_strict
 13    vrrp_garp_interval 0
 14    vrrp_gna_interval 0
 15    vrrp_mcast_group4 224.0.0.18
 16#   vrrp_iptables
 17 }
 ......

在这里插入图片描述

日志管理

在日志配置文件内指定keepalived日志类型

[root@ka1 keepalived]# vim /etc/sysconfig/keepalived
KEEPALIVED_OPTIONS="-D -S 6"

在这里插入图片描述

修改主日志文件内的配置

[root@ka1 keepalived]# vim /etc/rsyslog.conf

在这里插入图片描述

Keepalived 子配置文件生成

创建子配置文件:
在这里插入图片描述

在子配置文件内输入内容,如果子配置文件内内容错误,则会导致识别不到虚拟IP

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

抢占与非抢占

非抢占模式

修改配置文件
将两台设备都设置为备份设备
在这里插入图片描述

当一台设备宕机时,另一台设备接管VIP
效果演示:
在这里插入图片描述

抢占模式

修改配置文件
将两台设备都设置为备份设备
在这里插入图片描述

效果演示:
在这里插入图片描述

单播模式

防止数据报文过多导致调度机的负载过大

将 vrrp_strict 禁用才能使单播模式生效

在这里插入图片描述

修改配置文件:
在这里插入图片描述

效果演示:

[root@kal ~]# tcpdump -i eth0 -nn src host 172.25.254.10 and dst 172.25.254.20

在这里插入图片描述

设置邮箱通知

1、安装邮箱软件

[root@ka1 ~]# yum install mailx -y

2、获取设置邮箱的登录密码(以QQ邮箱为例)

在登录QQ邮箱之后,在主页面找到账号与安全(Windows版)

在这里插入图片描述

点击进入到新页面,往下滑找到安全设置
在这里插入图片描述

点击进入到新页面,页面最下方会有一个”生成授权码“
在这里插入图片描述

3、编辑 mail 配置文件

在配置文件末尾处配置

set from=邮箱地址	----发送至哪个账号
set smtp=smtp.qq.com
set smtp-auth-user=邮箱地址
set smtp-auth-password=lufwpklkkrctdgei
set smtp-auth=login
set ssl-verify=ignore
[root@ka1 ~]# echo test message | mail -s test 邮箱地址	----测试mail配置文件是否正确

在这里插入图片描述

4、编辑自动通知脚本文件

[root@ka1 keepalived]# vim /etc/keepalived/mail.sh

#!/bin/bash
mail_dest='2111234420@qq.com'

mail_send()
{
  mail_subj="$HOSTNAME to be $1 vip remove"
  mail_mess="`date +%F\ %T`:vrrp remove,$HOSTNAME change $1"
  echo "$mail_mess" | mail -s "$mali_subj" $mail_dest
}
case $1 in
  master)
  mail_send master
  ;;
  backup)
  mail_send backup
  ;;
  fault)
  mail_sed fault
  ;;
  *)
  exit 1
  ;;
esac

在这里插入图片描述

5、编辑 keepalive 配置文件

调用编辑好的脚本文件,在设备发生变化时发送通知至指定账号
在这里插入图片描述

演示效果:

开启服务,KA1自动抢占VIP,KA2成为备份
在这里插入图片描述
在这里插入图片描述

多主模式

两台设备互为主/备,一台设备上存在两个虚拟的路由器ID

修改 keepalived 配置文件

一台设备内存在两个 VRID ,生成两个 VIP 地址,互相主/备

KA1 调度机:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

KA2 调度机:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

IPVS高可用

LVS 高可用

1、LVS 配置为DR 模式

服务主机配置:

[root@server1 ~]# ip a a 172.25.254.100/32 dev lo	----RS主机添加 VIP 地址

关闭 RS 主机的VRP 应答功能,只接不发
[root@server1 ~]# echo 1 >/proc/sys/net/ipv4/conf/all/arp_ignore 
[root@server1 ~]# echo 1 >/proc/sys/net/ipv4/conf/lo/arp_ignore 
[root@server1 ~]# echo 2 >/proc/sys/net/ipv4/conf/lo/arp_announce 
[root@server1 ~]# echo 2 >/proc/sys/net/ipv4/conf/all/arp_announce 

2、在调度机处修改 Keepalived 的配置,添加 LVS 的规则

调度机下载 LVS 软件(ipvsadm):

[root@ka1 ~]# yum install ipvsadm -y	----安装 LVS 软件

修改 keepalived 配置文件:
在这里插入图片描述

3、演示效果

在这里插入图片描述

当一台 RS 主机宕机时,自动将宕机的设备规则移除:
在这里插入图片描述

未宕机时可访问两台服务器:
在这里插入图片描述

一台服务器宕机时只能访问一台:
在这里插入图片描述

HAproxy 高可用

使用脚本实现主从切换

脚本编写:

判断文件是否存在,不存在则输出值为0,存在则为1
#!/bin/bash
[ ! -f "/etc/test" ]

修改keepalived配置文件
在这里插入图片描述

调用脚本,当脚本的值为1时,将其权重降低30,从而达到切换主从的目的,当脚本值不为1时,其权重重新回到初始值
在这里插入图片描述

效果演示:

文件不存在时,VIP在 KA1上
在这里插入图片描述

文件存在时,VIP 漂移至 KA2 上
在这里插入图片描述
在这里插入图片描述

HAProxy 的高可用实现

注意:keepalived 配置文件内,LVS 的规则配置应注释掉;如果之前进行过 LVS 集群的配置,应将 RS 服务器的 arp 应答功能打开

1、调度机服务器下载 HAProxy

[root@ka1 ~]# yum install haproxy -y

2、修改 haproxy 配置文件

[root@ka2 ~]# vim /etc/haproxy/haproxy.cfg

在这里插入图片描述

3、修改调度机的内核参数

[root@ka2 ~]# vim /etc/sysctl.conf
net.ipv4.ip_nonlocal_bind = 1	----在末尾行添加

在这里插入图片描述

4、编辑脚本

[root@ka1 keepalived]# vim /etc/keepalived/test.sh
#!/bin/bash
killall -0 haproxy	----当 haproxy 服务关闭时输出值1

5、修改 keepalived 配置文件
在这里插入图片描述

效果演示:
在这里插入图片描述

关闭 haproxy 服务,VIP 自动漂移至 KA2
在这里插入图片描述

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

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

相关文章

fastapi之WebSockets

文章目录 WebSockets基本概念FastAPI 中的 WebSocket 支持WebSocket 应用示例示例 1: 简单的 WebSocket 连接解释 示例 2: 广播消息的 WebSocket 实现解释 客户端代码示例 完整示例项目结构服务器端代码 (main.py)解释 简单的前端客户端 (static/index.html)解释 测试 相关代码…

交通拥堵辅助与自动化

Traffic-Jam Assistance and Automation 交通拥堵辅助与自动化 Abstract Traffic jams are situations where a high degree of automation could give a large benefit to customers. In addition, the relatively simple situation of a traffic jam means that a high deg…

使用pytest+selenium编写网页UI自动化脚本和用例

1 UI自动化测试 UI自动化测试&#xff08;User Interface Automation Testing&#xff09;是一种通过编写脚本或使用自动化测试工具&#xff0c;对界面&#xff08;UI&#xff09;进行自动化测试的方法。原理主要是模拟用户打开客户端或网页的UI界面&#xff0c;自动化执行用户…

C语言学习——函数(数组作为函数参数)

目录 8.7数组作为函数参数 数组元素作函数实参 数组名作参数函数 8.7数组作为函数参数 我们知道可以用变量作函数参数&#xff0c;显然&#xff0c;数组元素也可以作函数实参&#xff0c;其用法与变量相同。此外&#xff0c;数组名也可以作实参和形参&#xff0c;传递的是数…

【区块链教程】如何使用自动化脚本创建小狐狸地址

在很多场景下&#xff0c;不管是撸毛也好&#xff0c;批量操作也好&#xff0c;都需要使用到大量的qianbao地址。 如何一键创建&#xff0c;也成为了很多人想学的技术。 创建地址的自动化脚本可以极大地简化在区块链开发和测试中的管理流程。以下是一个基本的流程和示例脚本&am…

知识竞赛中必答题环节竞赛规则有哪些设计方案

必答题环节被广泛用到各类知识竞赛活动中&#xff0c;往往被安排在第一环节&#xff0c;是知识竞赛中的热身环节。那么&#xff0c;常用的必答题环节规则应怎么设计呢&#xff1f;下面列出的这些大家可以参考一下。 1.可以分个人必答题和团队必答题。个人必答题可以分别记个人…

为什么要用static

前言 本文主要介绍C/C中的static&#xff0c;以及为什么要用static&#xff0c;别人的代码中有时会突然使用用static&#xff0c;看的一脸蒙圈&#xff0c;为什么要用static&#xff0c;我不用难道不行吗&#xff1f;对啊为什么呢&#xff1f; 正文 static是C/C中一个很重要…

浅试扫雷游戏(简易版)

目录 1. 扫雷游戏分析和设计 1&#xff09;扫雷游戏的功能说明 2&#xff09;游戏的分析和设计 2.扫雷游戏的代码实现 1. 扫雷游戏分析和设计 1&#xff09;扫雷游戏的功能说明 使用控制台实现经典的扫雷游戏游戏可以通过菜单实现继续玩或者退出游戏扫雷的棋盘是9*9的格子…

“前缀和”专题篇二

目录 和为K的子数组 和可被K整除的子数组 连续数组 矩阵区域和 和为K的子数组 题目 思路 我们可能想到的是&#xff0c;从头到尾扫描数组&#xff0c;然后分别计算以该位置为开始&#xff0c;一直到数组末尾&#xff0c;符合和为K的子数组&#xff0c;但是这种方法的时间复…

线上研讨会 | CATIA助力AI提升汽车造型设计

报名链接&#xff1a; 2024探索之旅第二季

Linux Shell基础常用脚本命令及应用案例

文章目录 常用的 Shell 命令1. 变量2. 注释3. 输出4. 输入5. 条件判断6. 循环7. 函数8. 运算9. 流程控制10. 文件和目录操作11. 错误处理 Shell 脚本应用案例1. Hello World 脚本2. 创建系统账户及设置密码3. 日志文件备份4. 一键部署 LNMP 环境5. 检查磁盘空间6. 自动安装软件…

Nginx反向代理的使用场景

Nginx Vue使用npm命令打包&#xff1a;npm run build Nginx的定位&#xff1a;主要用于做反向代理&#xff0c;一般都是用它来做前端页面的服务器&#xff0c;动态资源代理到后端服务器。这样做的好处是可以避免跨域请求带来的不便。 我们知道&#xff0c;在前端我们开发的时…

三、AI工作流(低代码)的趋势即将崛起,输入-按钮组件详解,带你轻松玩转按钮组件

对工作流感兴趣的小伙伴可以去试一试。&#x1f525;偷偷的告诉你&#xff0c;它的GPTo4.0 不要&#x1f4b0;。传送门&#xff1a;https://www.nyai.chat/chat?invitenyai_1141439 一、能用AI工作流介绍 能用AI-工作流是一个“低代码”工具、它也是个人或者中小企业的提效工…

C#语言基础速成Day07

“知止而后有定&#xff0c;定而后能静&#xff0c;静而后能安&#xff0c;安而后能虑&#xff0c;虑而后能得。” 目录 前言文章有误敬请斧正 不胜感恩&#xff01;||Day07 C#常见数据结构&#xff1a;1. 集合&#xff08;Collection&#xff09;1.1 **List<T>**1.2 **H…

MATLAB 样条插值

订阅专栏后,复制完整代码到MATLAB上面,即可获得跟本文相同的运行结果。 点击以下链接也可下载: https://download.csdn.net/download/callmeup/89635701 MATLAB插值代码 插值在MATLAB里面很简单,一个函数即可。 本文给出了已知点的坐标、待插值点的横坐标,可按要求插出来…

使用 Gradio 开发 ChatBot

Gradio 提供了 ChatInterface 组件&#xff0c;组件包括一个输入框、一个 ChatBox 区域、和一些按钮。同 interface&#xff0c;ChatInterface 通过一个处理函数进行处理&#xff0c;处理函数包括两个参数 message 和 history&#xff0c;message 是当前用户提交的问题&#xf…

[图解]需要≠需求-《分析模式》漫谈

1 00:00:00,760 --> 00:00:02,910 今天的《分析模式》漫谈 2 00:00:02,920 --> 00:00:04,180 我们来说一下 3 00:00:04,490 --> 00:00:06,490 需要不等于需求 4 00:00:10,490 --> 00:00:11,760 还是第一章 5 00:00:13,120 --> 00:00:15,020 这里 6 00:00:1…

[C#]实现GRPC通讯的服务端和客户端实例

最近要做两个软件之间消息的通讯&#xff0c;学习了一下GRPC框架的通讯。根据官方资料做了一个实例。 官方资料请参考&#xff1a;Create a .NET Core gRPC client and server in ASP.NET Core | Microsoft Learn 开发平台&#xff1a;Visual Studio 2022 开发前提条件&#x…

llama的神经网络结构;llama的神经网络结构中没有MLP吗;nanogpt的神经网络结构;残差是什么;残差连接:主要梯度消失

目录 解释代码 潜在问题和修正 结论 llama的神经网络结构 神经网络结构概述 举例说明 llama的神经网络结构中没有MLP吗 nanogpt的神经网络结构 1. 词嵌入层(Embedding Layer) 2. Transformer编码器层(Transformer Encoder Layer) 3. 层归一化(Layer Normalizat…

Linux文本处理常见工具

文章目录 文件内容查看查看文本文件内容cattacrevnl 查看非文本文件内容hexdumpodxxd 分页查看文件内容moreless 显示文本前后的行内容headtail文件描述符如果找到文件描述符 查看最新日志范例&#xff1a;找出IP地址的那一行 cut--按列抽取文本按分隔符按字符位置取网卡ip tr-…