melhor prática para uma estratégia de encerramento do servidor com processos críticos

2

Assuma um servidor de janelas com

  • executando serviços e
  • executando aplicativos de console

A natureza deste software é muito crítica. As operações demoram alguns minutos e não devem ser encerradas.

Qual é a estratégia para desligar / reiniciar este servidor?

  1. Todo serviço / aplicativo em execução deve manipular sozinho o desligamento?
  2. O administrador deve seguir a instrução para desligar o servidor?
  3. O outro software deve sair de todos os serviços / aplicativos e, em seguida, desligar o servidor?
por dh_cgn 06.05.2015 / 16:21

2 respostas

2

Idealmente, por uma questão de prática recomendada, os aplicativos de console (interativos) não devem estar em execução em um servidor. Coisas que requerem sessões de logon interativas não devem estar em execução em um servidor.

Os Serviços do Windows devem ser programados para tratar de eventos de desligamento . Esta é uma prática de desenvolvimento extremamente comum. O Windows envia uma notificação para todos os Serviços do Windows quando o sistema operacional está se preparando para o encerramento, especificamente para dar aos serviços tempo suficiente para que eles também possam ser encerrados de forma limpa. Se o seu serviço não fizer isso, infelizmente foi escrito por amadores e, idealmente, você procuraria um produto diferente que fosse projetado para ser executado como um serviço do Windows.

Em um mundo ideal, você deve ser capaz de reiniciar um Windows Server a qualquer momento, e todos os serviços em execução nesse servidor serão encerrados e reiniciados de maneira limpa, em uma unidade autônoma. e maneira sem cabeça . Qualquer falha é geralmente causada por incompetência do desenvolvedor do aplicativo para manipular adequadamente eventos de desligamento do sistema operacional ou por várias circunstâncias atenuantes que podem impedir o funcionamento normal de um serviço, como uma desconexão espontânea do LUN devido a uma falha de hardware ou algo assim.

Se você estiver precisando escrever um script para informar a um administrador de sistema como reiniciar o servidor, então você já usou as melhores práticas.

  1. Should every running service/application handle by itself the shutdown?

Sim.

  1. Should the admin follow the instruction to shutdown the server?

Isso é o que você pode precisar fazer se tiver aplicativos mal-escritos ou configurados em execução no seu servidor. Você pode conseguir fazer o script das ações do administrador para que o desligamento possa ser pelo menos automatizado. (Por exemplo, um script de desligamento .)

  1. Should another software exit every service/application and then shutdown the server?

Isso poderia teoricamente ser possível com um trabalho de desenvolvimento inteligente, mas seria criar uma máquina Rube Goldberg em resposta a um problema que não deveria ter existido se você estivesse apenas executando aplicativos de servidor no seu servidor, em vez de aplicativos clientes.

    
por 06.05.2015 / 17:01
0

Sim. Cada aplicativo / serviço deve lidar com o desligamento por si só. Afinal, apenas o programa dado sabe o que ele faz e como desativá-lo normalmente. Dito isto, pode haver alguns serviços incômodos por aí que não realizam o desligamento corretamente. Nesta situação, o administrador é responsável por fazer isso manualmente. Em um servidor de missão crítica que é. Pessoalmente, eu prefiro ter um servidor não desligado em vez de fazê-lo automaticamente com perda de dados. Sua milhagem pode muito.

    
por 06.05.2015 / 17:11