LVS+keepalived小白都看得懂也不来看?

2023-12-22 05:30

本文主要是介绍LVS+keepalived小白都看得懂也不来看?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1 高可用集群

1.1 一个合格的集群应该具备的特性

1.负载均衡
LVS Nginx HAProxy F5
2.健康检查(使得调度器检查节点状态是否可以正常运行,调度器(负载均衡器)也要做健康检查)for调度器/节点服务器 keeplived hearbeat
健康检查(探针)的方式:
调度器的检查方法:
健康调度器是用于监控和管理节点服务器的工具。他定期发送请求到节点服务器,并根据响应结果判断节点服务器的健康状态
节点服务器的检查方法:

1.发送心跳消息 ping/pong

2.TCP的端口检查(向目标主机的IP:PORT 发送TPC连接请求 如果TCP连接成功三次握手成功则认为健康检查探测成功,如果三次握手失败,则认为健康检查探测失败)

3.HTTP URL检查 (向目标主机的http://IP:PORT/URL路径 发送HTTP GET请求方法,如果响应状态码返回2XX 3XX,则认为探测成功,如果响应状态码是4XX 5XX,则认为探测失败)

3.做故障转移(正常情况下由主来接受用户数据的转发,如果主挂掉了,则由备来接受用户数据的转发)
通过VIP漂移来实现主备切换(通过IP命令去生成的并不是真的漂移)

1.2 脑裂故障

现象:主服务器和备服务器同时拥有VIP地址
原因:因为主服务器和备服务器之间的通信链路中断导致备服务器无法收到主服务器发送的VRRP心跳消息(或VIP通告消息,通告消息默认通过组播消息发送也可以通过广播消息发送),备服务器误认为主服务故障了并通过IP命令生成VIP地址。
解决方法:关掉主服务器或者备服务器其中一个的keeplived服务
预防方法: 1.主服务器和备服务器之间添加双链路通信。2.在主服务器上添加脚本进行链路判断与备服务器通信链路是否中断,如果确实链路中断,则自行关闭keeplived服务。3.利用第三方应用或监控系统来检测是否发生脑裂故障,如果发发生脑裂故障,则通过第三方应用或监控系统紫星关闭主服务器或者备服务器上面的keeplived服务。
脚本思路:

2 keepalived

2.1 keepalive工具接受

专为LVS和HA设计的一款健康检查工具(nginx、haproxy都可用)

支持故障自动切换
支持节点健康状态检查

判断LVS负载调度器、节点服务器的可用性,当master出现故障及时切换到backup节点保证业务正常,当master故障主机恢复后将其重新加入群集并且业务重新切换回master节点。

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

在一个LVS服务群集中通常有主服务(MASTE与R)和备服务器(BACKUP)两种角色的服务器,当备份服务器收不到VRRP消息的时候,即主服务器异常的时候,备份服务器就会接管虚拟IP,继续提供服务,从而保证了高可用性。

2.2 Keepalived实现原理解剖

Keepalived采用VRRP热备份协议,实现Linux服务器的多机热备功能。

VRRP(虚拟路由冗余协议)是针对路由器的一种备份解决方案
  • 由多台路由器组成一个热备组,通过共用的虚拟IP地址对外提供服务

  • 每个热备组内同时只有一台主路由器提供服务,其他路由器处于冗余状态

  • 若当前子啊显得路由器失效,则其他路由器会根据设置的优先级自动接替虚拟IP地址,继续提供服务。

双机热背的故障切换是由虚拟IP地址的漂移来实现,适用于各种应用服务器
实现基于Web服务器的双机热备

2.3 Keeplived体系主要模块和作用:

  • core模块:为keepalived的核心,负责主进程的启动、维护及全局配置文件的加载和解析
  • VRRP模块:是来实现VRRP协议的
Keepalived通过什么判断哪台主机为主服务器,通过什么方式配置浮动P?
答案:Keepalived首先做初始化先检查state状态,master为主服务器,backup为备服务器。然后再对比所有服务器的priority,谁的优先级高谁是最终的主服务器浮动IP地址。优先级高的服务器会通过ip命令为自己的电脑配置一个提前定义好的浮动IP
keepalived的抢占与非抢占模式:
抢占模式即MASTER从故障中恢复后,会将VIP从BACKUP节点中抢占过来。非抢占模式即MASTER恢复后不抢占BACKUP升级为MASTER后的VIP非抢占式俩节点state必须为bakcup,且必须配置nopreempt。注意:这样配置后,我们要注意启动服务的顺序,优先启动的获取master权限,与优先级没有关系了。

3 防止发生脑裂现象的lvs+keepalive部署

过滤nginx服务的方法:lsof -i :80 ;ps -C nginx --no-header ; netstat -lntp | grep nginx ; pidof nginx ; killall -0 nginx ; ps aux | grep nginx |egrep -v "grep|quot;

主、被服务器安装keepalived 、 ipvsadm 、nginx (yum安装nginx需要repo包)

复制一份keepalived配置文件便于还原,并修改keepalived配置文件

修改配置内容

重启keepalived并查看虚拟网卡

保存策略并启动ipvsadm,查看VIP是否分发策略

调整 proc 响应参数,关闭Linux 内核的重定向参数响应

修改nginx配置文件,添加集群

把主服务器keepalived配置文件传给备服务器

修改备服务器配置文件

把主服务器nginx配置文件传给备服务器
web服务器设置,查看部署结果

关闭主服务器查看是否可以继续访问

4 LVS+keepalive的部署

卸载nginx服务,清除脚本和nginx部署测试结果

关闭主服务器查看是否可以访问

这篇关于LVS+keepalived小白都看得懂也不来看?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/522740

相关文章

centos7基于keepalived+nginx部署k8s1.26.0高可用集群

《centos7基于keepalived+nginx部署k8s1.26.0高可用集群》Kubernetes是一个开源的容器编排平台,用于自动化地部署、扩展和管理容器化应用程序,在生产环境中,为了确保集... 目录一、初始化(所有节点都执行)二、安装containerd(所有节点都执行)三、安装docker-

LVS学习入门

1.LVS DR模式负载均衡配置详解(配置篇一) http://www.07net01.com/storage_networking/LVS_DRmoshifuzaijunhengpeizhixiangjie_peizhipianyi__56840_1358680093.html 2.LVS负载均衡DR模式部署 http://www.cnblogs.com/xdpxyxy/

作为刚从事Java开发的小白,需要掌握哪些技能

作为一个刚踏入Java开发世界的小白,面对各种技术和工具,你可能会觉得有点不知所措。但是别担心,我会给你一个简单清晰的路线图,让你可以有条不紊地掌握基本技能,逐步成长为一名Java开发者。 1. 扎实的Java基础 Java的基础是你迈向高级开发的重要基石,建议从以下几个方面着手: 语法和基础概念:比如变量、条件语句、循环、方法、数组、面向对象编程(OOP)等等。这些基础如同建房子的地基,越

# 高可用的并发解决方案nginx+keepalived(一)

高可用的并发解决方案nginx+keepalived(一) 段子手 一、课程计划介绍 1、课程标题 为并发量高的优质网站量身定制高可用的并发解决方案 nginx+keepalived。 2、引导语 在这个互联网飞速发展的时代,人们已经离不开网络,其中网购最为常见。在家网购,上班路上网购,吃饭也购物,下班还网购,2017年双十一天猫支付峰值达到了25.6万笔/秒。热点网站中频繁出现的大量

小白装修之全屋定制和软装

装修决策方法论:三点走下来 是则是 否则否 第一步:想清楚 哪些 是 真实需求 第二步: 了解这些需求是通过何种方式实现的 第三步:考虑 实现方式的缺点 是否能接受  全屋定制  方式:1.找全屋定制的商家  2.木工现场打柜子 组成:设计 + 板材 + 加工 + 配件 +安装 设计板块:明明有成品家具可以购买 为什么要做定制呢? 自主规划 选设计师 1.更符合我们房屋和物

科研小白成长记40——第三个五年计划

小gap期间,拼命玩和拼命休息的同时,仔细思考了下我期望的五年之后的样子,gap结束,算是目标愈发清晰起来。曾经,读博的目标是成为一名independent researcher,并且具备发至少一篇顶会的能力。而现在,希望五年后的自己,成为一名good independent researcher。当然,这里的good,根据现阶段的科研榜样,已经有了具体的metrics。 首先是随时在线的深度理解

[vue小白]npm run运行以后无法关闭

开启vue任务后,关闭git bash窗口发现端口仍然被占用,程序没有关闭 通过查询资料,大部分都说ctrl+c就可以了,但是经过实践发现并不可行,目测大部分都是复制粘贴的答案。 经过尝试,最终发现可能只能暴力关闭了 1.在cmd中输入netstat -ano查询占用端口号的pid 2. 然后在任务管理器中查询对应的任务并关闭 3. 在linux系统中更简单,直接kill -9 pid即可

如何进行不同数据库的集群操作?--从部署谈起,今天来看MySQL和NoSql数据库Redis的集群

篇幅较长,主要分为mysql和Redis两部分。找想要的部分可见目录食用。。 目录 什么是集群?为什么要集群? 1.1 数据库主要分为两大类:关系型数据库与 NoSQL 数据库 1.2 为什么还要用 NoSQL 数据库呢?                       -------------------华丽分割线-------------- 一、关系型数据库MySQL 1.部署

C语言新手小白详细教程(8)ASCll编码和字符串

🌏个人博客主页:意疏-CSDN博客 希望文章能够给到初学的你一些启发~ 如果觉得文章对你有帮助的话,点赞 + 关注+ 收藏支持一下笔者吧~ 阅读指南: 开篇说明ASCll编码字符串 开篇说明 本章节我们学习C语言中一个非常重要的概念 字符串。在C语言编程中,字符串是一种非常重要的数据类型。与许多其他编程语言不同,C语言本身并没有直接提供字符串类型,而是通过字

Claude的小白入门指南

要想快速上手Claude AI,其实并没有那么复杂。作为新一代的AI助手,Claude致力于为用户提供高效、无害、透明的交互体验。这篇入门指南将从Claude AI的特点、主要功能和如何实际操作等几个方面为大家做一个详细的介绍。 Claude AI是什么? Claude是由Anthropic开发的一款多功能AI助手,它的核心特点是具备高效的自然语言处理能力,专注于提供帮助、无害且诚