2

研究 PHP/Gearman。我试图了解 Gearman 服务器/进程如何确定构成“有效”客户端的内容。

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

例如,我创建了一个 Gearman 服务器,并且我有一个包含 5 台子机的网络,每台子机都有一个“worker”。我邪恶的朋友史蒂夫向网络添加了另一台机器,它有自己的工人..

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

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

我相当肯定有办法做到这一点,但我还没有遇到过。

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

谢谢

4

3 回答 3

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。

免责声明:这条规则在我的脑海中,请在生产服务器上运行之前仔细检查这些规则。

希望这可以帮助 !

于 2012-06-27T14:57:05.457 回答
0

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

于 2012-06-27T15:00:19.533 回答
0

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

于 2016-06-10T21:12:56.607 回答