9
respostas

Duvidas com aplicação

Professor, tudo bem? Estou com uma dúvida muito grande em um projeto que estou fazendo dos meus estudos. Vê se pode me ajudar. Criei um cluster com 2 máquinas físicas onde criei um contêiner Wordpress replicado no manager e worker, um contêiner mysql e um nginx replicado no manager e no worker. Preciso configurar um loadbalancer e um proxy reverso para acessar a aplicação somente através de um link.

  • Eu preciso criar um container nginx replicado ou somente um container nginx ?
9 respostas

Olá Neto, tudo bem? No caso são duas máquinas físicas, então uma delas está como manager e a outra está como worker é isso? E também cada uma dessas duas máquinas tem o Wordpress, o MySQL, e o Nginx é isso? Bem nesse caso, se é um cluster, você só vai precisar usar um container do Nginx, já que ele vai direcionar as requisições para os serviços. E sobre proxy reverso, eu respondi esse outro tópico, e acho que pode ser interessante para você.

Espero ter ajudado!

Jonilson, é isso mesmo tenho um cluster com 2 worker rodando 1 mysql e 2 wordpress, também agora subi um serviço de nginx. Estou seguindo post que me passou e porém surgiu uma dúvida quando você fala para criar dois arquivo na pasta sites-available,

Tento o Nginx já em execução, você criar dois arquivos no diretório /etc/nginx/sites-available/:

container1.meusite.com.confcontainer2.meusite.com.conf

Eu posso escolher o nome que eu quiser para este arquivo? Por exemplo, posso criar assim ?meusite1.com.br.confmeusite2.com.br.conf

e outra coisa que fiquei na dúvida... em server_name eu passo o mesmo nome que foi criado o arquivo .conf ? E quanto ao poxy_pass não é bem localhost por ser máquina virtual, eu passo o IP do container?

Eu criei abaixo só para ver melhor se é realmente isso

server {
  listen        80;
  server_name   meusite.com.br;

  location / {
    proxy_pass  http://192.168.99.116:8084;
  }
}

o IP é da VM onde criou o container quando subi o serviço

Neto, quanto a sua pergunta "Eu posso escolher o nome que eu quiser para este arquivo?", sim você pode escolher qualquer nome que seja interessante pra você!

Sobre essa outra dúvida "em server_name eu passo o mesmo nome que foi criado o arquivo .conf?" Isso mesmo, você deve passar o mesmo nome do arquivo, da seguinte forma:

server_name   meusite1.com.br;

Sim, deve ser informado o IP da máquina.

Fala pra gente o resultado!

Jonilson, tudo bem?

Eu fiz as configurações conforme orientou e porém não deu certo, criei as pastas sites-available e sites-enabled, em ambas as pastas criei um arquivo meusite.com.br.conf e coloquei o seguinte

upstream {
   192.168.99.113:8084;
   192.168.99.114:8084;
   192.168.99.115:8084;
   192.168.99.116:8084;
   192.168.99.117:8084;
}

server {
  listen        9080;
  server_name   meusite.com.br;

  location / {
    proxy_pass  http://192.168.99.116:8084;
  }
}

A porta 9080 é a porta do nginx, os IPS com a porta 8084 é as minhas vms rodando o wordpress. Quando eu passo o IP 192.168.99.xxx:9080 eu consigo acesso a página padrão do Nginx e quando eu passo o IP 192.168.99.xxx:8084 eu consigo acessar o site padrão do Wordpress. Quando eu acesso o site através da URL meusite.com.br dá o erro

Não é possível acessar esse siteNão é possível acessar http://meusite.com.br/.ERR_ADDRESS_UNREACHABLE

Neto, peço desculpas mas não entendi muito bem seu cenário, no inicio desse tópico você mencionou que tem duas máquinas físicas e você criou o container Wordpress replicado, porém nesse último post, você tem 5 IPs de máquinas diferentes, não consegui entender seu cenário, você poderia explicar melhor e com mais detalhes possíveis.

Porque também não entendo de onde você está executando as requisições, é das mesmas máquinas físicas? É de outra máquina na rede? Como seria isso?

Outra coisa, você quer acessar a aplicação WordPress através do endereço http://meusite.com.br correto? Porém a partir de que máquina? Porque esse endereço tem que está também no arquivo de hosts da sua máquina, e vinculado o IP ao endereço, preciso entender mais para lhe indicar o melhor caminho!

Jonilson, me desculpa mas quando criei o ambiente realmente era 2 máquinas físicas, agora eu criei 5 vms em uma máquina física e criei um cluster onde subi 1 serviço de mysql, um serviço de nginx e um serviço de wordpress replicado para meus workers.As vms tem os ips 192.168.99.113 até 192.168.99.117. Fiz a configuração do wordpress com o sql e consigo acesso atraves dos ips 192.168.99.xx:8084 (8084 é a porta do wordpress). Estou tentando configurar o nginx para loadbalancer e acessar através da url http://meusite.com.br, mas quando eu faço as configurações como me orientou acima não dá certo. O que pode ser feito ?

Agora entendi corretamente seu ambiente Neto, bem posso está enganado, mas você adicionou um registro dentro do seu arquivo de hosts da sua máquina física? Porque veja bem, precisa usar o conceito de VIRTUAL HOST, e para isso temos que colocar um registro no arquivo de hosts da sua máquina indicando qual o IP vamos acessar pelo endereço http://meusite.com.br, nesse caso, você deve criar um registro no arquivo hosts da seguinte forma:

192.168.99.116       meusite.teste

E também indico que seria melhor usar o Nginx na porta 80, assim não precisaria se preocupar com as portas.

Fala pra gente o resultado!

Eu criei o serviço na porta 80, coloquei no hosts o IP 192.168.99.113 até o IP 192.168.99.117, agora quando eu acesso meusite.com.br me mostra a página do nginx. Porque será que está acontecendo isso? Eu abri o modo desenvolvedor do navegador e analisei e está me direcionando só para o primeiro IP cadastrado no arquivo hosts.

Neto, você usando apenas um serviço do Nginx correto? Bem nesse caso você poderia tentar dessa forma:

http {
   upstream maquinas {
      server 192.168.99.113:8084;
      server 192.168.99.114:8084;
      server 192.168.99.115:8084;
      server 192.168.99.116:8084;
      server 192.168.99.117:8084;
   }

   server {
      listen 80;
      server_name   meusite.com.br;

      location / {
          proxy_pass http://maquinas;
      }
   }
}

E no arquivo hosts da sua máquina física só colocar apenas o IP da vm que está executando o Nginx:

192.168.99.116       meusite.com.br

E fala pra gente o resultado!