LVS+Keepalived负载均衡高可用群集(往事清零,万事顺意)

news/2024/7/10 0:20:39 标签: lvs, 负载均衡, 服务器

一、Keepalived高可用详解

1.应用场景

在企业应用中,单台服务器承担应用存在单点故障的危险。单点故障一旦发生,企业服务将发生中断,造成极大的危害。所以需要群集实现高可用性,保证服务稳定。

2.介绍和原理简介

Keepalived是一个基于VRRP协议来实现的LVS服务高可用方案,可以解决静态路由出现的单点故障问题。

可参考 VRRP详解与配置实例_Evens7xxX的博客-CSDN博客

支持故障自动切换(Failover)和 节点健康状态检查(Health Checking)—— 判断LVS负载调度器、节点服务器的可用性,当master主机出现故障及时切换到backup节点保证业务正常,当master故障主机恢复后将其重新加入群集并且业务。

在一个LVS服务集群中通常有主服务器(NASIER)和备份服务器(EcCXOp)两种角色的服务器,但是对外表现为一个虚拟re,主服务器会发送vRt通告信息给备份服务器,当备份服务器收不到wa&消息的时候,即主服务器异常的时候,备份服务器就会接管虚拟IP,继续提供服务,从而保证了高可用性。W AEF AWF EAFAF FAEDAWAWEDF 4TWAWDFA

3.主要模块和作用

core模块:为keepalived的核心,负责主进程的启动、维护及全局配置文件的加载和解析
vrrp模块:是来实现VRRP协议的,用于主备调度器的检查和切换。

check模块:负责健康检查节点服务器,常见的方式有端口检查及URL检查。

二、LVS+keepalived配置实例(抢占模式)

以下实验使用LVS-DR+keepalived的抢占模式实现高可用负载群集
Web 服务器1:192.168.116.10(VIP 192.168.116.100)
Web 服务器2:192.168.116.20(VIP 192.168.116.100
NFS 共享存储器:192.168.116.30
LVS+keepalived 主负载调度器:192.168.116.40(VIP 192.168.116.100)
LVS+keepalived 备负载调度器:192.168.116.30(VIP 192.168.116.100)
网关/路由器:192.168.116.2
客户端:192.168.116.50

1.配置NFS共享存储器

systemctl stop firewalld.service
setenforce 0
 
yum -y install nfs-utils rpcbind
mkdir /opt/nfs/server1 /opt/nfs/server2
chmod -R 777 /opt/nfs
 
vim /etc/exports
/opt/nfs 192.168.116.0/24(rw,sync)
/opt/nfs/server1 192.168.116.0/24(rw,sync)
/opt/nfs/server2 192.168.116.0/24(rw,sync)
 
systemctl restart rpcbind.service
systemctl restart nfs.service

检查发布的共享策略
在这里插入图片描述
分别在共享目录中添加web测试页面(两个可以有所区别)
在这里插入图片描述

2.配置节点web服务(两台的配置相同)

配置好ip地址,并将网关指定为网关/路由器的ip地址

安装nginx提供web服务(apache、nginx等均可,仅用于实验)
在这里插入图片描述
将网站根目录挂载到各自的共享目录
在这里插入图片描述
查看是否共享成功
在这里插入图片描述
添加回环网卡虚拟ip

cp /etc/sysconfig/network-scripts/ifcfg-lo /etc/sysconfig/network-scripts/ifcfg-lo:0
 
vim /etc/sysconfig/network-scripts/ifcfg-lo:0
DEVICE=lo:0
IPADDR=192.168.116.100
NETMASK=255.255.255.255
ONBOOT=yes
 
ifup lo:0

在这里插入图片描述
添加静态路由(将数据包封锁在回环网卡中)

#临时配置
route add -host 192.168.116.100 dev lo:0
 
#永久配置
vim /etc/rc.local
/sbin/route add -host 192.168.116.100 dev lo:0
chmod +x /etc/rc.d/rc.local

调整内核的ARP响应参数(阻止更新VIP的MAC地址,避免发生冲突)

vim /etc/sysctl.conf
#添加
net.ipv4.conf.lo.arp_ignore = 1        
net.ipv4.conf.lo.arp_announce = 2    
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
 
#加载配置
sysctl -p

3.配置主备LVS+keepalived负载调度器

两台都关闭防火墙下载keepalived和ipvsadm,修改内核参数

systemctl stop firewalld.service
setenforce 0
 
modprobe ip_vs
yum -y install ipvsadm keepalived
 
vim /etc/sysctl.conf
net.ipv4.ip_forward = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0
 
sysctl -p

修改主负载器配置文件
在这里插入图片描述
在这里插入图片描述
**修改备负载器配置文件(与主配置一致,只需修改以下部分) **

在这里插入图片描述
之后启动keepalived再启动ipvsadm(ipvsadm会自动加载keepslived中的配置)

#启动keepalived
systemctl restart keepalived.service
ipvsadm-save > /etc/sysconfig/ipvsadm
 
#启动ipvsadm
systemctl restart ipvsadm.service

查看主服务器

在这里插入图片描述
查看备服务器
在这里插入图片描述
访问测试(此时应该是主负载器提供服务)
在这里插入图片描述
在这里插入图片描述
现在将主负载器服务停止或关机(模拟宕机),继续访问
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
**访问成功,这次显然是由备负载器进行转发的 **

三、非抢占模式

keepalived的抢占与非抢占模式
抢占模式即MASTER从故障中恢复后,会将VIP从BACKUP节点中抢占过来。
非抢占模式即MASTER恢复后不抢占BACKUP升级为MASTER后的VIP。非抢占式的两个节点state必须为BACKUP,且必须在优先级前添加nopreempt。
注意:这样配置后,我们要注意启动服务的顺序,优先启动的获取master权限,与优先级没有关系了。

在这里插入图片描述

四、脑裂现象的解释和解决办法

1.解释

在抢占模式中,MASTER需要定时发送报文通告BACKUP自己仍在运作,但是当MASTER还在运作,但其中的线路或交换机等出现故障导致BACKUP不能收到通告时,会认为MASTER已经失效,此时BACKUP抢占VIP会导致VIP同时存在,这就是脑裂现象。

2.解决方法

主备服务器之间使用双链路通信;
通过脚本来实时监控主备的网络状态,然后再根据脚本逻辑采取措施(关掉主服务器的keepalived服务器);
通过第三方监控系统来实时监控主备服务器及网络状态,然后再根据情况采取措施(关掉主服务器的keepalived服务器)。


http://www.niftyadmin.cn/n/426461.html

相关文章

C语言编译成DLL文件,给其他程序调用。C语言编译成EXE文件,执行简单功能。HEX文件合并

文章目录 一、简介二、步骤1. 先编写c语言文件。用CRC8举例。crc8_2f.c crc8_2f.h2. 编译成DLL文件3. 给上位机调用(1)C#(2) 易语言 三、编译成EXE1. 编写一个c文件。 merge_hex.c(例:hex文件合并)2. 编译文件3. 合并脚…

this 关键字的用法,super 关键字的用法,this 与 super 的区别

this 是自身的一个对象,代表对象本身,是指向对象本身的一个指针。 用法分为3种: 1.普通的直接引用,this 相当于是指向当前对象本身 2.形参与成员名字重名,用this 来区分 public Student(String name, int age) {this.…

Sui x KuCoin Labs夏季黑客松|本周Workshop预告

由Sui和KuCoin Labs联合主办的夏季黑客松正如火如荼的报名中。了解黑客松详情:Sui与KuCoin Labs联合推出夏季黑客松,奖池高达28.5万美金! 👉 黑客松官方网站:Sui x KuCoin Labs Summer Hackathon | Sui x KuCoin Labs…

【性能测试系列】JMeter核心技术:分布式压测和参数化

JMeter分布式压测 为什么要做分布式部署? 在上一篇文章中,我们提到了JMeter的线程启动和运行,是会占用系统资源的,一旦需要大并发,而JMeter单机部署配置不够,将会导致JMeter无法在规定时间内启动对应的线程数&#x…

【头歌-Python】9.1 X射线衍射曲线绘制(project)第3~4关

第3关:X 射线衍射曲线峰值 任务描述 本关任务:读文件中的数据绘制线图形并加绘制峰值。 相关知识 为了完成本关任务,你需要掌握: python 读取文件中的数据使用 matplotlib 绘制图形 python 读取文件 python读取文件可以用以…

CET4的Translation部分

1.中国汉族人的全名由姓和名组成。 分块: Han Chinese full name consist of family name given name 组合: The full name of Han Chinese consist of family name and given name. 2.中文姓名的特点是,姓总是在前,名跟在其后。 …

爬虫案例-使用Session登录指定网站(JS逆向AES-CBC加密+MD5加密)

总体概览:使用Session登录该网站,其中包括对password参数进行js逆向破解 (涉及加密:md5加密AES-CBC加密) 难度:两颗星 目标网址:aHR0cHM6Ly93d3cuZnhiYW9nYW8uY29tLw 下面文章将分为四个部分…

UG\NX二次开发 安装工具的两种方法

文章作者:里海 来源网站:https://blog.csdn.net/WangPaiFeiXingYuan 简介: 安装工具的两种方法 1.配置文件法 UGII_CUSTOM_DIRECTORY_FILE=$UGII_DEFAULT_MENU_DIR\custom_dirs.dat UGII_UG_CUSTOM_DIRECTORY_FILE=$UGII_DEFAULT_MENU_DIR\ug_custom_dirs.dat 在默认情…