1.fablinker是什么
fablinker是本人自主开发的一个多服务器项目部署和管理的工具。基于python 2.7 ,用到fabric第三方库,在一台服务器上可管理控制多个远程主机,目前V0.01已开发完成。
使用前提是多个服务器之前可以通过ssh互联。具体配置请在网上搜索。
开源代码:https://github.com/gangly/fablinker
2.应用场景
2.1 项目部署
比如分布式爬虫部署在12台机器上,一旦代码更改,那么所有worker上的代码都要更新。
当然你可以写一个shell脚本,用12个scp命令从master上将代码拷贝到worker上,但是相对麻烦一点。
用fablinker工具只需一个put命令搞定。
然后我还需要kill掉所有worker进程,重新启动程序。没办法,这样你就只有一个个登录worker服务器,用kill,sh **.py命令依次执行。
用fablinker工具只需kill 和 sh **.py两条命令搞定。
如果我还要将各个woker上生成的数据 data.dat收集起来,同样你可以写shell脚本用12个scp命令。
用fablinker工具只需一个get命令搞定。
2.2 运维
比如公司给咱蜂鸟分配了50台服务器,现在需要个每台服务器安装些软件,配置些环境。可以写个shell脚本,然后用scp将脚本分发到各个服务器上,
依次登录各个服务器,执行该shell脚本。
用fablinker可以在所有服务器上执行命令,当然也支持批处理和root权限(正在开发中,v0.02完成)。
3.fablinker有哪些功能
put : 从本地主机上分发文件至所有远程主机
get : 从远程主机上收集文件至本地主机
fab shellcmd : 在所有远程主机上执行shellcmd命令, 比如 ls , php test.php, kill
fab vim test.txt : 依次打开所有远程主机上的test.txt文件,可写入,更改, 保存。
!cmd 可以在本地执行命令
4. 特点
4.1 配置文件
首先你需要创建个你自己的目录,填写简单的配置文件(默认为fabconf.ini)。
[baseconf]
user = work
password = **
parallel = False
[host_groups]
Group0 = [192.168.181.132,192.168.181.133,192.168.181.134]
spider = [192.168.181.132, 192.168.181.137, 192.168.181.134, 192.168.181.139]
上面就是简单的配置文件:
baseconf选项是一些基本配置
user是ssh账号名,
password :登录密码
parallel :多个远程主机是否并行运行命令 , 当然在用fab命令的时候可以加参数动态更改并行选项。注意fab vim 命令不能并行执行,将直接导致错误!
host_groups配置主机分组,可将用于不同项目的主机分组管理。主机间用逗号分隔。
这里创建了Group0,和spider组,可以用at命令切换到不同组,操作不同的远程主机。
如果你的当前目录下存在fabconf.ini文件直接运行 fablinker命令,当然可以用fablinker -f tmp.ini 来指定不同的配置文件。
4.2 人性化
采用命令行交互式
所有命令的使用方法都可以通过输入help命令来查看
对于不同项目的主机可以通过addgrp增加分组,at命令切换到其他分组或单台主机上。
返回结果有警告和错误的会以不同颜色标识:
所有的更改配置的操作,当程序退出时会自动保存到配置文件中,比如用addgrp新增分组。
需要在远程主机后台执行命令只需要加上&, 比如 php hello.php &
如果要在本地服务器上运行命令:!cmd
>>!date
>>!python hello.py
批量执行命令:将要执行的命令放入一个文件中
fab bt cmd.txt
其中cmd.txt文件中一行一个命令
4.3 如何使用
在work账户下只需要输入fablinker命令即可:
1)新建一个你自己的目录,创建配置文件,可将/home/work/fabconf.ini文件拷贝到你的目录,然后修改里面的远程主机组(参考4.1)
2)如果你的配置文件名就是fabconf.ini,可直接输入fablinker命令运行;如果是其他名字,比如conf.txt, 那么输入fablinker -f conf.txt
3)使用help可查看所有命令,help cmd,可查看cmd命令使用方法
4)fab date 运行试试,会有惊喜!