Pergunta

Ei, eu sou novo para Grails, e eu estou querendo saber sobre a implantação. Uma vez que um .war é implantado em produção, como posso atualizar o aplicativo, sem tempo de inatividade?

Foi útil?

Solução

Mesmo se você implantar quente o arquivo WAR (por não reiniciar o servidor) ainda haverá algum tempo de inatividade enquanto recarrega contexto. Esta não é uma coisa Grails como tal, mais uma coisa J2EE / servlet.

Como dogbert disse, melhor para colocar uma página de manutenção (usando Apache na frente do Tomcat é uma boa idéia) e desligar o servidor aplicativo, fazer o upload do novo WAR, em seguida, iniciar o servidor novamente.

Outras dicas

Você pode configurar dois tomcat instâncias com um mod_proxy_balancer Apache na frente dele, conforme descrito aqui . Para uma reafectação da aplicação de uma estratégia de "atualização sem interrupção" pode ser aplicado (assumindo app1 e app2 são os seus dois tomcat casos):

  1. Desativar tomcat @ app1 no balanceador-manager
  2. do Apache
  3. Reimplantar aplicativo para tomcat @ app1
  4. Faça alguns testes com app1 e ver se tudo funciona
  5. Ativar tomcat @ app1 no balanceador-manager
  6. Desativar tomcat @ app2 no balanceador-manager
  7. Reimplantar aplicativo para tomcat @ app2
  8. Ativar tomcat @ app2 no balanceador-manager

E você está feito. Você não precisa de várias máquinas físicas ou virtuais para fazê-lo - também é possível em uma única caixa. Se o seu upgrade aplicação implica alterações de banco de dados, tenha cuidado. A descrição acima pode ser encapsulado, por exemplo, em uma href="http://grails.org/doc/1.2.x/guide/4.%20The%20Command%20Line.html#4.1%20Creating%20Gant%20Scripts" rel="noreferrer"> roteiro , então um simples "grails cluster de redeploy" faz tudo o que você precisa. Esse script está atualmente na minha lista, mas não tenho idéia de quando isso será terminado.

Uma vez que o aplicativo é empacotado como uma guerra, alterações nos arquivos de origem não será propagada automaticamente como você se usando run-app. Em geral, eu acho que especialmente para código compilado com o código que é efetivamente ao vivo o tempo todo, é um pouco arriscado para realizar atualizações ao vivo. Você pode lidar com a falha implantação estranho durante o desenvolvimento, mas na produção Eu prefiro jogar pelo seguro e viver com um pouco de tempo de inatividade.

Tudo o que sei é que você pode alterar um arquivo Groovy ou um .gsp e depois de salvar as alterações estão disponíveis no navegador, mas se existem outros tipos de arquivos que eu não sou exatamente certo desse recurso.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top