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

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

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

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

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://xiahunao.cn/news/3019592.html

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

相关文章

【每日刷题】Day34

【每日刷题】Day34 &#x1f955;个人主页&#xff1a;开敲&#x1f349; &#x1f525;所属专栏&#xff1a;每日刷题&#x1f34d; &#x1f33c;文章目录&#x1f33c; 1. 1047. 删除字符串中的所有相邻重复项 - 力扣&#xff08;LeetCode&#xff09; 2. 1475. 商品折扣后…

俄罗斯副总理暗示欧佩克+或增加原油产量,亚洲早盘油价小幅下跌

在俄罗斯副总理亚历山大诺瓦克暗示欧佩克可能采取行动增加原油产量后&#xff0c;亚洲早盘的油价出现小幅下跌。这一消息引起了市场对原油供给增加的担忧&#xff0c;导致油价走低。 City Index和FOREX.com的市场分析师Fawad Razaqzada表示&#xff0c;虽然原油价格在技术上尚…

JAVA(三)常用类和API

目录 常用类与基础API---String String的内存结构 构造器和常用方法 字符串构建 String与其他结构间的转换 String的常用API 系列1&#xff1a;常用方法 系列2&#xff1a;查找 系列3&#xff1a;字符串截取 系列4&#xff1a;和字符/字符数组相关 系列5&#xff1a;开头…

vitis 2020.1 Up date XSA文件后,编译不通过

原来是可以编译通过的&#xff0c;升级XSA文件后&#xff0c;出现各种问题&#xff0c;pmufw没法编译通过 xpfw_config.h:14:10: fatal error: xparameters.h: No such file or directory Vitis 2020.2 - fatal error: xparameters.h: No such file or directory (xilinx.com)…

vscode与git下载安装

粉丝不过W git下载地址: https://git-scm.com/downloads, 安装git时, 记住你安装Git的路径 vscode下载地址: https://code.visualstudio.com/ 下载完后, 并默认安装好, 你就可以进入配置git的环境变量了, 点击win, 点击设置 在搜索框里搜索, 高级系统设置 点到 高级 , 然后点击…

打造文旅客运标杆!吐鲁番国宾旅汽携苏州金龙升级国宾级出行体验

新疆&#xff0c;这片神秘的大地&#xff0c;从无垠沙漠到高耸天山&#xff0c;从古老丝路到繁华都市&#xff0c;处处都散发着独特的魅力&#xff0c;吸引着四面八方的游客。据新疆维吾尔自治区文化和旅游厅数据显示&#xff0c;刚刚过去的“五一”小长假&#xff0c;新疆全区…

开放原子龙蜥社区 2 大学习赛首批获奖者名单公布

近日&#xff0c;开放原子开源基金会联合龙蜥社区推出「人人都可以参与开源」和「基于 ECS Intel 实例部署 GPT-2 大语言模型」两大学习赛&#xff0c;此赛题长期有效&#xff0c;且有开放原子开源基金会和龙蜥社区共同提供的丰厚双重奖励机制。赛题一经发布&#xff0c;吸引了…

线程池(一)

1.线程池的基本概念 1.1 什么是线程池&#xff1a; 线程池是一种利用池化技术思想来实现的线程管理技术&#xff0c;主要是为了复用线程、便利地管理线程和任务、并将线程的创建和任务的执行解耦开来。我们可以创建线程池来复用已经创建的线程来降低频繁创建和销毁线程所带来的…

EIA预测2024年全球石油市场供求平衡,非欧佩克产油国将抵消欧佩克减产影响

美国能源信息署&#xff08;EIA&#xff09;预测&#xff0c;2024年全球石油市场将达到供求平衡状态&#xff0c;主要原因是非欧佩克国家的原油产量增长将抵消欧佩克近期的减产。根据EIA周二公布的短期能源展望报告&#xff0c;全球原油供应量预计将增加至1.0276亿桶/日。而与此…

Linux学习之高级IO

之前的内容我们基本掌握了基础IO&#xff0c;如套接字&#xff0c;文件描述符&#xff0c;重定向&#xff0c;缓冲区等知识都是文的基本认识&#xff0c;而高级IO则是指更加高效的IO。 对于应用层&#xff0c;在读写的时候&#xff0c;本质就是把数据写给OS&#xff0c;若一方…

一季度盈利大增65.62%,神州泰岳游戏表现抢眼

易采游戏网5月8日消息&#xff0c;近日国内知名游戏上市公司神州泰岳公布了其2023年一季度的财务报告&#xff0c;报告显示&#xff0c;公司一季度盈利大增65.62%&#xff0c;这一数字远超过市场预期&#xff0c;引发了业界的广泛关注。 神州泰岳此次盈利大增&#xff0c;主要得…

#Pandas数据分析——超好用的Groupby与map、apply、applymap详解

apply应该是大家的老朋友了&#xff0c;它相比agg和transform而言更加灵活&#xff0c;能够传入任意自定义的函数&#xff0c;实现复杂的数据操作。在Pandas数据处理三板斧&#xff0c;你会几板&#xff1f;中&#xff0c;介绍了apply的使用&#xff0c;那在groupby后使用apply…

ruoyi-nbcio 基于flowable规则的多重并发网关的任意跳转

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码&#xff1a; https://gitee.com/nbacheng/ruoyi-nbcio 演示地址&#xff1a;RuoYi-Nbcio后台管理系统 http://218.75.87.38:9666/ 更多nbcio-boot功能请看演示系统 gitee源代码地址 后端代码&#xff1a; h…

Qt 6.7 正式发布!

本文翻译自&#xff1a;Qt 6.7 Released! 原文作者&#xff1a;Qt Group研发总监Volker Hilsheimer 在最新发布的Qt 6.7版本中&#xff0c;我们大大小小作出了许多改善&#xff0c;以便您在构建现代应用程序和用户体验时能够享受更多乐趣。 部分新增功能已推出了技术预览版&a…

数据丢失不慌张,手机数据恢复一键解决!

如今手机已经成为我们生活中不可或缺的一部分。无论是工作、学习还是娱乐&#xff0c;手机都扮演着重要的角色。随着使用时间的增加&#xff0c;手机数据丢失的问题也时常发生。那么手机数据恢复有哪些方法呢&#xff1f;面对这种情况&#xff0c;先不要慌张&#xff0c;本文将…

STEP BY STEP带你使用Docker搭建MySql-MGR高可用集群

数据的重要性 数据已成为当今数字时代最重要的资产之一&#xff0c;对于企业的成功至关重要。它可以帮助企业了解客户、市场和自身运营&#xff0c;提高运营效率&#xff0c;做出明智决策&#xff0c;推动创新&#xff0c;并获得竞争优势。 数据的采集&#xff0c;存储&#…

数字人制作原理:捕捉、建模与合成

在感知系统中&#xff0c;我们与外部合作者一起创建逼真的 3D 人类&#xff0c;其行为可以像虚拟世界中的真实人类一样。这项工作在今天有许多实际应用&#xff0c;并且对于元宇宙的未来至关重要。但是&#xff0c;在感知系统中&#xff0c;我们的目标是科学的——通过重现人类…

【前端Vue】——初识Vue.js

&#x1f4bb;博主现有专栏&#xff1a; C51单片机&#xff08;STC89C516&#xff09;&#xff0c;c语言&#xff0c;c&#xff0c;离散数学&#xff0c;算法设计与分析&#xff0c;数据结构&#xff0c;Python&#xff0c;Java基础&#xff0c;MySQL&#xff0c;linux&#xf…

Vue线上环境禁止打印console.log

当我们在开发项目时&#xff0c;我们会使用大量的console.log&#xff0c;这样方便我们去调试&#xff0c;但是当正常上线后&#xff0c;在生产环境&#xff0c;我们是不喜欢打印的信息暴露在浏览器控制台的。 这时候我们可以通过一行代码解决&#xff1a; 在main.js文件中添加…

首个ICLR时间检验奖出炉,机器学习大牛Max Welling和OpenAI创始团队成员Diederik Kingma获奖

国际表征学习大会&#xff08;ICLR&#xff09;是机器学习领域的一个学术会议&#xff0c;每年一次&#xff0c;通常在每年四月底或五月初举行。会议包括特邀演讲以及经评审论文的口头和海报展示。 ICLR 由 Yann LeCun&#xff08;杨立昆&#xff09;和 Yoshua Bengio 两位图灵…