提交Storm拓扑后Worker运行异常,日志提示Failed to bind to XXX
现象描述
提交业务拓扑后,发现Worker无法正常启动。查看Worker日志,日志提示Failed to bind to: Host_ip:Port。
可能原因
随机端口范围配置错误。
定位思路
- 检查worker相关信息日志。
- 检查绑定端口的进程信息。
- 检查随机端口范围配置。
原因分析
- 通过SSH登录Worker启动失败主机,通过netstat -anp | grep <port>命令,查看占用端口的进程ID信息。其中port修改为实际端口号。
- 通过ps -ef | grep <pid>命令查看进程的详细信息,其中pid为查询出的实际进程ID。
发现占用端口的进程为worker进程,该进程为另一个拓扑业务进程。同时根据进程详细信息发现,分配给该进程的端口为29122。
- 通过lsof -i:<port>命令,查看连接详细信息。其中port为实际端口号。
发现29101端口连接对端端口为21005,而21005为Kafka服务端端口。
说明业务层作为客户端连接Kafka获取消息,业务端口分配通过OS的随机端口分配范围来确定。
- 通过cat /proc/sys/net/ipv4/ip_local_port_range命令查看随机端口范围。
- 发现随机端口范围过大,和MRS的服务端口范围存在冲突。
MRS的服务端口范围:20000~30000。
处理步骤
- 修改随机端口范围。
vi /proc/sys/net/ipv4/ip_local_port_range
32768 61000
- 停止占用服务端口的业务进程,释放端口。(停止业务拓扑)