私たちは、ユーザーが提出した科学的計算を実行するWebサーバーを持っています。計算の実行に時間がかかることがあるので、次のようにします。トルクリソースマネージャ(別名pbs_server)は、少数のコンピューティングノードにリソースを配布/予約します。 Torqueは/tmp
ディレクトリのUnixドメインソケットを使用して通信しますが、httpサーバー(およびここで作成されたプロセス)は物理ディレクトリにアクセスできないため、これらの/tmp
プロセスではソケットが欠落しているように見え、エラーが発生します。
詳細:
- Webサーバーは、システム属性が設定されているサービスでApacheを実行しています
PrivateTmp=true
。これにより、サービスは/tmp
「実際の」ルート/ tmpとは別に独自のディレクトリを持ちます。 - これらのアクションは実際にはPHP(Apacheプロセスで実行)から送信されます。 PHPは、
qsub
ジョブを送信するために使用されるTorqueコマンドであるシステムコールを実行します。qsub
PHPから呼び出されるので、Apacheの「偽の」/tmp
ディレクトリを継承します。 qsub
内部的にあるUnixソケットに接続しようとします/tmp/trqauthd-unix
。ただし、実際の/ tmpディレクトリが表示されないため、次のエラーで失敗します。Error in connection to trqauthd (15137)-[could not connect to unix socket /tmp/trqauthd-unix: 2]
私が実装できる唯一の解決策は、systemdの下のhttpd.serviceファイルを編集してPrivateTmp
falseに変更することでした。これは実際に問題を解決しました。しかし、私はそうしたくありません。これは、PrivateTmpが合理的な理由でtrueに設定されているためです。
別の場所にソケットを作成したり、Apache(および分岐プロセス)内で使用できるソケットへのリンクを設定する方法があるかどうか疑問に思います。
qsub
ソケットへのリンクを作成するのは簡単ですが、別の場所でソケットを検索するように設定する方法がわからないため、問題は解決されません。
ソケットは、trqauthd
サービス(実行中のジョブに対してユーザー認証を実行するTorqueプログラム)によって生成されます。 trqauthdのドキュメントではソケットの位置を設定できると述べていますが、ドキュメントにこれを行う方法(もっと重要なのは、qsubや他のコマンドに新しい場所を知らせる方法)の説明はありません。場所) 。
PHPでTorqueにジョブを送信する方法を見つけるのに役立つ可能性がある提案を送信していただきありがとうございます。いいえApacheのPrivateTmpを無効にします。
答え1
2013年、trqauthd
IPソケットを無効にするサーバーのホームディレクトリにあるUnixドメインソケットに切り替えます。
その年の終わり、trqauthd
ホームディレクトリから次へ/tmp
。
ご覧のとおり、Adaptive Computeが提供する唯一の変更オプションは、ソースから/tmp/trqauthd-unix
プログラムを再コンパイルして--with-trqauthd-sock-dir
ビルド設定オプションをexpress(おそらく?)に変更することです/tmp
。/run/trqauthd