Func是目前redhat系列平台最棒的集群管理工具(个人看法),发现越来越多的人已经开始在使用,从接触的大部分人都会说自带的模块已经够用了。其实在我们的日常维护当中,尤其是大规模的服务器集群、满天飞的业务系统等等。此时Func自带的模块已经远远不能满足我们的需求,现介绍Func是如何实现一个简单的自定义模块的。
[方法一]
通过CommandModule来实现,只需修改要运行命令参数就可以了。
优点:简单、部署方便;
缺点:不够灵活,扩展性弱;
适合场景:中小型集群;
命令方式:
python api方式:
[方法二]
通过编写func模块来达到扩展的目的。
优点:可以根据自身的应用特点定制,扩展性非常强;
缺点:复杂、部署不够方便;
适合场景:大型集群;
操作:
1、模块存放位置说明
/usr/local/lib/python2.5/site-packages/func/minion/modules/(源码安装位置)
or
/usr/local/python2.5/site-packages/func/minion/modules/(rpm或yum安装默认位置)
2、func-create-module 建模块工具
填写相关项,比较简单就不一一说明了。
#cd /usr/local/lib/python2.5/site-packages/func/minion/modules
#func-create-module
Module Name: MyModule
Description: My module for func.
Author: liutiansi
Email: liutiansi@gmail.com
Leave blank to finish.
Method: echo
Method:
Your module is ready to be hacked on. Wrote out to mymodule.py.
3、编写模块代码
#vi mymodule.py
系统已经帮我们自动生成了一些初始化代码,只需在此基础上做修改就可以了。如简单根据我们指定的条数返回最新系统日志,修改后的代码如下:
4、编写模块分发功能
#cd ~
#vi RsyncModule.py
#python RsyncModule.py mymodule.py
{'NN-server1': 1}
{'NN-server1': [0, 'Stopping func daemon: \nStarting func daemon: \n', '']}
................
5、模块调用
func -t 10 "*" call mymodule echo 10
{'NN-server1': [0,
'May 30 04:02:06 SN2010-04-020 syslogd 1.4.1: restart.\n',
'']}
大功告成!
如大家有什么疑问或感兴趣的话题可以通过weibo与我交流:http://t.qq.com/yorkoliu
[方法一]
通过CommandModule来实现,只需修改要运行命令参数就可以了。
优点:简单、部署方便;
缺点:不够灵活,扩展性弱;
适合场景:中小型集群;
命令方式:
python api方式:
[方法二]
通过编写func模块来达到扩展的目的。
优点:可以根据自身的应用特点定制,扩展性非常强;
缺点:复杂、部署不够方便;
适合场景:大型集群;
操作:
1、模块存放位置说明
/usr/local/lib/python2.5/site-packages/func/minion/modules/(源码安装位置)
or
/usr/local/python2.5/site-packages/func/minion/modules/(rpm或yum安装默认位置)
2、func-create-module 建模块工具
填写相关项,比较简单就不一一说明了。
#cd /usr/local/lib/python2.5/site-packages/func/minion/modules
#func-create-module
引用
Module Name: MyModule
Description: My module for func.
Author: liutiansi
Email: liutiansi@gmail.com
Leave blank to finish.
Method: echo
Method:
Your module is ready to be hacked on. Wrote out to mymodule.py.
3、编写模块代码
#vi mymodule.py
系统已经帮我们自动生成了一些初始化代码,只需在此基础上做修改就可以了。如简单根据我们指定的条数返回最新系统日志,修改后的代码如下:
4、编写模块分发功能
#cd ~
#vi RsyncModule.py
#python RsyncModule.py mymodule.py
引用
{'NN-server1': 1}
{'NN-server1': [0, 'Stopping func daemon: \nStarting func daemon: \n', '']}
................
5、模块调用
func -t 10 "*" call mymodule echo 10
引用
{'NN-server1': [0,
'May 30 04:02:06 SN2010-04-020 syslogd 1.4.1: restart.\n',
'']}
大功告成!
如大家有什么疑问或感兴趣的话题可以通过weibo与我交流:http://t.qq.com/yorkoliu
是我运行func "*" ping 已经提示 ok了
但是在运行其他命令才会提示这个,例如:
func "funcslave1" call cammand run "date"
运行func "*" ping 已经成功了
但是提示
['REMOTE_ERROR',
'func.minion.codes.InvalidMethodException',
'',
' File "/usr/local/lib/python2.5/site-packages/func/minion/server.py", line 261, in _dispatchn return self.get_dispatch_method(method)(*params)n File "/usr/local/lib/python2.5/site-packages/func/minion/server.py", line 129, in get_dispatch_methodn raise codes.InvalidMethodExceptionn']}
想请问下是什么原因
正常的。可以ping通
另外一台是用源码安装也是python2.4
但是当我执行到:func -t 10 "*" call mymodule echo 10
那台yum安装的正常了源码安装的就不正常报:
['REMOTE_ERROR',
'func.minion.codes.InvalidMethodException',
'',
' File "/usr/lib/python2.3/site-packages/func/minion/server.py", line 261, in _dispatc
h\n return self.get_dispatch_method(method)(*params)\n File "/usr/lib/python2.3/site-packages/func/minion/
server.py", line 129, in get_dispatch_method\n raise codes.InvalidMethodException\n']}
清楚是什么原因不?