ユーザーから送信された科学計算を実行するウェブサーバーがあります。計算には長時間かかる可能性があるため、Torqueリソースマネージャー(別名pbs_server)を使用して、それらを配布/スケジュールします少数の計算ノード。 Torqueは、通信のために_/tmp
_ディレクトリのUNIXドメインソケットを利用しますが、httpサーバー(およびそこから分岐したプロセス)は、真の_/tmp
_ディレクトリにアクセスできないため、これらのプロセスにはソケットが表示されます見つからないため、エラーが発生します。
詳細:
PrivateTmp=true
_が設定されたサービスとして実行されます。これにより、サービスは「真の」ルート/ tmpとは無関係の独自の_/tmp
_ディレクトリを持つことになります。qsub
へのシステムコールを行います。ジョブを送信するコマンド。qsub
はPHPから呼び出されるため、Apacheから「偽の」_/tmp
_ディレクトリを継承します。qsub
は、内部的に_/tmp/trqauthd-unix
_にあるUNIXソケットへの接続を試みます。しかし、実際の/ tmpディレクトリが表示されないため、次のエラーで失敗します:Error in connection to trqauthd (15137)-[could not connect to unix socket /tmp/trqauthd-unix: 2]
私が達成できる唯一の解決策は、systemdの下のhttpd.serviceファイルを編集し、PrivateTmp
をfalseに変更することでした。これはDID問題を修正します。しかし、私は(おそらく)PrivateTmpが正当な理由でtrueに設定されていたので)これを実行したくありません。
私が知りたいのは、ソケットを別の場所に作成する方法や、Apache(およびフォークされたプロセス)から使用できるソケットへのリンクを作成する方法があるかどうかです。
ソケットへのリンクを作成するのは簡単ですが、別の場所でソケットを探すようにqsub
を構成する方法がわからないため、問題は解決しません。
ソケットはtrqauthd
サービス(ジョブを実行するためのユーザー認証を実行するトルクプログラム)によって作成されることに注意してください。 trqauthdのドキュメントでは、ソケットの場所を構成できると(あいまいなメモで)言及されていますが、どのようにしてそれを実現できるか(さらに重要なことに、qsubおよびその他のコマンドに通知する方法)に関するドキュメントには何も示されていません新しい場所について)。
PrivateTmp for Apacheを無効にすることなく、PHPなしでTorqueにジョブを送信する方法を見つけるのに役立つ可能性のある提案をありがとうございます。
2013年、 trqauthd
はIPソケットの使用を停止 し、サーバーのホームディレクトリでUnixドメインソケットに切り替えました。
同じ年の後半、 trqauthd
がホームディレクトリから/tmp
に切り替わりました。
ご覧のとおり、/tmp/trqauthd-unix
を変更するためにアダプティブコンピューティングが提供した唯一のオプションは、--with-trqauthd-sock-dir
ビルド構成オプションを変更して/tmp
以外の場所を示すようにプログラムをソースから再コンパイルすることです。 (/run/trqauthd
多分?)