利用Gearman来实现远程监控与管理
2010-07-03 10:05
507 查看
Gearman是一个分发任务的程序框架,可以用在各种场合,与Hadoop相比,Gearman更偏向于任务分发功能。它的任务分布非常
简单,简单得可以只需要用脚本即可完成。Gearman最初用于LiveJournal的图片resize功能,由于图片resize需要消耗大量计算资
源,因此需要调度到后端多台服务器执行,完成任务之后返回前端再呈现到界面。
![](http://timyang.net/blog/wp-content/uploads/2009/08/gearman.png)
Gearman分布式任务实现原理上只用到2个字段,function name和data。function
name即任务名称,由client传给job server, job server根据function
name选择合适的worker节点来执行。data通常为执行任务所需的自定义的内容,比如简单的做法可以把需要执行的脚本当成data即可(当然要注
意其中的安全防范)。如果有多个worker可以处理同一个function name, 则job
server会自动分配一个。当用于远程监控场景时,我们可以让每个worker注册成不同的业务名称,以达到方便控制每台worker节点的目的。
下面介绍Gearman实践中可用于多服务器管理的一些小功能,如果你的服务器有多台,重复执行命令过于繁琐,那可以借助下面一些脚本来完成一些有
趣的功能。比如要实时看到所有服务器上的 netstat -nat | grep 80, 按下面步骤搭好环境之后,只需要几行脚本代码即可实现。
1. 安装gearman
最早的gearman是perl版的,由于国内开发人员对perl熟悉的不多,所以推荐安装C版本
http://gearman.org/index.php?id=download
解开后 ./configure; make; make install 即可
2. 启动 job server
cd sbin; ./gearmand -d
3. 到 worker 节点启动 worker
先按步骤1在worker机上安装 gearman, 然后创建一个执行worker的python脚本。
cd bin; ./gearman -w -h <job_server_ip> -f server1 ―
./monitor.py
4. 通过远程 web 管理
JSP示例:
PHP示例:
简单,简单得可以只需要用脚本即可完成。Gearman最初用于LiveJournal的图片resize功能,由于图片resize需要消耗大量计算资
源,因此需要调度到后端多台服务器执行,完成任务之后返回前端再呈现到界面。
![](http://timyang.net/blog/wp-content/uploads/2009/08/gearman.png)
Gearman分布式任务实现原理上只用到2个字段,function name和data。function
name即任务名称,由client传给job server, job server根据function
name选择合适的worker节点来执行。data通常为执行任务所需的自定义的内容,比如简单的做法可以把需要执行的脚本当成data即可(当然要注
意其中的安全防范)。如果有多个worker可以处理同一个function name, 则job
server会自动分配一个。当用于远程监控场景时,我们可以让每个worker注册成不同的业务名称,以达到方便控制每台worker节点的目的。
下面介绍Gearman实践中可用于多服务器管理的一些小功能,如果你的服务器有多台,重复执行命令过于繁琐,那可以借助下面一些脚本来完成一些有
趣的功能。比如要实时看到所有服务器上的 netstat -nat | grep 80, 按下面步骤搭好环境之后,只需要几行脚本代码即可实现。
1. 安装gearman
最早的gearman是perl版的,由于国内开发人员对perl熟悉的不多,所以推荐安装C版本
http://gearman.org/index.php?id=download
解开后 ./configure; make; make install 即可
2. 启动 job server
cd sbin; ./gearmand -d
3. 到 worker 节点启动 worker
先按步骤1在worker机上安装 gearman, 然后创建一个执行worker的python脚本。
#!/usr/bin/env python import os def main(): cmd = raw_input() print os.popen(cmd).read() if __name__ == "__main__": main()
cd bin; ./gearman -w -h <job_server_ip> -f server1 ―
./monitor.py
4. 通过远程 web 管理
JSP示例:
<%@ page language="java" import="java.util.*,java.util.concurrent.*, org.gearman.client.*,org.gearman.common.*"%><%! private static String host = "192.168.1.1"; private static int port = 4730; public String testGearman(String func, String data) { byte[] input = data.getBytes(); String uniqueId = null; GearmanJobServerConnection conn = new GearmanNIOJobServerConnection(host, port); GearmanClient client = new GearmanClientImpl(); client.addJobServer(conn); GearmanJob job = GearmanJobImpl.createJob(func, input, uniqueId); Future<GearmanJobResult> f = client.submit(job); GearmanJobResult jr = null; String result = null; try { jr = f.get(3, TimeUnit.SECONDS); result = new String(jr.getResults()); } catch (Exception e) { result = e.getMessage(); } client.shutdown(); return result; } %><% out.println(testGearman("test", "netstat -nat | grep 80"); %>
PHP示例:
# Create our client object. $client= new GearmanClient(); # Add default server (localhost). $client->addServer(); echo "Sending job\n"; # Send reverse job $result = $client->do("server1", "netstat -nat | grep 80"); if ($result) echo "Success: $result\n"; 转自 http://timyang.net/linux/gearman-monitor/
相关文章推荐
- 利用Gearman来实现远程监控与管理 – Tim[后端技术]
- 利用Gearman来实现远程监控与管理
- 利用cacti和性能计数器实现自定义远程监控
- 利用java实现一个简单的远程监控程序
- asp中利用xmlhttp实现远程管理数据库
- 利用cacti和性能计数器实现自定义远程监控
- asp中利用xmlhttp实现远程管理数据库
- 利用开源的TaskScheduler组件实现监控和管理windows计划任务
- 利用java实现一个简单的远程监控程序
- 利用java实现一个简单的远程监控程序
- 利用MMC实现服务器的远程管理
- 利用开源的TaskScheduler组件实现监控和管理windows计划任务
- 利用java实现一个简单的远程监控程序
- 利用webserver 实现远程监控硬件方式探讨
- Python-远程管理-Paramiko实现ssh&sftp
- 利用spring的aop实现事务管理步骤
- 利用SUS实现自动补丁管理
- 利用jsshell 实现的学生信息管理系统
- 网络设备配置与管理---使用帧中继实现总分公司网络远程网络互联
- 有关实验室电源远程监控系统的设计与实现