Como gerenciar as relações de serviço em Juju no nível da unidade de granularidade fina?

3

Minha receita de serviço: Servidor de banco de dados < - > Servidor de aplicativos < - > Proxy reverso da Web.

Meus requisitos de relação são:

  • 1 unidade de unidade específica (relacionada) do servidor de banco de dados do servidor de aplicativos
  • 1 unidade de proxy reverso da Web relacionada a todos os servidores de aplicativos

Dada a seguir é uma seqüência de comandos do Juju, que acontecerá no meu caso

Passos esperados são (corrija-me se estiver errado):

Fase - Instalar

  1. Implantar Db
  2. Implantar o servidor de aplicativos
  3. Implantar o proxy reverso da Web
  4. Adicionar servidor de aplicativos de relação ao banco de dados
  5. Adicionar relação Proxy reverso da Web ao servidor de aplicativos

Fase - dimensionamento

  1. Adicionar unidade Db
  2. Adicionar servidor de aplicativos da unidade (etapa do problema): Ah não! Não preciso do comportamento automático com base na configuração Fornece / obrigatório nos metadados de encanto. Eu quero especificar o servidor de aplicativos para relação Db em um nível de unidade aqui.

Idealmente, quero que os ganchos relation-xxx disparem apenas na nova unidade de Db. Pode ser um mecanismo de passagem de parâmetros de unidade adicional semelhante ao proposto para implantar ?

Meus pensamentos para um trabalho, considerando os recursos atuais, são os seguintes:

  • Uma maneira é executar condicionalmente em retornos de chamada. Verifique se já está relacionado a uma unidade remota e ignore a chamada de entrada adicionada / Chamada alterada de volta. Seria confuso. Ao reiniciar os serviços pode ser causa buggy da seqüência de início para cada par de unidade de aplicativo db tem que ser cuidadosamente gerenciado ou serviço de aplicativo errado vai falar com serviço de db errado. Eu já estou usando o Juju como um serviço de back-end com um script python gerenciando o juju cli.
  • Outra maneira é que tenho um código específico que é comum ao par do servidor de aplicativos / db. Assim como o comando set para a fase de pós-implantação, posso usá-lo para definir valores para instâncias de serviço específicas após a adição da unidade?

  • Outra opção é um serviço subordinado com um escopo de contêiner, mas desejo o Db como uma instância de máquina separada, não na instância da máquina do servidor de aplicativos.

Quanto ao proxy da web, espero que os ganchos sejam acionados, para que o proxy possa adicionar o novo servidor de aplicativos como um back-end. O comportamento atual do Juju é ideal.

Estou ansioso para uma ótima maneira de fazer isso. Obrigado antecipadamente ..

    
por Antojk 24.07.2012 / 09:16

1 resposta

3

Parece-me que você deseja que os dois appservers estejam unicamente vinculados a servidores de banco de dados exclusivos. Isso significaria que eles são realmente dois serviços separados. Isso pode fazer sentido então:

juju deploy mysql app1-db
juju deploy app app1
juju deploy mysql app2-db
juju deploy app app2
juju add-relation app1-db app1
juju add-relation app2-db app2

Isso fará com que o app1 e o app2 sejam independentes (mesmo que tenham o mesmo charme), o que eu acho que é o que você quer. Se você quiser que ambos sejam balanceados com carga do mesmo haproxy:

juju deploy haproxy app-reverse-proxy
juju add-relation app1 app-reverse-proxy
juju add-relation app2 app-reverse-proxy

Note que as versões mais antigas do haproxy não poderiam lidar com isso (antes da revisão do charme 23).

Aqui está o bug que rastreou a correção:

link

    
por SpamapS 25.07.2012 / 21:36

Tags