Provisionar manualmente um contêiner LXC existente em Juju-local

2

É possível provisionar manualmente um controlador LXC existente no juju (1.24)?

Eu tentei seguir (ubuntu-trusty):

  1. Configurar juju local
  2. Crie um contêiner lxc, instale os pacotes systemd-services e dbus-x11 no contêiner
  3. Provisione manualmente o contêiner por meio do Ssh (juju add-machine ssh: usuário @ container-ip)
  4. Remova a seguinte linha do agent.conf no container ("- localhost: 17070") e reinicie o jujud no container. Isso foi necessário, ou o juju-agent no contêiner permanecerá no estado pendente.
  5. Implementar o mysql no continer usando --to juju switch

A implantação do encanto MysqL é iniciada, demora muito e, em seguida, o "gancho de instalação" falha.

O fornecimento manual usando uma máquina KVM funciona (embora eu tenha que fazer a etapa 4 de qualquer maneira, ou o estado do agente permanecerá pendente).

Estou fazendo uma instalação em cluster do MySQL e quero usar o LXC (em vez do KVM) em várias máquinas físicas, porque o LXC é comparativamente leve.

Obrigado por qualquer sugestão.

    
por jasghar 07.09.2015 / 15:46

1 resposta

3

Eu mesmo descobri uma solução:

Após inicializar um ambiente local fresco, adicione uma máquina ao ambiente:

juju add-machine

Isso deve criar a máquina 1. Depois que a máquina-1 estiver pronta (verifique através de juju status ), um modelo de juju teria sido criado com o nome similar a juju-trusty-lxc-template .

Agora você pode criar clones deste template para criar quantos containers lxc quiser, e adicioná-los ao ambiente juju manualmente (isso também pode ser criado em uma máquina remota) através de ssh.

sudo lxc-clone juju-trusty-lxc-template -n lxc-001
sudo lxc-clone juju-trusty-lxc-template -n lxc-002

Iniciar os contêineres

sudo lxc-start -d -n lxc-001
sudo lxc-start -d -n lxc-002

e depois adicione os containers ao juju através do ssh

juju add-machine ssh:lxc-001 #this shall create machine-2
juju add-machine ssh:lxc-002 #this shall create machine-3

Depois que o juju terminar de instalar os agentes na máquina, você terá que remover a referência ao localhost: 170702 no arquivo agent.conf dentro dos contêineres e reiniciar o jujud dentro dos continers. Você pode fazer isso rapidamente:

juju run --machine 2 'sudo sed -i "s/\- localhost:17070//" /var/lib/juju/agents/machine-*/agent.conf && sudo pkill jujud -hup'
juju run --machine 3 'sudo sed -i "s/\- localhost:17070//" /var/lib/juju/agents/machine-*/agent.conf && sudo pkill jujud -hup'

Verifique em juju status se os agentes estão no estado iniciado e pronto, pronto para implantar um serviço nessas máquinas.

Espero que isso ajude.

Nota: Na configuração padrão do juju, os contêineres lxc terão o endereço DHCP da bridge criada a partir do juju. Esses endereços não são acessíveis na LAN. Você pode querer criar uma ponte customizada e deixar que juju use isso (altere network-bridge: your-lan-br0 em ~ / .juju / environments.yaml antes do bootstrapping). Isso também é necessário se você adicionar um contêiner de outra máquina física. Você também pode querer configurar endereços estáticos para contêineres lxc (dnsmasq).

    
por jasghar 16.09.2015 / 10:31