You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

迁移服务器后IEx无法连接远程shell问题排查求助

问题背景

我们将生产环境的推送服务器迁移至新环境,通过安装新服务器并复制内容完成操作,怀疑部分复制内容需修改但无法定位。

使用版本

推测为Elixir 1.10.1。

操作步骤

  1. 通过push_server start_iex脚本启动IEx,执行命令:
/var/www/push_server/releases/0.6.2/iex --cookie 3NEQTAUBMGBZPSFEWWTGFUNUKWVKBAS5VD3TBC3HZYXI7CIMNJRA==== --sname push_server --erl '-mode embedded' --erl-config /var/www/push_server/tmp/push_server-0.6.2-20230630162707-579c.runtime --boot /var/www/push_server/releases/0.6.2/start --boot-var RELEASE_LIB /var/www/push_server/lib --vm-args /var/www/push_server/releases/0.6.2/vm.args --werl
  1. 尝试通过push_server remote启动远程会话,执行命令:
/var/www/push_server/releases/0.6.2/iex --cookie 3NEQTAUBMGBZPSFEWWTGFUNUKWVKBAS5VD3T3HZYXI7CIMNJRA==== --sname rem-c8cc-push_server --remsh push_server --boot /var/www/push_server/releases/0.6.2/start_clean --boot-var RELEASE_LIB /var/www/push_server/lib

错误信息

Erlang/OTP 23 [erts-11.0.1] [source] [64-bit] [smp:2:2] [ds:2:2:10] [async-threads:1] [hipe]

Could not contact remote node push_server@emtpush, reason: :nodedown. Aborting...

已做排查

  • 两个命令使用相同cookie;在第一个会话执行node得到的节点名与第二个会话提示已下线的节点一致;原生产服务器可正常执行远程命令。
  • 尝试指定remsh为push_server@emtpush、push_server@127.0.0.1、push_server@localhost,IP方式提示未启用全限定主机名,其余方式仍报错。

求助问题

  1. 是否存在明显错误?
  2. 还可分析哪些数据来定位问题?

解答

1. 明显错误排查

  • Cookie不一致:对比两个命令的cookie发现,远程命令的cookie少了BC字符(原启动命令cookie是3NEQTAUBMGBZPSFEWWTGFUNUKWVKBAS5VD3TBC3HZYXI7CIMNJRA====,远程命令里是3NEQTAUBMGBZPSFEWWTGFUNUKWVKBAS5VD3T3HZYXI7CIMNJRA====)。Erlang节点间通信要求cookie完全一致,差一个字符都会导致节点无法连通,直接触发:nodedown错误。
  • 主机名解析隐患:新环境下emtpush主机名可能存在解析异常,若/etc/hosts未配置该主机名指向127.0.0.1,Erlang节点无法正确解析对方节点的主机名部分,也会导致连通失败。

2. 后续定位分析方向

  • 验证节点连通性:
    • 在启动的IEx会话中执行Node.list(),查看是否能发现远程节点(先启动远程会话再执行);
    • 使用Erlang命令net_adm:ping(push_server@emtpush).在本地节点测试连通性,返回:pong表示正常,:pang表示不通。
  • 检查vm.args配置:查看/var/www/push_server/releases/0.6.2/vm.args中的-name或-sname配置,确认节点名称是否与实际启动的一致;同时检查是否有-setcookie配置,若存在会覆盖命令行传入的cookie,导致冲突。
  • 排查网络与端口:确保新环境下4369端口(epmd服务端口)未被防火墙拦截,执行epmd -names查看已注册的节点,确认epmd服务正常运行。
  • 确认主机名配置:执行hostname命令检查服务器主机名是否为emtpush,若不一致,修改主机名或在/etc/hosts中添加127.0.0.1 emtpush映射。
  • 查看运行日志:检查推送服务器的日志文件(通常在/var/www/push_server/logs目录下),查找节点启动失败、cookie不匹配或网络相关的错误信息。

内容的提问来源于stack exchange,提问作者Sinc

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 14:52:42