十大常见的服务器管理软件
当网站发展到一定的规模,站长应该开始考虑要为网站托管服务器。通常情况下服务器会被放到BGP机房,网站管理员通过远程来管理服务器。在网站服务器进行托管时,需要在服务器上安装一些服务器管理软件,才能更为有效地管理这台远程服务器,我根据我自己的管理经验,推荐十个有用的服务器管理软件,供大家参考和分享。
1、远程桌面连接
远程桌面连接(以前称为“终端服务客户端”)主要是用于对远程托管的服务器进行远程管理,使用非常方便,如同 *** 作本地电脑一样方便,而远程桌面连接工具,我个人喜好IIS7。
IIS7远程桌面管理工具(3389、vps、服务器批量管理、批量远程工具) 是一款绿色小巧,功能实用的远程桌面管理工具,其界面简洁, *** 作便捷,能够同时远程 *** 作多台服务器,并且多台服务器间可以自由切换,适用于网站管理人员使用。软件下载地址:iis7远程桌面管理工具下载
2、Arp防火墙
Arp Firewall - 现在托管服务器必须安装的个软件是Arp防火墙,没办法啊,中国这网络环境,不安装Arp防火墙等着被人挂木马了。现在免费的Arp防火墙主要有两款,一个是奇虎的360 Arp防火墙,一个是金山Arp防火墙。
3、FTP服务和客户端
FileZilla - 将客户端的文件上传到服务器上,最常用的软件是FTP了,微软的IIS自带了一个简单的FTP服务器管理软件,如果觉得不好用,服务器上也可以安装免费的FileZilla服务器管理软件,客户端可以使用免费的FileZilla Client,支持多线程上传文件。
4、硬件检测
CPU-Z - CPU-Z是一款免费的系统检测工具,可以检测CPU、主板、内存、系统等各种硬件设备的信息。它支持的CPU种类相当全面,软件的启动速度及检测速度都很快。另外,它还能检测主板和内存的相关信息,其中有我们常用的内存双通道检测功能。远程管理服务器的时候,使用这个软件可以对服务器的硬件信息一清二楚。
5、流量监控
DU Meter - DU Meter是一个简单易用的网络流量监视工具,图形化的界面显示非常直观,可以实时监测服务器的上传和下载的网速,同时还有流量统计功能。可以分析出日流量、周流量、月流量等累计统计数据。不过遗憾的是这个软件不是免费的。
6、端口监控
TcpView - TcpViews是一款免费的端口和线程监控工具,可以列出当前所有TCP和UDP端口的进程清单,包括本地和远程地址的TCP连接,其实和系统命令netstat类似,不过是GUI界面的,使用方便,占用资源少,默认字体在中文环境下很小,需要手动修改。在服务器上运行的话,默认刷新时间不要用默认的1秒。
7、进程监控
Process Explorer - Process Explorer是一款免费的进程监视工具,功能比Windows自带的任务管理器要强大的多,不仅可以监视、暂停、终止进程,还可以查看进程调用的DLL文件,是预防病毒、查杀木马的好帮手。
8、日志分析
WebLog Expert - 虽然Google Analytics是一款强大的免费的网站分析服务,但必须加入统计代码才能使用,WebLog Expert则可以直接分析网站的访问日志文件,通过日志文件分析出网站的站点访问者、活动统计、文件访问量、搜索引擎、浏览器、 *** 作系统和错误页面等等众多的统计信息,是网络监测的好助手。这个软件本身不免费,不过其另一个版本WebLog Expert Lite是免费的。
9、日志搜索
WinHex - WinHex是一款速度很快的文件编辑器。打开数百兆的大型文件速度飞快,使用WinHex可以轻松打开服务器上的大型日志文件,并对其进行关键字搜索,效果非常好,是我见到的速度的文本编辑搜索软件,总体来说是一款非常不错的16进制编辑器。
10、代码编辑
Notepad++ - Notepad++是一个免费开源的源程序代码、HTML网页代码编辑工具,支持多达数十种常见源代码或脚本的语法,包括C,C++,Java,C#,XML,HTML,PHP,Javascript,RC resource file,makefile,ASCII,doxygen,ini file,batch file,ASP ,VB/VBS,SQL,Objective-C,CSS,Pascal,Perl,Python,Lua等,功能非常强大。在服务器上安装后可以直接修改网站上的源程序代码。
转载表面上看,是一套基于B/S方式实现的分布式管理系统,但其实背后的架构是基于C/S完成的。你以为他是一只鞋吗?其实他是一个吹风机。作为界面化的系统,浏览器框架是不可或缺的,但更加重要的东西在Socket上面。
一、需要解决中央控制端到各节点服务器之间的通信。
这个其实牵扯到一个通信协议的问题,各语言都有自己的socket,thread的库,直接调用即可。但是这个通信协议就需要自己来完成了。既不能太简单,太简单了,明码传输,如果别人获知了这个接口,就很容易执行一些令人讨厌的 *** 作。也不能太复杂,太复杂了等于是给自己找麻烦,所以简单的数据包编解码的工作或者用token验证的方式是需要的。通信协议起码要两种,一种是传输命令执行的协议,一种是传输文件的协议。
二、跨语言的socket通信
为什么要跨语言,主控端和代理端通信,用什么语言开发其实无所谓。但是为了给自己省事,尽可能使用服务器上已经有了的默认语言,Ambari前期采用phppuppet的方式管理集群,这不是不可以,puppet自己解决了socket通信协议和文件传输的问题,可你需要为了puppet在每台服务器上都安装ruby。我是个有点服务器和代码洁癖的人。光是为了一个puppet就装个ruby,我觉得心里特对不起服务器的资源。所以我自己写了一个python的代理端。python是不管哪个linux系统在安装的时候就都会有了。然后主控端的通信,可以用python实现,也可以用php实现,但是考虑到对于更多的使用者来说,改php可能要比改tornado简单许多,所以就没用python开发。hadoop分支版本众多,发布出去,用户要自己修改成安装适合自己的hadoop发行版,就势必要改源码,会php的明显比会python的多。php里面的model封装了所有的 *** 作,而python只是个 *** 作代理人的角色而已。
所以也延伸出一个问题,什么语言用来做这种分布式管理系统的代理端比较合适,我自己觉得,也就是python比较合适了, *** 作系统自带,原生的package功能基本够用。用java和php也可以写agent,但是你势必在各节点预先就铺设好jre或者php运行环境。这就跟为什么用python和java写mapred的人最多是一样的。没人拦着你用nodejs写mapred,也可以写,就是你得在每个节点都装v8的解释引擎,不嫌麻烦完全可以这样干。原理参看map/rece论文,不解释。perl也是 *** 作系统原生带的,但是perl的可维护性太差了,还是算了吧。
所以这就牵扯到一个跨语言的socket问题,理论上来说,这不存在什么问题。但这是理论上的,实际开发过程中确实存在问题,比如socket长连接,通信数据包在底层的封装方式不同。我没有使用xml-rpc的原因之一就是我听说php的xmlrpc跟其他语言的xmlrpc有不同的地方,需要修改才能用,我就没有用这种办法。最早是自己定义的 *** 作协议,这时就遇到了这些问题,所以后来直接采用了thrift方式。就基本不存在跨语言的socket通信问题了。
三、代理端执行结果的获取
无论命令还是文件是否在代理端执行成功,都需要获取到执行结果返回给中央端。所以这里也涉及一个读取节点上的stdout和stderr的问题。这个总体来说不是很难,都有现成的包。当然这个时候你需要的是阻塞执行,而不能搞异步回调。
还有个问题是,我要尽可能使用python默认就带的包,而尽量不让服务器去访问internet下载第三方的包。
还有代理端最重要的一点,就是python的版本兼容性。centos5用python24,centos6用python26,ubuntu基本默认都是27。所以一定要最大限度的保证语言的跨版本兼容性,要是每个 *** 作系统和每一个版本我都写一个代理,我一个人就累死了。
四、浏览器端的model,view,controller
这里面你要封装好所有的通信协议,以及需要在节点上面执行的脚本。发送文件的 *** 作和数据库 *** 作也要在model里面完成。
如果对tcl/tk很熟,也可以写基于 *** 作系统界面方式的管理,不用浏览器就是了。
view对我来说是最痛苦的事,都是现学的jQuery怎么用,前端的工作太可怕了。关于这方面,没有太多可描述的,html和js带给我的只有痛苦的回忆,万恶的undefined。
五、跨 *** 作系统的安装文件封装。
要适应不同的 *** 作系统也是个很麻烦的事情,需要用agent提前获知 *** 作系统的发行分支,版本号。然后去找到对应的安装文件去执行。你不能保证一个分布式系统的集群中所有的节点都可以访问internet,更多的情况是这些节点都存在在一个安全的内网中。只有个别几个节点是可以访问外网的。所以,我势必要把所有的安装文件以及他们的依赖尽可能集中起来。我不确定安装 *** 作系统的lzo,yum或者apt-get会去下什么鬼东西,甚至无论是yum还是apt-get,里面都没有hadoop-lzo的库文件。所以,最好的办法是自己编译打包rpm和deb包。直接安装就好了,别去找repo下载什么。
这就是第五步工作,把需要的依赖的东西自己编译打包成rpm和deb。
deb包很好解决,但是rpm就没那么好办了,需要学习rpm的编译文件如何编写,这块是挺麻烦的,但是这玩意用好了还是挺不错的。现在我自制的安装包里面就已经包含了自己编译的lzo和snappy两种压缩库,以及hadoop-gpl-packaging的rpm和deb。下一个发布的easyhadoop将直接支持centos5,6,suse,以及ubuntu/debian的系统上安装hadoop。已经自带了lzo和snappy以及lzop和snzip。
六、把这些所有东西,整合到一个系统里面。
关联这些所有事情间的联系,整合到一个浏览器界面里面去。写一个分布式的管理脚本不难,写一个界面也不难,但是也许是我的水平不行,这两件事结合起来让他们协同工作还是有点难度的。对我来说,写界面的工作可能更难一点。
Cloudera可能是十来个人在写Manager的东西,ambari也是放到github和apachesvn上面,apache基金会的各种committer在写。easyhadoop没他们功能那么强大,一年来只有我一个人设计架构,功能,各种语言的编码,测试,发布。Fortheloveofgod,WhathaveIdone(英文部分请站在山顶仰天长啸)T_T。从前台到后台,到hadoop和生态系统以及他们的依赖软件的单独patch、编译打包。(系统yum或者apt-get的包不如自己打的好使。)
从时间上来看,全球第一款开源的hadoop部署管理系统应该还是属于ambari,2011年8月开始写的,2012年9月底进入apache的incubator。我是大概2012年8月开始写的easyhadoop,全球第一没赶上,估计国内第一个开源的hadoop管理系统还是可以排上的。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)