如何自己开发一套服务器管理系统

如何自己开发一套服务器管理系统,第1张

转载表面上看,是一套基于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管理系统还是可以排上的。

可能是因为云服务器的防火墙或者会话管理机制的问题导致的。
1 防火墙问题:云服务器需要通过端口来提供服务,如果云服务器的防火墙设置不正确,或者与防火墙相关的服务因某些原因停止了,那么就可能导致不能远程控制云服务器。可以通过检查云服务器的防火墙设置并重新启动相关服务来解决。
2 会话管理机制问题:部分云服务器会有会话管理机制,如果你很长一段时间没有进行 *** 作,你的会话就可能被关闭,使你不能继续远程控制该云服务器。此时需要重新建立会话才能够再次远程控制该服务器。这个问题可以通过在远程控制客户端上设置自动发送心跳包来维持会话。
另外,还有一种可能性是云账户的使用时间限制,如果你的云账户到了使用时间限制,那么你就不能再进行远程控制。可以检查一下你的账户的使用时间限制是否还在有效期内。
以上是可能的一些原因,你可以根据具体情况进行判断和选择。如果仍有问题,可以向云服务商咨询或提交工单以获取更多帮助。

服务器多用户管理数据共享方式还是比较多的,有几种可参考 *** 作:

开启网上邻居共享,这样电脑直接打开网上邻居就可以访问对方的文件夹和资料了。可以同时 *** 作共享资源。

安装辅助软件,比如ftp服务端工具,另一台用ftp客户端即可互相访问资料,修改删除添加等等。

直接开启远程服务,3389,可以直接远程控制 *** 作服务器界面,如同 *** 作本地电脑一样。完全 *** 作服务器上的文件数据。

安装第三方辅助管理工具,协助企业管理多台电脑的工具,可以互相访问制定电脑的文件资料。属于多功能兼顾的方案。

采用目前技术较为尖端的云系统构架,制作云服务器做文件分发,让公司企业的文件同时存在云端多台服务器中,确保安全,并且可以多客户端 *** 作。

网云数据后台可以直接连接数据库,上传数据库也很快

*** 作步骤

登录网云数据控制台->找到云虚拟主机->云虚拟主机管理。

选择想要重设数据库密码或数据库FTP密码的云虚拟主机,点击管理,进入虚拟主机的详情页。

进入数据库的详情页。

在基本信息栏点击修改数据库密码或数据库FTP密码。

输入新密码。

数据库升级、续费

数据库空间属于云虚拟主机赠送,如需对数据库进行升级或续费 *** 作,请前往对应的云虚拟主机进行升级/续费。

作为企业的运维人员,需要负责公司所有服务器、网络等硬件平台的运维工作,对每台服务器的状况,如磁盘、内存、网络、CPU等资源状况要有明确的了解,还要定期进行巡检和修复,避免服务器发生故障,导致公司业务的开展。但运维人员的精力是有效的,一旦管理的服务器过多,而管理效率无法提升,就有可能造成服务器故障,不利于公司业务的开展。那么,中小企业的IT运维人员如何才能高效地管理多台服务器呢?

一个优秀的运维人员,应该学会合理利用工具。而个人对服务器进行有效的监控和管理,除了传统的脚本命令,通过集群式面板工具,效率将会大大提高。通过面板工具,我们可以添加多台服务器进行管理维护。什么CPU持续过高、内存占用太多、磁盘空间不足、日志报错等问题,在面板工具中,我们都可以直观明了地发现问题,从而用最快速度解决问题,不必再耗费过多的时间重复这些基础、繁琐的工作。

而像我们这种服务器数量多且繁杂的,对于面板工具的挑选,最重要的一点就是添加服务器的限制少。以我现在在用的云帮手为例,全面兼容所有云服务商,同时兼容Windows、CentOS、Ubuntu、Debian、OpenSUSE、Fedora等云服务器 *** 作系统,对服务器、主机、站点的数量没有限制,哪怕我加了两百多台服务器,依旧运行得很流畅。

云帮手基础功能十分完善,资源监控/告警、安全防护、环境部署、站点管理、远程控制等功能在日常服务器的管理中帮助很大,集群化管理让我们不用再一台台服务器的去运行脚本修复问题,一键式的傻瓜 *** 作也让新加入团队的运维新人能够快速上手。更值得一提的是一键安全巡检和一键修复功能,只需要对每台服务器定期进行检测和修复,就能让隐患在最快的时间内发现并解除,避免因服务器故障而导致业务无法开展,让公司业务开展得更加顺畅。

在工作中,找到一款合适的工具,不仅能提高自己的工作效率,也是对公司发展的一种帮助,不止是像我们这样的运维岗位,我觉得不同的岗位也会有相应的工具能给予帮助,也可以分享一下你们工作中常用的工具,大家一起学习一下~。

系统资源监控功能可对云服务器进行系统资源监控,查看详细的监控数据,提取云服务器关键指标,以图表形式展示,并且支持自定义告警阈值,为用户提供立体化数据监控、智能化故障告警。

一、进入资源监控界面

1打开服务器面板

方式一:双击服务器

方式二:选中服务器,右键显示选项菜单,点击“管理面板”

二、功能简介

1监控概览(展示CPU、内存、磁盘、网络资源告警图表)

2CPU监控(采集云服务器CPU使用率数据并通过图表形式直观的展示出来)

3内存监控(采集云服务器内存使用率数据并通过图表的形式直观的展示)

4磁盘监控(采集云服务器磁盘使用率数据并通过图表的形式直观的展示出来)

5网络监控(采集云服务器内外网卡流量数据并通过图表的形式直观的展示出来)


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/13040527.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-29
下一篇 2023-05-29

发表评论

登录后才能评论

评论列表(0条)

保存