当前位置: 首页 > 后端技术 > PHP

我的服务器迁移经验分享

时间:2023-03-29 16:14:01 PHP

去年年底,由于使用云存储等原因,计划将服务器减少一个机柜。这样一来,今年机房每月的费用可以降低1万左右。这个任务我来回折腾了一段时间,现在做个笔记总结。主要是把redis服务和图片存储服务器拿下来。Redis的迁移有些机器配置比较低,Redis服务器比较多。去年新增的几台服务器都是128G的,所以原来的服务器需要集中存放在新的服务器上。redis数据库的迁移,大家还算熟悉。https://mengkang.net/424.html同步数据后,修改业务代码中的请求地址。注意:将启动命令添加到/etc/rc.local。在迁移之前的某个时间,需要观察和监控旧服务器没有任何请求。您可以一起使用netstat和tcpdump。比如迁移了192.169.50.138的6307的业务。可以在138服务器上使用netstat-anc|grep"138:6307"查看是否有请求,但是发现这个命令有时不准确,可以直接通过tcpdump直接监控网卡的流量tcpdump-iem2-vv-nnhost192.168.50.138andport6307最好收集一段时间的日志,后来发现gearman的业务不见了。图片存储重构使用的是网宿的云存储,所以大部分的回源压力都指向了云存储,而我们的源站只是作为备份。原来因为单机I/O压力过大和防止硬盘损坏,机房有4个磁盘阵列作为主存,这个分区有冗余,三个磁盘阵列现已下架。需要做的工作是通过rsync把图片资源同步到一台服务器上,然后在前端主机nginx上配置回源的域名和对应的目录。(还有遗漏,我们直接把部分用户头像搬回公司,通过rsync从公司发回机房,可以使用--bwlimit参数限速,使用iptraf-g来检查带宽使用情况。)crontab检查如上面提到的gearman业务,一般daemon进程都会在crontab中有监控shell脚本。请注意,当服务被重定位时,服务被重定位。有些服务可能暂时不会搬迁,不会暴露问题,比如周报、月报数据,可能要到下个月才能发现。同时,由于在我迁移redis之前,gearmanworker程序是以daemon进程的形式常驻内存,当我修改完各个redis服务的请求地址时,gearmanworker程序实际上还没有更新,所以上面提到的旧服务器仍然有请求。同样,重启迁移后的redis相关的守护进程。架构系统的更新可能会用于其他业务,因为我们每个服务器都不是一个单一的功能。比如一个redis服务器可能是keepalived的备份。然后需要找一个新的服务器添加为备份,这里面还涉及到新的nginx环境的搭建和配置,以及旧的负载均衡服务器的配置修改(后端服务器ip,图片资源回源请求地址,ETC。)。类似的还有php、java等的配置。云服务回源web服务器的配置(中间少了一个,后面补上)。同时代码上下、分发脚本、服务批量重启脚本也需要一起修改。关机重启是因为下架的机器分布在多个柜子里,现在我们要腾出一个柜子,那么有的机器就需要关机,(比较暴力,我笑了。)所以需要在需要之前查看每个服务器的/etc/rc.local文件,确保应该自启动的服务已经添加,其他初始化配置也正常。注意Redis缓存数据的保存和恢复。监控迁移完成后,除了常规的业务代码外,还需要关注图片资源来源是否正常,服务器I/O压力是否正常,查看是否有502、500,nginx日志中出现404错误。我还没看够近日,老铁开了直播。欢迎加入我们!PHP进阶之路——亿级光伏网站架构的技术细节与套路