Contêineres Publicamente Disponíveis via Ubuntu 18.04 - help question

0
Primeiro, deixe-me começar dizendo que não sou especialista em conversa com servidores. Eu tenho ensinado a mim mesmo, e realmente só conheço princípios básicos de nível de entrada para gerenciamento de servidores.

Estou tentando consolidar todos os meus muitos VPS de instância única e colocá-los em um único VPS com contêineres gerenciados que possuem seu próprio acesso de raiz privilegiado (no contêiner).

Cada VPS que tenho atualmente roda uma pilha simples para servir o WordPress.

  • Ubuntu 18.04 LTS
  • PHP / 7.2
  • MySQL
  • Mecanismo de servidor Caddy HTTPS / 2

Meu VPS atual custa US $ 5 por mês e vem com:

  • 01 GB de RAM
  • SSD de 25 GB (só preciso de menos de 10 GB)
  • 01vCore
  • 01TB Largura de banda (eu não toco isso, as páginas do meu site são pequenas em ~ 0,8 mb para páginas densas e tráfego baixo)

Para mim, esses recursos são ótimos. Mas correr perto de 10 sites é de cerca de 55 dólares por mês (Vultr). Em vez disso, gostaria de testar um serviço (SSD Nodes) que oferece essas especificações / preço:

  • 16 GB de RAM
  • SSD de 80 GB
  • 04 vCores
  • largura de banda de 8.0TB
  • E / S de 40 GB

O preço deste serviço varia, mas geralmente é inferior a US $ 15 por mês, se você pagar adiantado, o que eu não me importaria de fazer.

Eu usaria este único VPS para rodar o Ubuntu 18.04 e depois usar o LXD / LXC para provisionar contêineres que podem abrigar cada site individualmente.

Cada container pode ser limitado a todos os recursos que eu gostaria (dentro dos limites do VPS). Isso economizaria dinheiro, permitiria mais espaço para sites / projetos e criaria uma interface mais gerenciável para manutenção.

Aqui está uma visão geral do que eu gostaria de realizar.

  • Máquina host ---- > Ubuntu 18.04

  • [container01] ---- > Site WordPress A

  • [container02] ---- > WordPress Site B
  • [container03] ---- > WordPress Site C
  • [container04] ---- > WordPress Site D
  • E um
  • [instantâneo da instalação da pilha limpa para redefinir / reimplantar com facilidade]

Eu tentei essa configuração em um ambiente de teste local, bem como em um ambiente de teste ao vivo (no Vultr) e não consigo encontrar uma correção para o meu problema.

Meu único problema com a tentativa dessa configuração é que não consigo que meus contêineres recém-criados passem pelo endereço IP principal para poder acessar cada contêiner publicamente. Eu criei cada contêiner e mudei a ponte padrão para utilizar o 'macvlan', que efetivamente designa endereços 'físicos'. No entanto, esses endereços 'físicos' são úteis apenas para uso interno, pois são endereços IP baseados em '10' e não podem ser acessados publicamente.

É aqui que me perco e não consegui encontrar uma solução online.

Alguém aqui poderia me aconselhar neste caso em particular? Ou eu tenho que descartar toda essa ideia, uma vez que simplesmente não funcionaria?

Além disso, nota lateral. Eu não quero executar os servidores usando o Docker, Kuburnetes ou Nginx multi website managers. Eu preferiria a conteinerização para que eu possa testar novos projetos ou sites individualmente conforme eu aprendo mais.

Obrigado,

    
por Rounce Well 08.05.2018 / 21:21

1 resposta

1

Você precisa dedicar um único contêiner LXD para fazer proxy dessas solicitações HTTP (ou HTTPS) nos contêineres correspondentes com as instalações do WordPress.

Primeiro, crie um contêiner proxy e faça seu host encaminhar as conexões para a porta 80 (web) para a porta 80 desse contêiner proxy . Você pode fazer o encaminhamento com iptables ou, se usar o LXD 3.0, com o dispositivo LXD proxy .

Segundo, neste contêiner proxy instale um proxy link adequado. Os exemplos são HAProxy (consulte link ), nginx como proxy reverso , ou mesmo caddy (veja link ).

Em terceiro lugar, cada site WordPress precisa de um banco de dados. Seria um exagero instalar o MySQL / Mariadb em cada contêiner do WordPress. Você pode considerar a criação de um contêiner db com o banco de dados e criar uma conta diferente no banco de dados para cada site.

    
por Simos 12.05.2018 / 11:30