2

去年年底因为使用了云存储和其他方面的原因,计划的将服务器缩减一个机柜出来。这样今年每月机房的费用可以减少1万左右。前前后后抽空在弄这个任务,现做个笔记小结下。以redis服务和图片存储服务器的下架为主。

Redis 的迁移

原来一些机器的配置比较低,Redis 服务器比较多。去年新增的几台服务器都是128G,所以需要将原来的服务器集中存放到新服务器上。redis 数据库的迁移,也还算轻车熟路了。https://mengkang.net/424.html 数据同步完毕之后,再到业务代码中修改请求地址。
注意事项:
将启动命令添加到/etc/rc.local中。
迁移前一段时间需要观察监控旧服务器的确是没有请求了,可以通过netstat配合tcpdump一起。比如迁移的时192.169.50.1386307的业务。可以在138服务器上通过

netstat -anc|grep "138:6307"

查看是否有请求,但是发现这个命令有时候不准,同时可以直接通过tcpdump直接监控网卡的流量

tcpdump  -i em2 -vv -nn host  192.168.50.138 and  port 6307

最好是收集一定周期的日志,后期我就发现gearman的业务的遗漏。

图片存储的重构

因为使用了网宿的云存储,大部分的回源压力都是指向云存储的,而我们源站只是做以为一个备份,原来因为单机 I/O 压力过大和防止硬盘损坏,机房有4台磁盘阵列作为主要存储,本部分区存在冗余,现在下架三台。需要做的工作是将图片资源通过rsync同步到一台服务器上,然后在前端主机nginx配置回源的域名和对应的目录。(还是有遗漏,部分用户头像被我们直接搬回公司了,通过rsync从公司回传到机房了,可以通过--bwlimit参数限速。通过iptraf -g来查看带宽使用情况。)

Crontab 的检查

比如上面说的gearman的业务,一般守护进程都在crontab都会有监控的shell脚本。注意该服务的搬迁时,该服务的搬迁。有些服务可能一时半会没搬迁不会显露出问题,比如周报、月报数据,可能下个月才发现。
同时,由于gearman worker程序是在我迁移redis之前就以守护进程的形式常驻内存了,当我修改完各个redis服务的请求地址时,gearman worker的程序实际还没更新的,所以出现了上面说的老服务器还有请求的情况。同理这些和迁移的redis有关的守护程序,重启下。

架构体系的更新

由于我们各个服务器都并非单一职能的,所以可能用作其他业务。比如一台redis服务器可能是keepalivedbackup。那么需要新找一台服务器添加为backup,同时涉及到新nginx环境的搭建,配置,旧的负载均衡服务器的配置修改(后端服务器ip,图片资源回源请求地址等)。类似的还有php,java的配置等。
云服务的回源 web 服务器的配置(中间漏了一台,后期给补上了)。
同时,代码上下、分发脚本,服务批量重启脚本,也需要配合一起修改。

关机重启

因为下架的机器分布在多个机柜,现在要腾出来一个机柜,那么有的机器就需要断电了,(比较暴力,见笑了。)所以需要之前要检查各个服务器的/etc/rc.local文件,确保应该自启动的服务都已经添加了,其他初始化的配置也都正常。注意 Redis 缓存数据的保存和恢复。

监控

迁移完毕之后,除了常规的业务代码,还需要注意图片资源的回源是否正常、服务器 I/O 压力是否正常、检查nginx日志是否出现502,500,404错误。

没看够 最近老铁开了直播,欢迎来捧场!


周梦康
9k 声望6.7k 粉丝

退隐江湖