Keepalived 高可用集群详解和配置

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_strict13    vrrp_garp_interval 014    vrrp_gna_interval 015    vrrp_mcast_group4 224.0.0.1816#   vrrp_iptables17 }......

在这里插入图片描述

日志管理

在日志配置文件内指定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 inmaster)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.rhkb.cn/news/404128.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++ 设计模式——工厂方法模式

工厂方法模式 工厂方法模式主要组成部分代码实现工厂方法模式模式的 UML 图工厂方法模式 UML 图解析优点和缺点适用场景 工厂方法模式 工厂方法模式是一种创建型设计模式&#xff0c;它通过定义一个接口用于创建对象&#xff0c;但由子类决定实例化哪个类。与简单工厂模式不同…

Spring项目:文字花园(三)

一.实现博客详情 1.后端逻辑代码 controller层添加方法&#xff08;根据博客id查看博客详情&#xff09; RequestMapping("/getBlogDetail")public Result<BlogInfo> getBlogDetail(Integer blogId){log.info("getBlogDetail, blogId: {}", blogId…

vue 后台管理 之 状态管理 vuex 的使用

幸福是一种能力 文章目录 一、数据驱动视图二、VueX 数据公共池 一、数据驱动视图 我们都知道 vue 之所以好用&#xff0c;是因为官方帮我们做了数据驱动视图初始化时将数据和视图进行绑定&#xff0c;通过 watcher 来监听数据的变化&#xff0c;当数据变化时&#xff0c;会触…

这三大创意神器,一个不用就是错过了一个小目标!

【导语】在这个充满无限可能的数字时代&#xff0c;创意成为了推动我们前行的强大动力。但你是否曾因视频背景杂乱无章而苦恼&#xff1f;是否渴望将静态图片瞬间赋予生命&#xff1f;又或是对模糊照片中的珍贵瞬间束手无策&#xff1f;今天&#xff0c;就让我们揭秘三大变态且…

Linux搭建环境:从零开始掌握基础操作(二)

​ ​ 您好&#xff0c;我是程序员小羊&#xff01; 前言 软件测试第一步就是搭建测试环境&#xff0c;如何搭建好测试环境&#xff0c;需要具备两项的基础知识&#xff1a; 1、Linux 命令: 软件测试第一个任务, 一般都需要进行环境搭建, 一部分&#xff0c;环境搭建内容是在服…

Your local changes would be overwritten by merge git

方法二 直接覆盖本地的代码&#xff0c;放弃自己本地的改动&#xff0c;只保留服务器端代码 直接回退到上一个版本&#xff0c;再进行pull。 【步骤】 直接 VCS -> Git -> Reset HEAD… 选择需要的reset模式&#xff1a;hard&#xff08;即放弃本地代码&#xff0c;新修…

JavaScript基础——闭包

闭包简介 闭包的作用 闭包可以保留变量的状态 闭包可以让变量私有化 闭包的缺点 闭包简介 在JavaScript中&#xff0c;重复声明同一个变量会导致变量冲突&#xff0c;在这个时候可以使用闭包创建独立的执行环境。 在JavaScript中&#xff0c;闭包是指封闭的执行环境&#xff…

【图像去噪】论文精读:Toward Convolutional Blind Denoising of Real Photographs(CBDNet)

文章目录 前言Abstract1. Introduction2. Related Work2.1. Deep CNN Denoisers2.2. Image Noise Modeling2.3. Blind Denoising of Real Images 3. Proposed Method3.1. Realistic Noise Model3.2. Network Architecture3.3. Asymmetric Loss and Model Objective3.4. Trainin…

Spring IoCDI(下)—DI的尾声

我们之前学习了控制反转IoC&#xff0c;接下来就开始学习依赖注入DI的细节。 依赖注入是一个过程&#xff0c;是指IoC容器在创建Bean时&#xff0c;去提供运行时所依赖的资源&#xff0c;而资源指的就是对象。我们使用 Autowired 注解&#xff0c;完成依赖注入的操作。简单来说…

使用docker compose一键部署redis服务

使用docker compose一键部署redis服务 1、创建安装目录 mkdir /data/redis/ -p && cd /data/redis2、创建docker-compose.yml文件 version: 3 services:redis:image: registry.cn-hangzhou.aliyuncs.com/xiaopangpang/redis:7.0.5container_name: redisrestart: al…

【STM32项目】在FreeRtos背景下的实战项目的实现过程(二)

个人主页~ 实战项目的实现过程&#xff08;一&#xff09;~ 实战项目的实现过程 二、初步了解各个外设硬件1、OLED模块2、GPS模块3、MPU6050模块4、超声测距模块5、温度测控模块6、语音模块7、SIM模块8、按键模块 三、查阅资料1、查看手册2、查找例程 四、研究硬件功能1、OLED…

js使用run编码计算region的交集并集差集

所有shape都转为run编码 转为run编码后再运算可以节约大量内存 subtractIntervals 函数的逻辑:目前的实现假设了所有的 subIntervals 都会与 intervals 完全重叠,这可能导致计算不准确。应该将 subIntervals 从 intervals 中去除时,考虑到可能的部分重叠。 差集计算:sub…

双剑合璧,网络无敌!Windows Server 2012 R2双网卡绑定实战教程

文章目录 双剑合璧&#xff0c;网络无敌&#xff01;Windows Server 2012 R2双网卡绑定实战教程1 背景信息2 配置步骤2.1 登录服务器2.2 分别清除两块网卡的配置2.3 进入“本地服务器”界面2.4 进入“NIC组合”界面2.5 创建网卡绑定组2.6 设置新建组参数2.7 查看已创建的网卡组…

【kubernetes】k8s配置资源管理

一、ConfigMap资源配置 ConfigMap保存的是不需要加密配置的信息 ConfigMap 功能在 Kubernetes1.2 版本中引入&#xff0c;许多应用程序会从配置文件、命令行参数或环境变量中读取配置信息。ConfigMap API 给我们提供了向容器中注入配置信息的机制&#xff0c;ConfigMap 可以被…

银河麒麟V10+qt5,12.11编译mysql驱动连接OceanBase数据库

1、下载mysql数据库,解压后里面包含编译所需要的lib和include文件夹,下载地址:https://www.mysql.com/downloads/ 选择适合自己系统的版本: 解压后的文件夹中包含需要的lib和include文件夹: 使用qt打开mysql源码项目: 根据自己qt安装路径,找到项目: 注释掉如图: …

C++STL之string类:相关习题解析

目录 1&#xff0c;字符串转整型数字 2&#xff0c;字符串最后一个单词的长度(getline的使用) 3&#xff0c;仅仅反转字母 4&#xff0c;字符串中的第一个唯一字符(找字符串中第一个只出现一次的字符) 5&#xff0c;验证回文串 6&#xff0c;验证回文串|| 7&#xff0c;…

Vue 3 + 天地图 + D3.js 绘制行政区划

​&#x1f308;个人主页&#xff1a;前端青山 &#x1f525;系列专栏&#xff1a;组件封装篇 &#x1f516;人终将被年少不可得之物困其一生 依旧青山,本期给大家带来组件封装篇专栏内容:组件封装-天地图 目录 引入天地图 API 初始化地图 引入 D3.js 加载行政区划数据 添…

mysql聚合函数和分组

我最近开了几个专栏&#xff0c;诚信互三&#xff01; > |||《算法专栏》&#xff1a;&#xff1a;刷题教程来自网站《代码随想录》。||| > |||《C专栏》&#xff1a;&#xff1a;记录我学习C的经历&#xff0c;看完你一定会有收获。||| > |||《Linux专栏》&#xff1…

小五金加工:细节决定产品质量与性能

在小五金加工领域&#xff0c;细节往往决定着最终产品的质量、性能以及市场竞争力。看似微不足道的细微之处&#xff0c;实际上蕴含着巨大的影响。时利和将介绍小五金加工中细节的重要性。 首先&#xff0c;细节关乎产品的精度。小五金零件通常尺寸较小&#xff0c;但对精度的要…

TorchChat:Ollama的潜在对手

PyTorch最近发布TorchChat&#xff0c;TorchChat允许在本地台式机、笔记本电脑或移动设备上下载和运行大型语言模型。会不会让你想到什么&#xff0c;没错就是Ollama。TorchChat是一个适应性强的框架&#xff0c;旨在提高各种硬件平台的LLMs效率&#xff0c;有助于在各种设备上…