【Linux】LVS+Keepalived高可用负载均衡群集

news2024/11/24 12:47:57

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

LVS+Keepalived高可用负载均衡群集

  • 一、Keepalived实现原理
    • 1.Keepalived案例分析
    • 2.Keepalived工具介绍
    • 3,Keepalived实现原理剖析
    • 4.Keepalived案例讲解
    • 5.Keepalived体系主要模块及其作用
    • 6.Keepalived安装与启动
  • 二、脑裂的形成和解决
    • 产生脑裂的常见原因及解决方法
    • 脑裂预防预防措施
  • 三、Keepalived部署
    • 1.配置负载调度器(主、备相同)
    • 2.启动 ipvsadm 服务
    • 3.配置节点服务器


一、Keepalived实现原理

高可用集群只需要在调度器上多进行一台或两台(服务器本身的价格比较昂贵,一般备用的服务器的数量会和当前业务创造的价值对等)的设置,就可避免因调度器瘫痪业务中断的风险,所以实现了真正的高可用的效果。

1.Keepalived案例分析

  • 企业应用中,单台服务器承担应用存在单点故障的危险
  • 单点故障一旦发生,企业服务将发生中断,造成极大的危害

2.Keepalived工具介绍

专为LVS和HA设计的一款健康检查工具

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

3,Keepalived实现原理剖析

  • Keepalived采用VRRP热备份协议实现Linux服务器的多机热备功能
  • VRRP (虚拟路由元余协议)是针对路由器的一种备份解决方案
    由多台路由器组成一个热备组,通过共用的虚拟IP地址对外提供服务
    每个热备组内同时只有一台主路由器提供服务,其他路由器处于几余状态
    若当前在线的路由器失效,则其他路由器会根据设置的优先级自动接替虚拟IP地址,继续提供服务

在这里插入图片描述

4.Keepalived案例讲解

  • 双机热备的故障切换是由虚拟IP地址的漂移来实现,适用于各种应用服务器
  • 实现基于Web服务的双机热备
    漂移地址: 192.168.10.72
    主、备服务器: 192.168.10.73、192.168.10.74
    提供的应用服务: Web

在这里插入图片描述

5.Keepalived体系主要模块及其作用

keepalived体系架构中主要有三个模块,分别是core、check和vrrp。

  • core模块:为keepalived的核心,负责主进程的启动、维护及全局配置文件的加载和解析
  • vrrp模块:是来实现VRRP协议的。( 调度器之间的健康检查和主备切换)
  • check模块:负责健康检查,常见的方式有端口检查及URL检查。 (节点服务器的健康检查)

健康检测(探针)
(1)发送心跳消息 ping/pong
(2)TCP端口检查 向一台主机的 IP:PORT 发起 CP三次握手连接
(3) HTTP URL检查 向一台主机的 http:/IP:PORT/… URL路径 发送HTTP GET 请求方法,主机响应返2xx 3xx认为健康检查正常,如响应返回4xx 5xx则认为健康检查异常

6.Keepalived安装与启动

  • 在LVS群集环境中应用时,也需用到ipvsadm管理工具
  • YUM安装Keepalived
  • 启用Keepalived服务

二、脑裂的形成和解决

在"双机热备"高可用(HA)系统中,当联系两个节点的"心跳线"断开时(即两个节点断开联系时),本来为一个整体、动作协调的HA系统,就分裂成为两个独立的节点(即两个独立的个体)。由于相互失去了联系,都以为是对方出了故障,此时备用调度器会运转起来争做主调度器的工作,而主调度器依然保持着
调度工作,两个调度的同时运转导致整个系统的紊乱。

就会发生严重后果:
(1)共享资源被瓜分、两边"服务"都起不来了
(2)或者两边"服务"都起来了,但同时读写"共享存储",导致数据损坏(常见如数据库轮询着的联机日志出错)。

产生脑裂的常见原因及解决方法

硬件原因:

  • 高可用服务器各节点之间心跳线链路发生故障,导致无法正常通信。
  • 因心跳线坏了(包括断了,老化)。
  • 因网卡及相关驱动坏了,ip配置及冲突问题(网卡直连)。
  • 因心跳线间连接的设备故障(网卡及交换机)。
  • 因仲裁的机器出问题(采用仲裁的方案)。

运用配置原因:

  • 高可用服务器上开启了iptables防火墙阻挡了心跳消息传输。
  • 高可用服务器上心跳网卡地址等信息配置不正确,导致发送心跳失败。
  • 其他服务配置不当等原因,如心跳方式不同,心跳广插冲突、软件Bug等
  • Keepalived配置里同一VRRP实例如果virtual_router_id两端参数配置不一致也会导致裂脑问题发生。

脑裂的解决方法:

  • 关闭两个都成为master主机中的一个,一般关闭原本就为master的主机

脑裂预防预防措施

针对脑裂现象的产生,运维人员第一时间要做的不是处理发生故障的调度器或则故障线路,而是首先确保业务不会因此中断,进行脑裂的预防尤为重要。出现问题,先保证业务的进行,再进行排障。

方式一:添加冗余的心跳线

添加冗余的心跳线支持HA多线路的进行,在多线路的加持下,一条线路故障后,也会有其余的线路也可传输心跳信息,让主备调度器继续保持正常运转。此方案可减少脑裂产生的概率。

方式二:脚本配合周期任务计划检测,调度器自我裁决

脑裂分析:产生脑裂的最主要最常见的原因是备调度器接收不到主调度器的的心跳信息。首先调度器大多数情况下都会是在统一局域网中,是通过网络来进行心跳信息的传送。所以心跳信息的检测可以基于icmp协议来进行检测

  • 主调度器本身使用ping命令进行周期计划ping备用调度器,保证时刻畅通。
  • 采用条件判断语句,若主调调度器ping不通备调度器时,主调度器启用ssh服务远程借用节点服务器对备用调度器进行ping命令(可以多设置几台节点服务器ping,确保准确性)。若节点服务能ping通则说明问题出现在1号线路,主调度器进行自我裁决,让备调度器进行主调调度器的工作。若节点服务器也ping不通备调度器,说明问题出在了2号线路。
  • 可以在备调度器中也添加一个该方式的脚本,时刻ping主调度器。保证2号线出现问题时进行自我裁决。
  • 将主备调度器的脚本均添加周期计划任务中(crontab -e),进行合理的时间段检测。

方式三:第三方工具,监控软件

使用监控软件的方法,这边主要是采用的zabbix来监控的,主要就是创建监控项,创建触发器来测试关闭keepalived服务

方式四:启用磁盘锁

正在服务一方锁住共享磁盘,“裂脑"发生时,让对方完全"抢不走"共享磁盘资源。但使用锁磁盘也会有一个不小的问题,如果占用共享盘的一方不主动"解锁”,另一方就永远得不到共享磁盘。现实中假如服务节点突然死机或崩溃,就不可能执行解锁命令。后备节点也就接管不了共享资源和应用服务。于是有人在HA中设计了"智能"锁。即:正在服务的一方只在发现心跳线全部断开(察觉不到对端)时才启用磁盘锁。平时就不上锁了。

三、Keepalived部署

本次实验部署采用的时KeepAlived的运用与LVS中DR模式的结合,共同部署出高可用的负载均衡的集群。真实环境还会存在NFS共享目录服务器,考虑在上次的DR实验与NAT实验中都已经展示了NFS服务器与节点服务器之间的连接,本次若做也是相同的操作步骤,就省略了。

部署前的准备
主DR 服务器:192.168.30.10
备DR 服务器:192.168.30.20
Web 服务器1192.168.30.30
Web 服务器2192.168.30.50
vip:192.168.30.188
客户端:192.168.30.100

1.配置负载调度器(主、备相同)

systemctl stop firewalld.service
setenforce 0

yum -y install ipvsadm keepalived
modprobe ip_vs
cat /proc/net/ip_vs

(1)配置keeplived(主、备DR 服务器上都要设置)
cd /etc/keepalived/
cp keepalived.conf keepalived.conf.bak
vim keepalived.conf
......
global_defs {						#定义全局参数
--10--修改,邮件服务指向本地
	smtp_server 127.0.0.1
--12--修改,指定服务器(路由器)的名称,主备服务器名称须不同,主为LVS_01,备为LVS_02
	router_id LVS_01
--14--注释掉,取消严格遵守VRRP协议功能,否则VIP无法被连接
	#vrrp_strict
}

vrrp_instance VI_1 {				#定义VRRP热备实例参数
--20--修改,指定热备状态,主为MASTER,备为BACKUP
    state MASTER
--21--修改,指定承载vip地址的物理接口
    interface ens33
--22--修改,指定虚拟路由器的ID号,每个热备组保持一致	
    virtual_router_id 10
	#nopreempt		#如果设置非抢占模式,两个节点state必须为BACKUP,并加上配置 nopreempt
--23--修改,指定优先级,数值越大优先级越高,这里设置主为100,备为90
    priority 100
    advert_int 1					#通告间隔秒数(心跳频率)
    authentication {				#定义认证信息,每个热备组保持一致
		auth_type PASS				#认证类型
--27--修改,指定验证密码,主备服务器保持一致
        auth_pass abc123
    }
    virtual_ipaddress {				#指定群集vip地址
        192.168.30.188
    }
}
--36--修改,指定虚拟服务器地址(VIP)、端口,定义虚拟服务器和Web服务器池参数
virtual_server 192.168.30.188 80 {
    delay_loop 6					#健康检查的间隔时间()
    lb_algo rr						#指定调度算法,轮询(rr)
--39--修改,指定群集工作模式,直接路由(DR)
    lb_kind DR
    persistence_timeout 0			#连接保持时间()
    protocol TCP					#应用服务采用的是 TCP协议
--43--修改,指定第一个Web节点的地址、端口
    real_server 192.168.30.30 80 {
        weight 1					#节点的权重
--45--删除,添加以下健康检查方式		
        TCP_CHECK {
			connect_port 80			#添加检查的目标端口
			connect_timeout 3		#添加连接超时()
			nb_get_retry 3			#添加重试次数
			delay_before_retry 3	#添加重试间隔
		}
	}

	real_server 192.168.80.50 80 {		#添加第二个 Web节点的地址、端口
        weight 1
        TCP_CHECK {
			connect_port 80
			connect_timeout 3
			nb_get_retry 3
			delay_before_retry 3
		}
	}
##删除后面多余的配置##
}

systemctl start keepalived
ip addr						#查看虚拟网卡vip

2.启动 ipvsadm 服务

 启动 ipvsadm 服务
--192.168.30.10---
ipvsadm-save > /etc/sysconfig/ipvsadm
systemctl start ipvsadm

ipvsadm -ln
#如没有VIP 的分发策略,则重启 keepalived 服务,systemctl restart keepalived

--192.168.30.20---
ipvsadm-save > /etc/sysconfig/ipvsadm
systemctl start ipvsadm

ipvsadm -ln

调整 proc 响应参数,关闭Linux 内核的重定向参数响应
vim /etc/sysctl.conf
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0

sysctl -p

3.配置节点服务器

systemctl stop firewalld
setenforce 0

yum -y install httpd
systemctl start httpd

192.168.30.30
echo 'this is ztm web!' > /var/www/html/index.html

192.168.30.50
echo 'this is hss web!' > /var/www/html/index.html

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

service network restart 或 systemctl restart network
ifup lo:0
ifconfig lo:0
route add -host 192.168.30.188 dev lo:0

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

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

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

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

相关文章

自媒体新手如何从零开始做自媒体?有哪些步骤流程?

自媒体已经成为了一种非常流行的个人创业方式,相比于传统的创业方式,自媒体的投入成本较低,且门槛较低。许多人都有一个梦想,希望成为一个自媒体人,成为自己的老板。但是,对于很多自媒体小白来说&#xff0…

基于Springboot+mybatis+mysql+vue实现企业注册模块功能

基于Springbootmybatismysqlvue实现企业注册模块功能 一、系统介绍二、功能展示1.主页面2.注册成功 三、数据库四、代码展示四、其他系统实现五、获取源码 一、系统介绍 该系统实现简单的企业信息注册,保存后,提示注册成功。 运行环境:idea…

IP 协议(网络层协议)

IP协议 IP 协议作用地址管理动态分配 IP 地址NAT 机制IPv6IP 地址的组成 路由选择 IP 协议作用 主要有两点 : 地址管理 为每个上网的设备分配一个唯一地址. 路由选择 两台主机间的信息交互, 具体走哪条线路. 地址管理 先来看看 IP协议 报文格式 : IP 协议最主要就是 32 位的…

2.9寸NFC卡片

应用广泛 无需电池 可挂、可横向/纵向摆放,适合多种场所 使用2.9寸电子纸墨水屏,持续显示不耗电 本产品无电池,节能环保,助力实现碳中和 ​ 基于电子纸墨水屏作为显示屏,符合当下节能环保、护眼的需求。质地轻薄、大…

Flameshot (火焰截图)截图无法插入汉字

前不久,Debian11升级至Debian12后,发现fcitx5无法用了,好似包也被删除了。于是重新安装了fcitx5,但发现了一个问题,利用Flameshot(火焰截图)截取图片时,无法对图片进行文字注释。如下图所示&…

HTML常用标签

1、HTML HTML Hyper Text Markup Language 超文本标记语言 Markup Language 标记语言 XML Extensible Markup Language 可扩展标记语言 HTML2HTML3HTML4XHTML1XHTML2HTML5 2 、HTML基本结构 3 、网页 header header 文档的开始部分 网页加载时,首先加载header…

Spring Cloud Config: 了解、原理和使用

Spring Cloud Config: 了解、原理和使用 Spring Cloud Config 是 Spring Cloud 生态系统中的一个重要组件,它提供了一种分布式配置管理的解决方案,能够集中管理应用程序的配置,支持多种后端存储,如 Git、SVN、本地文件系统、Vaul…

ADG环境下统计每天的归档

现场项目经理反馈,使用日常的归档查询sql看到每天的归档量都快2T了,截图出来确实 很大 查看每天的归档文件总量比当天的归档量少了一半左右,百度了很多案例,最后发现问题该环境是ADG一主一备,每天的归档量也传输到备库…

JavaScript(JS)的引入方法

内部脚本 JS代码必须位于<script></script>标签之间在HTML文档中&#xff0c;可以在任意地方&#xff0c;放置任意数量的<script>一般会把脚本置于<body>元素的底部&#xff0c;可以改善显示速度 外部脚本&#xff1a;将JS代码定义在外部JS文件中&…

0基础学习VR全景平台篇 第55篇:专业版功能-数据统计

使用蛙色VR平台数据统计功能&#xff0c;可以统计分析整个账号下【所有作品】的访问数据&#xff1b; 亦可分析单个作品中【每个场景】的访问数据。 账号数据统计功能位置 单作品数据统计功能位置 一、本功能将用在哪里&#xff1f; 数据统计功能&#xff0c;可实现对作品总访…

自发二元行为预测人际神经同步(INS)的出现

导读 人际神经同步(INS)正在成为预测多人协调、沟通和合作成功等社会互动的有力标志。由于对INS的起源知之甚少&#xff0c;本研究测试了INS是否以及如何从自发的二元行为中产生。要求一对参与者在不说话或做出共同语言手势的情况下互相看着对方&#xff0c;并记录他们的神经活…

网络分层模型以及通信流程

2.1OSI模型和tcp/ip模型 Tcp/ip模型早于ISO的OSI模型 2.2网络为什么要分层&#xff1f; 将一个大的问题进行拆分&#xff0c;分而治之&#xff0c;专门的层处理专门的事情。而且那层出现问题只需对该层进行处理&#xff0c;不会影响到其他层。就相当于做菜的过程&#xff0c;…

满足数字化转型对无线网络性能需求,锐捷全场景 Wi-Fi 7 方案

数字化转型深入了各行业&#xff0c;对于算力、数据、网络的需求也水涨船高。其中&#xff0c;无线网络对于生产办公等等场景数据传输的保障&#xff0c;愈加重要。 例如生产场景里&#xff0c;工厂增设各类自动化、智能化的传感器&#xff0c;都需要以无线&#xff08;甚至全部…

我的《CSDN铁粉宝典》

完成一篇如何获得铁粉&#xff0c;或者相关的文章且质量分达到80分以上即可 一 什么是铁粉&#xff1f; 顾名思义&#xff0c;就是你的铁杆粉丝&#xff0c;但是这个只是过通俗的解释&#xff0c;那么在CSDN规则中&#xff0c;什么是铁粉呢&#xff1f;官方给了一系列解释 “为…

新发布的 DBeaver 23.1.1 版本正式支持时序数据库 TDengine

众所周知&#xff0c;DBeaver 是一个流行的开源数据库管理和 SQL 客户端工具&#xff0c;为管理和使用各种类型的数据库&#xff08;包括多个时序数据库&#xff09;提供强大而灵活的平台。为了让大家在应用上更加便捷&#xff0c;我们与 DBeaver 达成合作&#xff0c;新发布的…

蓝桥杯专题-试题版含答案-【字母统计】【计算球体积】【16进制的简单运算】【C小加随机数】

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例点击跳转>软考全系列点击跳转>蓝桥系列 &#x1f449;关于作者 专注于Android/Unity和各种游…

子元素比父元素 z-index高低的问题

一.大坑---设置父relative z-index:0 .parent {position: relative;z-index:0; } .child {position: absolute;z-index:9999; }子元素居然比父元素的兄弟元素低一个层级&#xff01; 原因&#xff1a; 当你将父元素的 position 属性设置为 relative 并且 z-index 属性设置为…

美团落子泛娱乐

配图来自Canva可画 据工信部发布的《泛娱乐产业白皮书》显示&#xff0c;中国泛娱乐核心产业&#xff0c;已成为数字经济的重要支柱和新经济发展的重要引擎。因此&#xff0c;构建一个多产业联动的泛娱乐生态体系&#xff0c;便成为了企业发展的共同目标。比如&#xff0c;腾讯…

剑指 Offer 65: 不用加减乘除做加法

这道题想着使用一位一位进位的方法做&#xff0c;写这个的时候忘记了异或运算符&#xff01;&#xff01; 这道题看了解答发现很好想&#xff0c;什么位置有进位&#xff1f;就是两个相同位置数值都为1的时候&#xff0c;那么就会往前进一位&#xff1b;同理&#xff0c;没有进…

open*w*r*t +dnspod ddns动态解析ipv6 远程控制移动内网路由器

1.修改openw*r*t web https管理端口为8443 修改ipv6 https 监听端口list listen_https [::]:8443 cd /etc/config/vi uhttpdvi /etc/config/uhttpdconfig uhttpd mainlist listen_http 0.0.0.0:80list listen_http [::]:80list listen_https 0.0.0.0:443list listen_https [:…