记一次FastDFS问题的排查。
FastDFS基本架构特点鲜明,分为tracker、storage两个模块,前者一个,后者多个,用以保证“分布式、冗余式”,因此后者一般多个服务器且一个服务器放一个,一台服务器允许同时具有tracker和storage(一般也的确如此,毕竟tracker不怎么占空间)。
tracker只作为汇总者、统计者、通知者角色,面向上层业务通知;storage除了业务上的“存储”,也有通知功能,但是仅面向tracker,用以让tracker知道自己的信息、实现间接对外开放和分布式冗余存储。
部署注意事项有二。
一为,必须有一个nginx凌驾于tracker、storage之上与后两者交互,虽然tracker只是作为一个中间商不参与任何数据流而storage参与最终的数据流交互,但是storage不能直接对外,必须通过该更上层的nginx;
二为,storage自己服务器居然也必须有一个“内置”nginx,用以与更上层、更外部进行交互。本次问题根源在于“内置”nginx挂了。
首先根据更上层、更外部的nginx的日志发现,上行数据流不可获取(更上层nginx与storage之间),进而发现storage的80端口不可访问;顺带发现storage连telnet等基础命令都没有,用scp、rpm等命令处理之,期间涉及rpm -qa与netstat等命令,此为其他问题。一开始以为80不可用,是因为防火墙问题(顺带发现是centOS7,无iptables而是firewalld),进而yum安装(此时居然临时有了外网权限),同时用systemctl等systemd模块命令管理(状态、服务器重启自启动、启动、关闭等)。结果发现与防火墙无关,只是对应80的服务未启,对应服务是“内置”nginx,该nginx居然在FastDFS文件夹内部。
启动“内置”nginx,关闭不必要的防火功能,业务启动,恢复正常。