第9章 负载均衡集群日常维护

news2024/11/20 20:43:01

一个设计良好的高可用负载均衡集群,交付使用以后并不能一劳永逸。欲使其高效、稳定、持续对外服务,日常维护必不可少。

对于高可用负载均衡集群来说,有两种类型的维护形式:常规性维护与突发性维护。突发性维护一般指故障处理,而常规性的维护包括的内容大致包括但不限于:变更、监控、升级、

备份与恢复等。本章会列举一些日常维护的实际案例给读者作为经验讲解。

9.1 负载均衡集群故障处理

在高可用负载均衡集群中,一些设施或者应用发生故障虽然不影响用户的使用,但作为维护人员,发现故障应立即排查并进行故障恢复,并对处理进行记录。

故障一般有硬件故障、系统故障、软件故障、性能故障。硬件故障比较容易判断,找出问题所在以后进行维修或者更换。系统故障、软件故障等,排查的诀窍就是日志文件,这一点要牢记于心。

1.故障实例:通过VIP访问不到Web页面

一个刚刚部署好Web服务集群,前端Keepalived + LVS(DR直接路由模式),后端多个真实服务器部署Apache。实施人员反馈故障现象如下:
(1)能通过telnet VIP 80正常访问。

(2)单独访问每个真实服务器的页面,正常。

(3)通过域名访问Web页面(绑定了集群VIP),不正常。

作者认为,排查最有效的策略是先实后虚--先查后端真实服务器,再查前端负载均衡。反之,假使故障在后端真实服务器,却在负载均衡器上找病因,能有效么?

得到授权以后,开始登录后端真实服务器宿主系统,检查Apache服务的配置,一下子就发现问题所在:居然把集群的VIP显式的写在配置文件中(<VirtualHost  VIP:80>)。

修改Apache配置文件,将“<VirtualHost  VIP:80>”更正为“<VirtualHost  *:80>”,保存配置,重启Apache服务,再以VIP地址访问Web页面,一切正常。

2.故障实例:集群性能故障

一个长期运行的负载均衡集群,前端Keepalived + HAProxy,后端真实服务器部署Nginx,提供数十个域名Web访问。在没有做任何市场推广、也没有突然大幅度增加注册用户的情况下,某一个域名的访问异常缓慢,同一个页面用浏览器反复刷新甚至出现“503”错误,而在此负载均衡集群中的其他域名的访问却是正常的。

登录到主负载均衡器宿主系统,粗略查看HAProxy日志,发现大量的日志记录来自于网络爬虫,再以主机名与“spider”做关键字对访问日志做处理,果然是爬虫在耗费网络资源,如图9-1所示。

图9- 1

知道了问题所在,接下来的处理从两个方面入手:负载均衡器上限制单个IP地址的最大并发数,同时在Nginx上屏蔽某些恶意的爬虫。

(1)负载均衡器限制同一个网段所有地址的连接总数量。使用系统防火墙工具“iptables”,在从负载均衡器(BACKUP)宿主系统手动执行防火墙策略,确定该指令不会产生异常并能正确发挥作用以后,再应用到主负载均衡器(Master)。限制访问并发数的“iptables”指令如下:

/usr/sbin/iptables -I INPUT -p tcp --dport 80 -m connlimit --connlimit-above 80 --connlimit-mask 24 -j  DROP

/usr/sbin/iptables -I INPUT -p tcp --dport 443 -m connlimit --connlimit-above 80 --connlimit-mask 24 -j  DROP

请读者注意:上述语句中有大写与小写、有单横杠与有双横杠,不能混淆。

(2)Nginx限制爬虫。用禁止源地址的方法无法有效的屏蔽爬虫,因此可选的方法之一就是对用户代理(User-Agent)进行处理。在Nginx配置文件中,对爬虫的定义可以是全局,也可以单独针对某个主机名,单独的主机名配置,以“include”的形式包含到主配置文件即可。根据从主负载均衡器(MASTER)访问日志统计出来的恶意爬虫名字,在Nginx的配置文件中加入如下文本块:

    if ($http_user_agent ~* "FeedDemon|Indy Library|Alexa Toolbar|AskTbFXTV|AhrefsBot|CrawlDaddy|CoolpadWebkit|Feedly|UniversalFeedParser|ApacheBench|Microsoft URL Control|Swiftbot|ZmEu|oBot|jaunty|Python-urllib|lightDeckReports Bot|YYSpider|DigExt|HttpCli

ent|MJ12bot|heritrix|EasouSpider|Ezooms|Sogou spider|Sogou web spider|360Spider|YisouSpider" ) {

        return 403;

    }

请读者注意:小括号“()”里的字符串是一个整行,不要回车断行!保存修改,执行指令“nginx -t”进行语法检查,无误后重启“nginx”服务。以同样的方法,将集群中的其他Nginx做好处理。

通过上述两种方式进行处理后,发生性能故障的Web站点又恢复了正常。

9.2 负载均衡集群变更操作

集群容量扩充或缩减、现有集群中新增项目、变更策略、置换设施等,均在此范围。

对有前后端架构的负载均衡集群,变更操作时,先后端再前端,先从(BACKUP)后主(MASTER)。这样做的目的,是保证集群的服务不因变更操作而受影响。例如,在负载均衡集群中增加后端节点,正确有效的做法通常如下:

  1. 确认新增的后端,直接访问它承载的服务,状态正常。
  2. 将新增的后端加入到从负载均衡器(BACKUP)转发队列,客户端访问从负载均衡器(BACKUP)的地址及端口,可正确得到结果,并能跟踪确认用户的最终访问到达新增的节点(可通过负载均衡器日志与节点服务日志相互参照确认)。
  3. 用户访问量小的夜间,将从负载均衡器(BACKUP)的配置同步到主负载均衡器(MASTER),然后重启主负载均衡器系统或者服务。重启主负载均衡器(MASTER)期间,从负载均衡器(BACKUP)将主动接管主负载均衡的所有任务,不会导致服务不可用的风险。

后端真实服务器节点的撤离,可直接关闭其上的服务甚至是系统,负载均衡器的健康检查将自动将其从转发队列里踢出,不会对用户的访问造成影响,然后再在主从负载均衡器删掉相关条目,即可平稳将节点下线。

9.4 负载均衡集群升级

不论哪一种类型的高可用负载均衡集群,都可以分为系统升级和应用升级两个大项。在进行升级前,做好是否必须升级的评估。升级是否解决已经存在的缺陷?升级是否能大幅度提高整体性能?升级失败是否可以快速、有效回退?

在做好升级测试以后,正式进行升级,一定要按对可用性影响最小的方式进行,这个可参考软件工程“灰度发布”。

9.5 负载均衡集群备份与恢复

运行在Proxmox VE超融合集群上的高可用负载均衡集群,备份轻而易举,它将整个主机进行完整备份。如果不是这样的运行环境,则需要对数据进行选择性备份,并启动定时任务,进行关键数据的自动备份。

Proxmox VE超融合集群从备份进行恢复相当简单和容易,选中需要恢复的主机,单击按钮“还原”, 余下的事情交给时间,如图9-1所示。

图9- 5

传统方式的恢复,就要复杂和耗时一些。这些过程可能包括:安装系统、安装软件、初始化、复制数据、调试、上线

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

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

相关文章

最大数字——蓝桥杯十三届2022国赛大学B组真题

问题分析 这道题属于贪心加回溯。所有操作如果能使得高位的数字变大必定优先用在高位&#xff0c;因为对高位的影响永远大于对低位的影响。然后我们再来分析一下&#xff0c;如何使用这两种操作&#xff1f;对于加操作&#xff0c;如果能使这一位的数字加到9则变成9&#xff0…

Docker与Harbor:构建企业级私有Docker镜像仓库

目录 引言 一、本地私有仓库 &#xff08;一&#xff09;基本概述 &#xff08;二&#xff09;搭建本地私有仓库 1.下载registry镜像 2.启动容器 3.上传本地镜像 4.客户端下载镜像 二、Harbor简介 &#xff08;一&#xff09;什么是 Harbor &#xff08;二&#xff…

IT外包能在企业上云时提供什么帮助?

在云计算不断发展的背景下&#xff0c;企业对IT部门的要求日益提高&#xff0c;越来越多的企业开始考虑将IT系统迁移到云上。因此&#xff0c;IT外包也成为企业成功上云的重要支持之一。IT外包在企业上云时具体能提供什么帮助&#xff1f;本文将对此进行详细阐述。 业务重心转移…

必应bing国内广告如何开户,怎么收费?

搜索引擎广告作为直接触达潜在客户的有效途径之一&#xff0c;日益受到企业的重视&#xff0c;必应Bing作为全球第二大搜索引擎&#xff0c;在中国市场同样拥有庞大的用户群体&#xff0c;为企业提供了不可忽视的广告投放平台。 一、必应bing国内广告开户流程 1、需求分析与咨…

C语言 循环语句 (3) for 循环语句

接下来 我们来看第三个 for语句 基本语句是 for关键字 然后小括号 括号中三个表达式 然后它对表达式2进行判断 如果表达式2条件成立 则走进循环体 执行完循环体 会回来执行表达式3 然后再返回来 继续对表达式2进行判断 如果表达式2 还是成立 这继续循环往复 直到表达式2的条件…

游戏理解入门:Rust+Bracket开发一个小游戏

1. Game loop 使用game loop可以使得游戏运行更加流畅和顺滑&#xff0c;它可以&#xff1a; 初始化窗口、图形和其他资源&#xff1b;每当屏幕刷新他都会运行(通常是每秒30,60 )&#xff1b;每次通过循环&#xff0c;他都会调用游戏的tick()函数。 大致的原理流程如下&…

那个在买珠宝的年轻人

金价搭上过山车&#xff0c;今年以来价格一路飙涨。 珍珠身价同步飙升&#xff0c;晋级珠宝圈“新宠”。 文玩圈“减龄”&#xff0c;盘珠串不再只是“老头乐”。 月薪3000的年轻人&#xff0c;悄悄实现“宝石”自由。 黄金珠宝走俏&#xff0c;这届年轻人到底有着怎样的珠宝…

揭秘文件加密利器:24年度最值得信赖的5大加密软件评测

数据安全与隐私保护已成为我们每个人都必须面对的重要问题。 文件加密软件作为保障数据安全的关键工具&#xff0c;其重要性不言而喻。 在众多的加密软件中&#xff0c;哪些软件能够在保障数据安全的同时&#xff0c;又具备良好的易用性和稳定性呢&#xff1f; 本文将为您揭秘…

快过VS Code,10天暴增20k star,高性能多人协作IDE横空出世

道歉 其实不意味着道歉的人错了 而是他认为这段关系 比自己的尊严更重要 失败了 不是说你有多差 而是说 你需要更努力了 写代码最重要的一个选择就是选哪个IDE了&#xff0c;目前主流的选择是vscode和IDEA了。 但是vscode虽然轻量&#xff0c;但是对于大型的项目仍然显得…

[Meachines][Hard]Napper

Main $ nmap -p- -sC -sV 10.10.11.240 --min-rate 1000 $ curl http://10.10.11.240 $ gobuster dir -u "https://app.napper.htb" -w /usr/share/wordlists/seclists/Discovery/Web-Content/raft-small-words-lowercase.txt -k 博客 $ ffuf -c -w /usr/share/se…

某盾BLACKBOX逆向关键点

需要准备的东西&#xff1a; 1、原JS码 2、AST解混淆码 3、token(来源于JSON) 一、原JS码很好获取&#xff0c;每次页面刷新&#xff0c;混淆的代码都会变&#xff0c;这是正常&#xff0c;以下为部分代码 while (Qooo0) {switch (Qooo0) {case 110 14 - 55: {function O0…

Lib city笔记:TrajectoryDataset

1 AbstractDataset 抽象类&#xff0c;所有数据集的基类 2 TrajectoryDataset 2.1 __init__ 2.2 get_data 2.3 cutter_filter 2.3.1 按照时间间隔切割 2.3.2 按照同一天切割 2.3.3 按照固定窗口长度切割 cut完的轨迹样子 每一个key是一个轨迹的id&#xff0c;对应的value内容…

class与对象的关系

经典的&#xff0c;房子图纸&#xff0c;和创建的房子之间的关系&#xff0c; 类实例化出对象就像现实中使用建筑设计图建造出房子&#xff0c;类就像是设计图&#xff0c;只设计出需要什么东西&#xff0c;但是并没有实体的建筑存在&#xff0c;同样类也只是一个设计&#xf…

Rust读写CSV文件 一维Vec类型元素、二维Vec类型元素写入CSV文件

本文主要介绍Rust读写CSV文件方法&#xff0c; Vec类型元素基本操作方法&#xff0c;Rust把一维Vec类型元素、二维Vec类型元素写入CSV文件方法。 实例测试&#xff1a; 要求读“log.csv”文件数据&#xff0c;把“时间”列数据和“次数”列数据写入日志处理结果1.csv文件&…

暴力破解【1】

1.c/s架构暴力破解 1.1 c/s架构暴力破解前提条件 知道目标地址&#xff0c;端口&#xff0c;协议&#xff0c;无后端验证、用户名字典、密码字典 1.2 c/s架构暴力破解工具 hydra、bruter、medusa爆破 2.b/s架构暴力破解 2.1 无验证码绕过 不带验证码无测试次数的直接使…

[微信小程序] 入门笔记1-滚动视图组件

[微信小程序] 入门笔记1-滚动视图组件 1.页面&组件&渲染 在小程序是由一个个页面page组成, 而页面又是由一个个组件component组成.和网页类似,这里的组件指的就是输入框<input>,按钮<button>,文本<text>,图片<image>等元素.如果你学过网页一…

快速排序(java细节实现)

目录 快速排序: Hoare版: 挖坑法 快速排序的优化 快速排序的非递归实现 小结 从小到大排序 快速排序: 基本思想为&#xff1a;任取待排序元素序列中的某元素作为基准值&#xff0c;按照该排序码将待排序集合分割成两子序列&#xff0c;左子序列中所有元素均小于基准值&…

二叉树的基础遍历2.0

1.0入口&#xff1a;二叉树的基础遍历-CSDN博客 在1.0中使用的是简单的结构体建树&#xff0c;本文注重用二维vector建树。 前序&#xff0c;中序和后序的分析1.0已给出&#xff0c;本文不做过多介绍&#xff0c;本文重点讲二叉树的层序遍历。 先奉上前中后序的代码&#xf…

只允许内网访问时,如何设置hosts

1、Hosts文件简介 hosts文件是一个没有扩展名的计算机文件&#xff0c;用于将主机名与对应的 IP 地址关联起来。在操作系统中&#xff0c;hosts文件通常用于在本地解析域名&#xff0c;以便将域名映射到特定的IP地址。这个文件可以用来屏蔽广告、加速访问特定网站、解决DNS解析…

计算机网络技术主要学什么内容,有哪些课程

计算机网络技术专业是一个涉及理论与实践紧密结合的学科&#xff0c;主要学习内容有计算机网络基础、网络设备技术、网络编程等内容&#xff0c;以下是上大学网&#xff08;www.sdaxue.com&#xff09;整理的计算机网络技术主要学什么内容&#xff0c;供大家参考&#xff01; 基…