web-dev-qa-db-ja.com

ギアマンがUbuntuの正しいIPをリッスンしていない

私はubuntuマシンでGearmanをコンパイルしましたが、ローカルホストモードでは正常に動作しますが、別のマシンから接続して新しいジョブをキューに追加すると、接続エラーが発生します。

私が試してみました...

  1. /etc/default/gearman-job-serverにある構成ファイルを編集して--listen={ip-here}を追加しても、何も起こりませんでした。
  2. Upstartスクリプトを直接編集して--listenフラグを追加しましたが、それでも何も起こりませんでした。
  3. /etc/init.d/gearman-job-serverファイルを編集して、--listenおよび--portパラメーターを開始スクリプトに追加します。
  4. /etc/init/gearman-job-server.confのupstartファイルを手動で編集し、既存のexec行をコメントアウトして、respawnコマンドの後に次の行を追加します。

script

exec gearmand --listen={ip} --port=4703

end script

現時点でGearmanを機能させる唯一の方法は、コマンドgearmand -d -listen={ip} --port=4703を手動で実行して機能させることです。これで、-dフラグがデーモンモードで起動し、SSHセッションを実行したまま閉じることができましたが、マシンを再起動すると、開始した場所に戻ることがわかりました。

Gearmanを起動時に自動的に起動するか、Sudo serviceコマンドを使用して正しいIPとポートをリッスンして再起動したいのですが、デーモンを手動で起動するために問題が発生するたびにサーバーにログインする必要はありません。再び。

私はserverFaultを使用していて、最初の2つのオプションにたどり着きましたが、どちらも機能しなかったため、まだ助けが必要です。

1

Debianのバグレポートを掘り下げることで、これを理解することができました...

Gearmanの構成ファイルは_/etc/default/gearman-job-server_にあり、_/etc/init/_および_/etc/init.d/_ディレクトリにエントリがある場合でも、多くのインストールではこれらは明らかに無視されます(_init.d_(サービス制御用のSOMECODE)__コマンドはserviceコマンドに置き換えられましたが、基本的にはそれを行うために必要なことです。

  1. _/lib/systemd/system_ディレクトリに移動し、選択したテキストエディタで_gearman-job-server.service_を開きます。
  2. ExecStartコマンドを更新します。この時点で、必要なパラメーターを手動でコーディングするか、行末に_$PARAMS_を追加してデフォルトのparams環境変数を含めることができます。気になるパラメーターは、_--listen_パラメーターと_--port_パラメーターです。 listenパラメーターは、サーバーのパブリックにアクセス可能なIPである必要があります。
  3. _Sudo systemctl daemon-reload_を実行します
  4. _Sudo service gearman-job-server restart_を実行します
  5. それをテストしてください、そしてそれは今働くはずです
1

CentOS7でも同じ問題があります。/etc/sysconfig/geormandを編集して、以下を追加できます。

OPTIONS="--listen=127.0.0.1 --port=4730"

デフォルトのポートは4703ではなく4730であることに注意してください。次に、「Sudo service gearmand restart」を実行し、「gearadmin--status」を機能させます。

0
anti_bug