2

PHP/Gearman を研究しています。Gearman サーバー/プロセスが「有効な」クライアントを構成するものをどのように判断するかを理解しようとしています。

私が見たドキュメントでは、Gearman サーバーに接続している多数のクライアントが示されています。ただし、サーバーがワーカーを「検証」する方法、またはワーカー/クライアントがサーバーにアクセス/サーバーから作業を取得することを制限する方法を説明するものは見つかりませんでした。

例として、私は Gearman サーバーを作成し、それぞれに「ワーカー」を持つ 5 つの子マシンを持つネットワークを持っています。私の悪友であるスティーブは、別のマシンをネットワークに追加し、それは独自のワーカーです..

スティーブのワーカーが私のサーバーから仕事を取得するのを止めるにはどうすればよいですか?

クライアント/ワーカー自体を登録する方法はありますか?そのため、基本的にクライアント/ワーカーに ID を割り当てることができますか?

これを行う方法があることはかなり確信していますが、まだ見つけていません。

PHP/MySQL/Gearman を使用して、Linux 環境でテストしています。

ありがとう

4

3 に答える 3

2

memcached と同様に、gearman にはアクセス制御や認証がまったくありません

最善の解決策は、ファイアウォール ルールなどの OS に依存することです。

つまり、 iptablesはポート 4730 (標準のギアマン ポート) へのすべての着信トラフィックをブロックする必要があります。

iptables -A INPUT -p tcp --dport 4730 -s server1 -j ACCEPT

...

iptables -A INPUT -p tcp --dport 4730 -s server5 -j ACCEPT

iptables -A INPUT -p tcp --dport 4730 -j DROP

そうすれば、localhost から Gearman を引き続き使用できます。

免責事項 : このルールは私の頭の中にあります。運用サーバーで実行する前に、これらのルールを再確認してください。

お役に立てれば !

于 2012-06-27T14:57:05.457 に答える
0

Gearman サーバーは、内部ネットワークからのみアクセスできる必要があります。アプリケーションが存在するネットワークには、許可されていないデバイスがあってはなりません。アプリケーション サーバーは、ワイヤレス ルーターとネットワークを共有するべきではありません。Gearman は、同じタスク名を持つ特定のサーバーに登録されているサーバーにのみジョブを送信します。あなたの会社の従業員の 1 人が、同じ名前のタスクを本番の Gearman マスターに冗談として登録すると、さらに大きな問題が発生します。

于 2016-06-10T21:12:56.607 に答える
0

(1) localhost のみをリッスンするか、(2) 外部アクセスが必要な場合は適切なファイアウォール ルールを設定します。Gearman は、オーバーヘッドをできるだけ少なくすることを目的として作成されており、認証プロトコルはありません。これで十分でない場合は、ローカルホストでリッスンし、そのマシンへの SSH トンネルを使用することもできます。また、HTTPプロトコル (こちらを参照) を使用し、その前に検証プロキシを配置することもできます。

于 2012-06-27T15:00:19.533 に答える