Gearman - 客户

时间:2012-06-27 14:46:10

标签: php linux gearman

研究PHP / Gearman。我试图了解Gearman Server / Process如何确定构成“有效”客户端的内容。

在我看过的文档中,文档显示了许多连接到Gearman Server的客户端。但是,我没有找到任何描述服务器如何“验证”工作人员,或限制工作人员/客户端从服务器访问/获取工作的内容。

作为一个例子,我创建了一个Gearman Server,我有一个带有5台子机器的网络,每台子机器都有一个“worker”。我的邪恶朋友史蒂夫在网络上添加了另一台机器,它拥有自己的工作人员......

如何阻止史蒂夫的工作人员从我的服务器上获取工作!

有没有办法让客户端/工作人员自己注册,所以我基本上可以为客户端/工作人员分配ID ???

我很确定有办法做到这一点,但我还没有碰到它。

我正在使用PHP / MySQL / Gearman在Linux环境上进行测试。

由于

3 个答案:

答案 0 :(得分:2)

与memcached一样, gearman没有任何访问控制或身份验证

您最好的解决方案是依靠您的操作系统,例如防火墙规则。

iptables 应该阻止到端口4730(标准的gearman端口)的所有传入流量,就像这样

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。

免责声明:此规则是我的首要问题,请在生产服务器上运行之前仔细检查这些规则。

希望这有帮助!

答案 1 :(得分:0)

通过监听(1)仅在localhost上或(2)设置适当的防火墙规则,如果您需要外部访问。创建Gearman的目的是尽可能减少开销,没有身份验证协议。如果这还不够,只能听localhost&使用SSH隧道到该机器的可能性。另一种可能性是使用HTTP协议(请参阅here),并在其前面放置一个验证代理。

答案 2 :(得分:0)

Gearman服务器只能在您的内部网络上访问。您的应用程序所在的网络不应该有未经授权的设备。您的应用程序服务器不应与您的无线路由器共享网络。 Gearman只会向使用相同任务名称注册到该特定服务器的服务器发送作业。如果贵公司的一名员工向您的生产Gearman主人注册了一个同名的任务作为笑话,那么您就会遇到更大的问题。