LVS+keepalived高可用集群

1、定义

keepalived为lvs应运而生的高可用服务。lvs的调度器无法做高可用,keepalived实现的是调度器的高可用,但keepalived不只为lvs集群服务的,也可以做其他代理服务器的高可用,比如nginx+keepalived也可实现高可用(重点)

2、作用

解决代理服务器的高可用问题

lvs的高可用集群:主调度器和备调度器(一主一备、一主两备)

3、工作方式

主调度器能够正常运行时,由主调度器进行后端真实服务器的分配处理,其余的备用调度器都处于冗余状态,不参与集群的运转,当主调度器出现故障无法运行时,备用调度器承担主调度器的工作,一旦主调度器恢复工作,继续由主调度器进行处理,备调度器又处于冗余状态

4、keepalived是基于VRRP协议实现lvs服务的高可用,解决了调度器单节点的故障问题

5、VRRP协议:提高网络路由器的可靠性开发的一种协议

工作原理:

(1)选举主备。预先设定好主和备的优先级,选举出主和备。主的优先级较高,备的优先级低,一旦开启服务,优先级高的会自动抢占主的位置

(2)检测主备。依靠VRRP组播通信检测主、备是否正常运转。组播通信地址:224.0.0.18。VRRP协议当中的主备服务器通过组播地址进行通信,交换主备服务器之间的运行状态,主服务器会周期性的发送VRRP报文消息,告知其他备服务器主服务器现在的状态

(3)主备切换。主服务器发生故障或者不可达,VRRP协议会把请求转移到备服务器。通过组播地址224.0.0.18,VRRP可以迅速的通知其他服务器立即主备切换,并确保新的主服务器可以正常的处理客户端的请求

(4)故障恢复。一旦主服务器恢复通信,由组播地址224.0.0.18进行通信,发现恢复的主服务器优先级更高,会抢占原主服务器的位置,成为主服务器调度和接收请求

6、LVS-DR模式结合keepalived数据流向

7keepalived的体系模块

全局模块:core模块。负责整个keepalived的启动、加载和维护

VRRP模块:实现VRRP协议,主备切换

check模块:配置在真实服务器的模块中。负责健康检查,检查后端真实服务器的健康状况

8、(重点)脑裂:主备同时拥有VIP地址

1、定义:在高可用系统中,联系两个节点的心跳线,本来是一体的,是一个动作协调的高可用系统。若心跳线断开后分裂成两个独立的个体,主备之间失去了联系,都以为对方出现了故障,两个调度器像脑裂人一样开始抢占主的位置和VIP地址,此时主服务器有VIP地址,备服务器也有VIP地址,导致整个集群失败

2、问题原因

  1. 软件层面:

重启主备服务器的keepalived服务(先重启主,再重启备,再模拟一下故障恢复)

配置文件

②tcpdump抓包分析

  1. 网络层面:

高可用服务器之间心跳线检测失败(主备之间无法进行通信,ping测试一下)

  1. 硬件层面:

①连接主备之间的心跳线老化

②网卡或网卡的驱动失效

③IP地址配置冲突

④防火墙没有配置心跳线消息的传输通道,导致检测失败(VRRP消息发不出去)

⑤后端服务器的配置问题(心跳方式不同、心跳广播冲突、软件bug等)

3、如何解决脑裂问题?

①硬件:准备两条心跳线,这样断了一条依然能够传送心跳消息

②设置防火墙,一定让心跳消息通过

③依靠监控软件实时监测(zabbix软件)

环境:

dev开发环境——开发人员专用(与运维无关)

sit测试环境——测试人员使用(开发、运维都可以用)

pre预生产环境——运维和开发使用(和最终的生产环境保持一致)

prd生产环境——面向用户的最终环境

常用的是开发、测试环境一块用,再加上生产环境

9、LVS+keepalived实现高可用实验

keepalived不能有注释;启动keepalived会自动生成ipvsadm配置,不需要配置ipvsadm配置文件;keepalived配置错误照样能重启

实验条件:

test1——主调度器——20.0.0.10——keepalived、ipvsadm服务

test2——备调度器——20.0.0.20——keepalived、ipvsadm服务

nginx1——后端真实服务器1——20.0.0.11——nginx服务

nginx2——后端真实服务器2——20.0.0.21——nginx服务

nginx3——客户端——20.0.0.31

VIP地址:20.0.0.100(自定义,必须和DIP和RIP在同一网段)

实验步骤:

1、主调度器test1——20.0.0.10

(1)安装、重启keepalived、ipvsadm服务

保存配置文件:ipvsadm-save > /etc/sysconfig/ipvsadm

(2)保存配置文件

(3)修改keepalived配置文件,绑定VIP地址和后端真实服务器地址

主和备的名称不能一样,否则报错

虚拟路由器的id号(virtual_router_id 51),主备一致

(4)关闭主服务器的转发功能和重定向

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

2、备份服务器test2——20.0.0.20

(1)安装ipvsadm、keepalived服务

(2)备份keepalived配置文件

(3)远程复制主服务器的keepalived配置文件

(4)修改keepalived配置文件vim /etc/keealived/keepalived.conf

3、检测此时VIP地址在哪台服务器上

4、后端服务器nginx1、nginx2设置静态页面,便于检测轮询

5、后端服务器nginx1、nginx2配置虚拟网卡,绑定VIP地址

(1)nginx1

①配置虚拟接口

②绑定回环接口

③内核参数优化(只有真实服务器的RIP地址可以返回响应结果)

(2)nginx2

①配置虚拟接口

②绑定回环接口

③内核参数优化(只有真实服务器的RIP地址可以返回响应结果)

6、测试

7、模拟故障

(1)主服务器故障——验证高可用,主备是否切换

结论:主备切换成功

(2)主服务器恢复正常运行——VIP地址是否能切换到原主服务器

(3)节点服务器出现故障——假设RS1故障

测试结果:只能访问另一个后端真实服务器

(4)节点服务器恢复正常运行——假设RS1正常运行

测试结果:根据轮询算法后端真实服务器

10、nginx+keepalived实现高可用实验

nginx依靠脚本检测主备服务器的健康生命体征

实验条件:

nginx4——主服务器——20.0.0.41——keepalived、ipvsadm服务

nginx5——备服务器——20.0.0.51——keepalived、ipvsadm服务

nginx6——客户端——20.0.0.61——nginx服务

VIP地址:20.0.0.100(自定义,必须和DIP和RIP在同一网段)

实验步骤:

1、主服务器nginx4

(1)安装ipvsadm、keepalived服务

(2)备份keepalived配置文件

(3)修改keepalived配置文件

(4)创建周期性执行脚本check_nginx.sh

(5)下载脚本文件到桌面 sz check_nginx.sh

(6)建立静态页面,便于识别

2、备服务器nginx5

(1)安装ipvsadm、keepalived服务

(2)备份keepalived配置文件

(3)远程连接复制主服务器的keepalived配置文件

(4)修改keepalived配置文件

(5)下载刚刚的周期性脚本执行文件并赋权

(6)建立静态页面,便于识别

3、检测VIP 地址。此时VIP地址在主服务器上

4、测试。没有轮询算法

5、模拟主服务器故障

测试结果:备服务器顶替主服务器工作

6、模拟备服务器故障

测试结果:主服务器恢复正常运行

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

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

相关文章

多模态笔记

Transformer 对文本输入进行tokenizer时,调用的接口batch_encode_plus,过程大致是这样的(参考:tokenizer用法) #这里以bert模型为例,使用上述提到的函数 from transformers import BertTokenizer tokenizer BertTokenizer.from…

spring tx:advice事务配置—— tx:advice中不允许出现属性 ‘transaction-manager‘

今天在配置java事务管理时出现了一些问题。 提示:只有这几个属性 经过查询资料发现是bean的配置少了一些。 可以在xml文件顶部添加: xmlns:tx"http://www.springframework.org/schema/tx" 下面也提供一份bean文件配置的模板: &a…

Java入门讲解(1)---让你瞬间明白如何安装jdk

博主有话说:学习这个东西一定要持之以恒!!!博主之前因为点事情半个月没学习,重新来过时,发现自己错过好多知识,正在一点一点往回补,博客也会陆续开始更新,希望大家多多支…

【AI视野·今日CV 计算机视觉论文速览 第272期】Fri, 20 Oct 2023

AI视野今日CS.CV 计算机视觉论文速览 Fri, 20 Oct 2023 Totally 62 papers 👉上期速览✈更多精彩请移步主页 Daily Computer Vision Papers Putting the Object Back into Video Object Segmentation Authors Ho Kei Cheng, Seoung Wug Oh, Brian Price, Joon Youn…

(二)docker:建立oracle数据库mount startup

这章其实我想试一下startup部分做mount,因为前一章在建完数据库容器后,需要手动创建用户,授权,建表等,好像正好这部分可以放到startup里,在创建容器时直接做好;因为setup部分我实在没想出来能做…

php对接飞书机器人

有同事接到对接飞书机器人任务,开发中遇到响应错误: {"code": 19021,"msg": "sign match fail or timestamp is not within one hour from current time" } 意思应该就是签名错误或者时间戳不在有效范围内等&#xff0c…

Java NIO

Java NIO 一,介绍 Java NIO(New IO)是 JDK 1.4 引入的一组新的 I/O API,用于支持非阻塞式 I/O 操作。相比传统的 Java IO API,NIO 提供了更快、更灵活的 I/O 操作方式,可以用于构建高性能网络应用程序。 …

京东数据分析:2023年9月京东白酒行业品牌销售排行榜

鲸参谋监测的京东平台9月份白酒市场销售数据已出炉! 9月白酒市场的整体热度较高,贵州茅台先是与瑞幸联名推出酱香拿铁,后又宣布与德芙推出联名产品酒心巧克力,引起了诸多消费者的关注。在这一热度的加持下,从销售上看&…

深入理解Redis集群模式、协议、元数据维护方式

文章目录 🍊 集群模式🍊 集群协议🍊 元数据维护方式🎉 集中式🎉 gossip 协议 📕我是廖志伟,一名Java开发工程师、Java领域优质创作者、CSDN博客专家、51CTO专家博主、阿里云专家博主、清华大学出…

第01章-Java语言概述

目录 1 常见DOS命令 常用指令 相对路径与绝对路径 2 转义字符 3 安装JDK与配置环境变量 JDK与JRE JDK的版本 JDK的下载 JDK的安装 配置path环境变量 4 Java程序的编写与执行 5 Java注释 6 Java API文档 7 Java核心机制:JVM 1 常见DOS命令 DOS(…

Lua-http库写一个爬虫程序怎么样 ?

以下是一个使用Lua-http库编写的一个爬虫程序,该爬虫使用Lua语言来抓取www.snapchat.com的内容。 代码必须使用以下代码:get_proxy -- 导入所需的库 local http require("http") local json require("json")-- 定义爬虫IP服务器 …

安装docker ,更换docker版本

docker dockerd & containerd Dockerd(Docker 守护进程)在其底层使用 Containerd 来管理容器。Containerd 是一个开源的容器运行时管理器,由 Docker 公司于2017年开发并开源,它负责实际的容器生命周期管理。 以下是 Docker 守…

力扣每日一题49:字母异位词分组

题目描述: 给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。 字母异位词 是由重新排列源单词的所有字母得到的一个新单词。 示例 1: 输入: strs ["eat", "tea", "tan", "ate&quo…

清华训练营悟道篇之浅谈操作系统

文章目录 前言系统软件执行环境操作系统的功能操作系统组成 前言 操作系统是一个帮助用户和应用程序使用和管理计算机资源的软件,它控制着嵌入式设备、更通用的系统(如智能手机、台式计算机和服务器)以及巨型机等各种计算机系统 系统软件 …

【前段基础入门之】=>CSS3新增渐变颜色属性

导语: CSS3 新增了,渐变色 的解决方案,这使得我们可以绘制出更加生动的炫酷的的配色效果 线性渐变 多个颜色之间的渐变, 默认从上到下渐变 background-image: linear-gradient(red,yellow,green); /*默认从上到下渐变*/默认从上…

期中考核复现

web 1z_php ?0o0[]1A&OoO[]2023a include "flag.php":尝试包含名为 "flag.php" 的文件。这意味着它会尝试引入一个名为 "flag.php" 的脚本文件,其中可能包含一些敏感信息或标志。 error_reporting(0):…

腾讯待办是不是停了?能准时提醒待办事项的APP

有不少网友会使用“腾讯待办”小程序来记录待办的事情,并且设置提醒时间,进行任务管理。不过有不少网友最近在使用腾讯待办小程序的时候,看到了“业务关停通知”的弹窗,想问一下,腾讯待办是不是停了?确实如…

如何在Puppeteer中设置User-Agent来绕过京东的反爬虫机制?

概述 京东作为中国最大的电商平台,为了保护其网站数据的安全性,采取了一系列的反爬虫机制。然而,作为开发者,我们可能需要使用爬虫工具来获取京东的数据。 正文 Puppeteer 是一个由 Google 开发的 Node.js 库,它提供…

VMware虚拟机中ubuntu网络连接不上

VMware虚拟机中ubuntu中网络连接不上 解决方案其他虚拟机网络 解决方案 1.选择VMware中编辑-虚拟网络编辑器-更改: 设置为你喜欢的模式,这里为NET模式 2.选中ubuntu虚拟机(关机后的虚拟机),点击:编辑虚拟机…

GoLong的学习之路(八)语法之Map

文章目录 Map初始化方式判断某个键是否存在map的遍历对value值遍历。对key值遍历 使用delete()函数删除键值对按照指定顺序遍历map元素为map的切片值为切片类型的map 做个题吧 Map 哈希表是一种巧妙并且实用的数据结构。它是一个无序的key/value对的集合,其中所有的…