如何检查新安装的服务器上的先决条件,以确保服务器将实际工作

安装新服务器时,我通常会忘记服务器实际工作所需的东西。 我想在启动服务器之前首先进行一些自动的飞行前检查以注意缺失的function,并让服务器上的活动用户运行。

比方说,我运行一个应用程序服务器池,在负载均衡器后面使用像Tomcat或PHP这样的平台。 该服务通常需要以下几件事情:

  • 安装的软件(如wget或ImageMagick等外部程序)
  • 已安装的模块(如libcurl,mod_rewrite,Oracle等)
  • configuration文件(如tnsnames,php.ini等)
  • 挂载的文件系统,某处的符号链接,某些目录的特定权限
  • 特定的networking端口必须从机器(例如mysql或http代理)
  • 特定的networking端口必须可以在机器上访问(这将不得不从另一台机器,例如rsync或端口8080testing)
  • 具体的stream程必须开始
  • cronjobs必须存在

我假设在大多数情况下可以编写unit testing,并在安装后在每台机器上运行它们,但是我更愿意使用更具体的工具来完成这样的任务,也许用一种特殊的类似shell的语言来编写testing(鉴于不同的工具是必要的testing一切,这将涉及运行Perl脚本,Java程序,检查文件,权限,在confic文件中的行等)。

我应该补充一点,我不希望能够解决缺失的项目,我只是想检查是否需要从操作的同事进行额外的更改。

我们这样做的方式是使用CFengine(但是Puppet也可以),根据集中configuration来configuration各个节点。 CFengine会按正确的顺序执行机器的正确configuration,并继续这样做,例如,如果进程停止,进程将被重新启动。

在所有节点上,脚本可用来检查许多事情(中央存储器上的文件是可读的,可以打开到MySQL集群的连接等)。 此脚本被loadbalancer用作健康检查:只有当所有检查都通过时,节点才会返回loadbalancer期望的值,并将其标记为“up”并允许处理stream量。

您需要logging您的构build过程,然后才能编写脚本来testing新系统的“准备好”。 stream程文档将为您提供您要validation的核对清单以及每个服务器的一致构build。 Cfengine和木偶是自动化构build的好方法,但是使用它们,你需要一个需要configuration的东西的列表。