《构建高可用Linux服务器 第3版》—— 2.5 紧急处理线上服务器故障的办法

本文涉及的产品
网络型负载均衡 NLB,每月750个小时 15LCU
应用型负载均衡 ALB,每月750个小时 15LCU
传统型负载均衡 CLB,每月750个小时 15LCU
简介:

本节书摘来自华章出版社《构建高可用Linux服务器 第3版》一 书中的第2章,第2.5节,作者:余洪春 ,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

2.5 紧急处理线上服务器故障的办法

很多时候,网站或业务系统的服务器出现了故障,我们必须紧急修复,保证网站或业务系统能够使用。一般我们会遇到哪些系统故障,又该如何来处理呢?接下来逐个分析。

2.5.1 更改Administrator密码导致计划任务无法执行

问题描述:公司有位系统管理员离职了,他曾负责管理多台Windows Server 2003服务器,于是负责安全的部门要求接手的系统管理员更改Administrator密码,粗心的系统管理员急急忙忙地更改了Windows Server 2003的Administrator密码,却发现Windows Server2003的计划任务(即Scheduled Tasks)全都执行不了,出现这个问题其实是因为Windows Server2003的计划任务都要求输入正确的Administrator密码。

解决办法:大家养成好习惯,每次更改完Windows Server 2003密码后一定要检查一下计划任务能否正常执行,否则很容易导致公司的重要业务执行不了,进而影响整个网站的运维及业务,希望此问题能引起大家的注意。

2.5.2 CentOS 5.8的root密码被恶意篡改

在公司的内部CentOS 5.8开发机器下,用户基本都是由su-切换到root,不过这时有一个问题,假如多人知道root的账号和密码,那么如果出现问题,你就不知道到底是谁干的坏事,日志里记录的都是root干的。新上架的开发服务器的root密码就曾被开发人员乱改。其实,这时候可以给他们的账户分配sudo权限,这样就可以通过log或last等命令查询开发人员做的事情了。

实际部署:我们可以建立一个admin组,让这个组的用户权限和root一样。我们的某开发小组有4个开发人员正准备使用新添置的开发服务器,我们可以准备给每一个开发人员分配一个账户,密码由他们各自保管,以后考虑将权限细化分配。具体步骤如下。

1)修改sudoers文件,即/etc/sudoers文件(执行visudo命令效果一样),在最后加入以下内容:

%admin ALL=(ALL) ALL
2)添加admin组,命令如下:

groupadd admin
3)添加用户,这里添加4个用户,分别对应4个开发人员,添加命令如下:

useradd yuhongchun

useradd wangxiaona

useradd zhanghua

useradd tangyihe
密码均由4个开发人员自己设置和保管,相互之间不知道对方的密码。

4)添加用户到admin组,命令如下:

usermod -a -G admin yuhongchun

usermod -a -G admin wangxiaona

usermod -a -G admin zhanghua

usermod -a -G admin tangyihe
这样每个开发人员就都有sudo权限了,而每个用户所做的事情基本可以通过日志查询到。注意:以上操作只适应于开发或测试环境,线上机器为了安全考虑,不建议分配具有sudo权限的用户。

2.5.3 bash文件损坏该如何正确处理

故障描述:在IP为192.168.21.36的FreeBSD 8.1 x86_64机器上安装软件时不小心将其依赖的库文件libintl.so.8丢失了,导致所有以bash为基础的shell用户不能登录。由于大家都喜欢在此机上用bash,所以均将其配置成了默认的shell,也就是说所有的用户都不能登录了,系统报错如下:

/libexec/ld-elf.so.1: Shared object "libintl.so.8" not found, required by "bash"

Connection to 192.168.21.36 closed.
解决方法如下所示。

1)用单用户模式进入系统;

2)扫描磁盘(此步操作是安全的),命令如下:

fsck -y
3)将文件系统重新挂载,命令如下:

mount -a
4)将root的默认shell切换到sh,命令如下:

chsh -s sh
5)其实进行到第4步,我们就可以用root以sh模式进入系统了,但为了完美解决问题,这时候可以安装一下bash,命令如下:

pkg_add -r-v bash
重启后一切正常,故障排除。

2.5.4 正确操作nohup让程序始终在后台运行

我的Nginx负载均衡器监控Nginx进程的脚本nginx_pid需要放入后台不间断运行,所以想用命令/bin/sh /data/nginx_pid.sh &来达到此目的,在输入完命令后我就关闭了终端,可再次登录终端时发现此程序并没有运行。忽然想起可能是因为没有使用nohup命令,试了试,果然如此,在带上nohup命令后就正常了。

我们的很多程序只是普通的程序,即使它们以&结尾,如果终端关闭,那么程序也会被关闭。为了能够在后台运行,我们需要使用nohup这个命令,原程序的标准输出被自动改向到当前目录下的nohup.out文件里,起到了log的作用。

但是有时候这样做会有问题,如果把终端关闭,进程也会被自动关闭,查看nohup.out可以看到在关闭终端的瞬间服务自动关闭了。

产生此问题的原因是:虽然Shell中提示了nohup成功,但还是需要按终端上的键盘任意键退回到Shell输入命令窗口,然后通过在Shell中输入exit来退出终端,而不是每次在nohup执行成功后直接关闭终端。这个问题很多朋友容易忽视,希望大家在工作中多加注意。

2.5.5 Nginx负载均衡器出现故障

在主Nginx负载均衡器上,由于nginx.conf配置文件有误,导致客户不能正常访问网站。网站架构用的是Nginx+Keepalived,这时我们可以紧急停掉主Nginx上的Keepalived,让从机接管;等网站稳定后,再来修复主Nginx负载均衡器。

注意 其实单纯停掉Nginx是解决不了问题的,因为我们的VIP此时还挂在主Nginx上面,要让从Nginx生效,停掉主Nginx上面的Keepalived是最好的方法(这个从Nginx机器就会将VIP地址接管过来)。

总而言之,线上环境的服务器排障要求我们在最短的时间内解决问题,这其实也是对系统管理员经验和能力的要求。我们平时应该总结在线上环境中容易出现的故障,做到未雨绸缪;平时在维护网站或系统时应该着重注意容易Crash的部分,多花些精力和时间在系统日志或服务日志上面,如果觉得压力过大,单机负载承受不了,可以考虑采用集群的方法来处理。

相关实践学习
小试牛刀,一键部署电商商城
SAE 仅需一键,极速部署一个微服务电商商城,体验 Serverless 带给您的全托管体验,一起来部署吧!
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
目录
打赏
0
0
0
0
1408
分享
相关文章
服务器数据恢复—NAS存储精简lv的故障的数据恢复案例
NAS数据恢复环境: QNAP TS-532X NAS设备中有两块1T的SSD固态硬盘和3块5T的机械硬盘。三块机械硬盘组建了一组RAID5阵列,两块固态硬盘组建RAID1阵列。划分了一个存储池,并通过精简LVM划分了7个lv。 NAS故障: 硬盘故障导致无法正常进入系统,7个lv分区丢失。
服务器数据恢复—服务器raid磁盘出现故障的数据恢复案例
一台服务器中有一组由三块SAS硬盘组建的raid阵列。服务器上部署的数据库存储在D分区,数据库备份存储在E分区。 服务器上一块硬盘指示灯显示红色。D分区不可识别。E分区虽然可以识别,但是E分区拷贝文件报错。 管理员重启服务器,先离线的硬盘上线开始同步数据,同步没有完成的情况下管理员将服务器强制关机,之后没有动过服务器。
在Linux服务器中遇到的立即重启后的绑定错误:地址已被使用问题解决
总的来说,解决"地址已被使用"的问题需要理解Linux的网络资源管理机制,选择合适的套接字选项,以及合适的时间点进行服务重启。以上就是对“立即重启后的绑定错误:地址已被使用问题”的全面解答。希望可以帮你解决问题。
89 20
服务器数据恢复—如何预防服务器故障?服务器发生故障如何恢复数据?
服务器常见故障: 硬件故障:磁盘损坏、电池故障等。 软件问题:操作系统崩溃、未知的程序运行错误等。 病毒破坏:勒索病毒加密、删除服务器数据等。 不可控力量;服务器浸水、火烧、机房倒塌等导致服务器损坏和数据丢失。 误操作:工作人员操作失误导致数据丢失,如格式化、删除、覆盖等。
70 16
服务器数据恢复—如何预防服务器故障?服务器发生故障如何恢复数据?
用 Go 语言轻松构建 MCP 客户端与服务器
本文介绍了如何使用 mcp-go 构建一个完整的 MCP 应用,包括服务端和客户端两部分。 - 服务端支持注册工具(Tool)、资源(Resource)和提示词(Prompt),并可通过 stdio 或 sse 模式对外提供服务; - 客户端通过 stdio 连接服务器,支持初始化、列出服务内容、调用远程工具等操作。
231 3
服务器数据恢复—raid6阵列硬盘故障导致上层虚拟机不可用的数据恢复案例
一台由16块硬盘组成的raid6磁盘阵列。磁盘阵列中有一块硬盘因为物理故障掉线,导致服务器上层虚拟机无法正常使用,部分分区丢失,重启物理服务器后发现数据丢失。
阿里云操作系统控制台——解决服务器磁盘I/O故障
阿里云操作系统控制台——解决服务器磁盘I/O故障
74 12
深度体验阿里云系统控制台:SysOM 让 Linux 服务器监控变得如此简单
作为一名经历过无数个凌晨三点被服务器报警电话惊醒的运维工程师,我对监控工具有着近乎苛刻的要求。记得去年那次大型活动,我们的主站流量暴增,服务器内存莫名其妙地飙升到90%以上,却找不到原因。如果当时有一款像阿里云 SysOM 这样直观的监控工具,也许我就不用熬通宵排查问题了。今天,我想分享一下我使用 SysOM 的亲身体验,特别是它那令人印象深刻的内存诊断功能。
Linux服务器部署docker windows
在当今软件开发中,Docker成为流行的虚拟化技术,支持在Linux服务器上运行Windows容器。流程包括:1) 安装Docker;2) 配置支持Windows容器;3) 获取Windows镜像;4) 运行Windows容器;5) 验证容器状态。通过这些步骤,你可以在Linux环境中顺利部署和管理Windows应用,提高开发和运维效率。
194 1
|
2月前
|
问题记录:解决Linux登录故障,/etc/passwd配置受损该怎么操作
修复/etc/passwd文件是解决Linux登录故障的重要步骤。通过进入单用户模式、挂载文件系统、恢复或手动修复/etc/passwd文件,可以有效解决该问题。保持定期备份系统配置文件是预防此类问题的最佳实践。
89 13

热门文章

最新文章