2026年4月16日

計算ノードがNISクライアントにならない。無事なノードも

RPC: Unable to receive; errno = No route to host

と出るので、RPCによる通信に失敗しており、新規のNISクライアントが受付られていなさそう。

  • ログインノードからsshは通る
$ rpcinfo -p 192.168.1.10
   program vers proto   port  service
    100000    4   tcp    111  portmapper
    100000    3   tcp    111  portmapper
    100000    2   tcp    111  portmapper
    100000    4   udp    111  portmapper
    100000    3   udp    111  portmapper
    100000    2   udp    111  portmapper
    100004    2   udp    887  ypserv
    100004    1   udp    887  ypserv
    100004    2   tcp    887  ypserv
    100004    1   tcp    887  ypserv
$ nc -vz 192.168.1.10 887
Ncat: Version 7.92 ( https://nmap.org/ncat )
Ncat: No route to host.

$ nc -vz 192.168.1.10 111
Ncat: Version 7.92 ( https://nmap.org/ncat )
Ncat: Connected to 192.168.1.10:111.
Ncat: 0 bytes sent, 0 bytes received in 0.01 seconds.

うん、111は通るけど、887が駄目ですね。

サーバ側で開ける。

firewall-cmd --permanent --add-port=887/tcp
firewall-cmd --permanent --add-port=887/udp
firewall-cmd --reload

クライアントで確認。

$ nc -vz 192.168.1.10 887
Ncat: Version 7.92 ( https://nmap.org/ncat )
Ncat: Connected to 192.168.1.10:887.
Ncat: 0 bytes sent, 0 bytes received in 0.01 seconds.

通った。ypservが使うポートが起動するたびに変わるのが原因だった。

計算ノードでypbindが起動したが、まだNISを認識しない。これは/etc/nsswitch.confの順序が問題だった。passwd, group, shadowに対してnisを有線するように書き換えて

sudo systemctl restart ypbind

してからログインしなおしたらうまくいった。まとめると、

  • ypservが起動の度に異なるポートを使う設定になっていた
  • 計算ノードがメモリ枯渇で死亡。この時、ypbindも死亡。
  • つながらない原因を調べるため、ログインノードを再起動。このせいでypservが異なるポートを掴む
  • 計算ノードはログインノードが指定するポートで通信しようとするが、計算ノードのファイアウォールのせいで通信できずNISクライアントになれなかった。

つまり、計算ノードのypbindが死んだだけなら計算ノードの再起動でうまくいくはずだったが、ログインノードを再起動したために新たな問題を持ち込み、その切り分けができていなかった。

これ、正しい実装は、計算ノード側でypservが使うポートを固定することなんだけど、これやると全部再起動になって面倒だな・・・次の停電の時の対応にしよう(忘れそう)。

というわけで計算ノードを復帰。

sudo scontrol update NodeName=yagami01.appi.keio.ac.jp State=RESUME
$ sinfo
PARTITION AVAIL  TIMELIMIT  NODES  STATE NODELIST
main*        up 1-00:00:00      3   idle yagami01.appi.keio.ac.jp,yagami02.appi.keio.ac.jp,yagami03.appi.keio.ac.jp

復帰した!一週間かかったぞ。

結局、問題はログインノードのファイアウォールだったのだが、「ypservが起動するたびに異なるポートを掴むという仕様を知らなかった」「他のノードは無事だったのでログインノードを疑わなかった」のが原因究明を阻んだ。NISクライアントとして掴む時だけそのポートを使い、後は使わないので、一度NISクライアントになったノードはポートが移ってもNISクライアントであり続ける。

さすがにNISは卒業しないとだめか。でもLDAP面倒くさい・・・

研究室ミーティング。超新星爆発におけるRT不安定性と、チェスパズルの難易度推定。どちらも興味深かったです。

眠くて死んでしまう。