Keepalived 高可用集群详解和配置

devtools/2024/9/24 12:49:57/

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.ppmy.cn/devtools/96750.html

相关文章

C#高级应用

C# 特性&#xff08;Attribute&#xff09; 特性&#xff08;Attribute&#xff09;是用于在运行时传递程序中各种元素&#xff08;比如类、方法、结构、枚举、组件等&#xff09;的行为信息的声明性标签。您可以通过使用特性向程序添加声明性信息。一个声明性标签是通过放置在…

依赖倒置原则详解

依赖倒置原则详解 一、引言 在大型系统架构设计中&#xff0c;依赖倒置原则&#xff08;Dependency Inversion Principle&#xff0c;DIP&#xff09;被广泛视为增强系统灵活性和可维护性的核心原则之一。最近在架构设计审查中&#xff0c;我们经常遇到由于依赖关系设计不当导…

机器学习:逻辑回归原理、参数介绍和优缺点

1、概念 逻辑回归是一种统计方法&#xff0c;用于分析一个或多个自变量&#xff08;解释变量&#xff09;与一个二元因变量&#xff08;响应变量&#xff09;之间的关系。虽然称为“回归”&#xff0c;但逻辑回归实际上是一种分类算法&#xff0c;因为它的输出是类别标签&#…

Icecream Video Converter Pro v1.44 激活版下载安装教程 (专业的视频转换软件)

前言 Icecream Video Converter Pro是一款高性能的视频转换软件&#xff0c;支持多种视频格式的转换。其用户界面设计简洁易用&#xff0c;提供高质量的视频转换和编辑功能。借助GPU加速和多核处理技术&#xff0c;该软件大大提升了转换速度和效率&#xff0c;同时确保视频转换…

Python做统计图之美

Python数据分析可视化 案例效果图 import pandas as pd import matplotlib.pyplot as plt import matplotlib# 数据 data {"房型": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11],"住宅类型": ["普通宅", "普通宅", "普通宅", &q…

【mysql】mysql体系结构

本站以分享各种运维经验和运维所需要的技能为主 《python零基础入门》&#xff1a;python零基础入门学习 《python运维脚本》&#xff1a; python运维脚本实践 《shell》&#xff1a;shell学习 《terraform》持续更新中&#xff1a;terraform_Aws学习零基础入门到最佳实战 《k8…

Windows平台RTSP|RTMP播放器如何实时调节音量

我们在做Windows平台RTSP、RTMP播放器的时候&#xff0c;有这样的技术需求&#xff0c;特别是多路监控的时候&#xff0c;并不是每一路audio都需要播放出来的&#xff0c;所以&#xff0c;这时候&#xff0c;需要有针对音量调节的设计&#xff1a; /** smart_player_sdk.cs* C…

DevExpress开发WPF应用实现对话框总结:编织界面的艺术之旅

在软件开发的浩瀚星空中&#xff0c;WPF&#xff08;Windows Presentation Foundation&#xff09;以其卓越的界面表现力和丰富的控件库&#xff0c;成为了众多开发者心中的璀璨明珠。而DevExpress&#xff0c;作为WPF领域的佼佼者&#xff0c;更是以其强大的组件库和易于集成的…