systemdサービスを介して分散的にdistccコンパイル操作を実行するには?

systemdサービスを介して分散的にdistccコンパイル操作を実行するには?

私はUbuntu 20.04を実行している2台のコンピュータを持っており、distcc(バージョン3.3.3)を介して分散型でいくつかのC ++コードをコンパイルしようとしています。

あるコンピュータで distcc デーモンを手動で起動し、別のコンピュータでコンパイルすると、すべてがうまく動作するようです。次のコマンドを使用してデーモンを起動します。

distccd --no-detach --daemon --allow 192.168.0.0/16 --allow 127.0.0.1 --nice 10 --jobs 8 --zeroconf

コンパイルが開始されたシステムのgnome distccモニターでジョブが実行され、サーバーとローカルホストの両方で正常に完了したことがわかるため、動作していることがわかります。

また、nmapこの設定を使用して両方のコンピュータのいずれかで実行(サーバークエリ)すると、次の出力が表示されます。

PORT     STATE SERVICE VERSION
3632/tcp open  distccd distccd v1 (unknown compiler)

distccを手動で起動する代わりにサービスとして実行すると、次のような結果が表示されます。

$ sudo service distcc start
$ sudo service distcc status
distcc.service - LSB: simple distributed compiler server
 Loaded: loaded (/etc/init.d/distcc; generated)
 Active: active (running) since Wed 2020-12-16 15:16:03 EST; 22s ago
   Docs: man:systemd-sysv-generator(8)
Process: 9183 ExecStart=/etc/init.d/distcc start (code=exited, status=0/SUCCESS)
  Tasks: 10 (limit: 38405)
 Memory: 3.7M
 CGroup: /system.slice/distcc.service
         ├─9193 /usr/bin/distccd --pid-file=/var/run/distccd.pid --log-file=/var/log/distccd.log --daemon --allow 192.168.0.0/16 --allow 127.0.0.1 --listen 127.0.0.1 --nice 10 --jobs 8 --zeroconf
         ├─9199 /usr/bin/distccd --pid-file=/var/run/distccd.pid --log-file=/var/log/distccd.log --daemon --allow 192.168.0.0/16 --allow 127.0.0.1 --listen 127.0.0.1 --nice 10 --jobs 8 --zeroconf
         ├─9200 /usr/bin/distccd --pid-file=/var/run/distccd.pid --log-file=/var/log/distccd.log --daemon --allow 192.168.0.0/16 --allow 127.0.0.1 --listen 127.0.0.1 --nice 10 --jobs 8 --zeroconf
         ├─9201 /usr/bin/distccd --pid-file=/var/run/distccd.pid --log-file=/var/log/distccd.log --daemon --allow 192.168.0.0/16 --allow 127.0.0.1 --listen 127.0.0.1 --nice 10 --jobs 8 --zeroconf
         ├─9202 /usr/bin/distccd --pid-file=/var/run/distccd.pid --log-file=/var/log/distccd.log --daemon --allow 192.168.0.0/16 --allow 127.0.0.1 --listen 127.0.0.1 --nice 10 --jobs 8 --zeroconf
         ├─9209 /usr/bin/distccd --pid-file=/var/run/distccd.pid --log-file=/var/log/distccd.log --daemon --allow 192.168.0.0/16 --allow 127.0.0.1 --listen 127.0.0.1 --nice 10 --jobs 8 --zeroconf
         ├─9210 /usr/bin/distccd --pid-file=/var/run/distccd.pid --log-file=/var/log/distccd.log --daemon --allow 192.168.0.0/16 --allow 127.0.0.1 --listen 127.0.0.1 --nice 10 --jobs 8 --zeroconf
         ├─9211 /usr/bin/distccd --pid-file=/var/run/distccd.pid --log-file=/var/log/distccd.log --daemon --allow 192.168.0.0/16 --allow 127.0.0.1 --listen 127.0.0.1 --nice 10 --jobs 8 --zeroconf
         └─9212 /usr/bin/distccd --pid-file=/var/run/distccd.pid --log-file=/var/log/distccd.log --daemon --allow 192.168.0.0/16 --allow 127.0.0.1 --listen 127.0.0.1 --nice 10 --jobs 8 --zeroconf

ランチャーの行は、私が手動で行った操作と一致するようです(つまり、/etc/default/distcc正しく構成されているようです)。/etc/default/distcc場合に備えて内容は次のとおりです(コメントなし)。

STARTDISTCC="true"

ALLOWEDNETS="192.168.0.0/16 127.0.0.1"

LISTENER="127.0.0.1"

NICE="10"

JOBS="8"

ZEROCONF="true"

ただし、nmapサーバーのポート3632に対してクエリを再実行すると、次のことが発生します。

PORT     STATE  SERVICE VERSION
3632/tcp closed distccd

~/.distcc/hostsIP / LIMIT表記に従って、2台のコンピュータ(localhost/8ローカルコンピュータとは異なるコンピュータ)にホストリストを設定しました。other-machines-ip/8

distccサービスが正しく機能する方法を知っていますか?

答え1

私が見逃した微妙な詳細は、元の投稿に示されているように、systemdサービスの場合はデーモンに対する追加の--listen引数でした。 --listenパラメータはLISTENER設定によって制御され、/etc/default/distccデフォルトは127.0.0.1なので、localhostでのみ接続が許可されます。

192.168.0.1私の場合は、ローカルネットワーク上のすべてのコンピュータの音を聞くように設定する必要があります。

関連情報