Pular para o conteúdo principal

Questão de Programação — Servidores de aplicação — VUNESP 2023

ProgramaçãoServidores de aplicação
Código
vu079177
Banca
VUNESP
Órgão
TJ-RS
Ano
2023
Nível
Superior
Cargo
Analista de Tecnologia da Informação - Especialidade: Análise de Suporte

Em uma aplicação web, deseja-se utilizar o NGINX para realizar balanceamento de carga HTTP entre dois servidores (app1.exemplo.com e app2.exemplo.com). Deseja-se repassar o dobro de requisições para o primeiro servidor em relação ao segundo. Para isso, utiliza-se a seguinte configuração no bloco http do arquivo de configurações, em que duas linhas estão propositalmente ocultas e representadas por lacunas:



Imagem associada para resolução da questão



Para resolver o problema, o conteúdo a ser preenchido nas duas lacunas é: 

  1. Aserver app1.exemplo.com:80 weight=2;server app2.exemplo.com:80 weight=1;
  2. Bapp1.exemplo.com:80 2;app2.exemplo.com:80 1;
  3. Capp1.exemplo.com:80,app2.exemplo.com:80 2,1
  4. Dserver app1.exemplo.com:80 2x;server app2.exemplo.com:80 1x;
  5. Eserver 2 app1.exemplo.com:80;server 1 app2.exemplo.com:80;
Revelar gabarito e comentário

GabaritoA — server app1.exemplo.com:80 weight=2; server app2.exemplo.com:80 weight=1;

Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.

Balanceamento de carga HTTP com NGINX

Gabarito: letra A. No NGINX, o balanceamento de carga HTTP é configurado no bloco upstream, onde cada servidor é declarado com a diretiva server, e o peso relativo é definido pelo parâmetro weight. Para repassar o dobro de requisições ao primeiro servidor, usa-se weight=2 para app1.exemplo.com e weight=1 para app2.exemplo.com — exatamente o que a alternativa A apresenta.

O NGINX é um servidor web de alto desempenho que também atua como proxy reverso e balanceador de carga. Quando você define um bloco upstream, está criando um grupo de servidores para os quais o NGINX distribui as requisições recebidas. A diretiva server dentro desse bloco especifica o endereço de cada servidor (host e porta) e pode receber parâmetros adicionais que controlam o comportamento do balanceamento. O parâmetro weight é o que define a proporção de requisições que cada servidor recebe: quanto maior o peso, mais requisições são direcionadas para ele. No caso, weight=2 para o primeiro e weight=1 para o segundo faz com que, a cada três requisições, duas vão para app1 e uma para app2 — exatamente o dobro.

A sintaxe correta é server endereco:porta weight=valor;. O ponto e vírgula é obrigatório ao final de cada diretiva. As alternativas que omitem a palavra server, usam sintaxe de outros softwares (como HAProxy) ou colocam o peso antes do endereço estão incorretas. A pegadinha da banca é justamente testar se o candidato conhece a sintaxe específica do NGINX, que difere de outras ferramentas de balanceamento.

Na prática, um bloco upstream completo ficaria assim:

upstream backend {
    server app1.exemplo.com:80 weight=2;
    server app2.exemplo.com:80 weight=1;
}

E depois, no bloco server ou location, você usaria proxy_pass http://backend; para encaminhar as requisições para esse grupo. O NGINX então distribui as requisições de acordo com os pesos definidos.

Guarde bem a estrutura: server + endereço + weight= + número, com ponto e vírgula no final. É exatamente esse formato que separa a alternativa correta das demais.

  1. 1Bloco upstream
  2. 2Diretiva server
  3. 3Endereço:porta
  4. 4weight=valor
  5. 5Ponto e vírgula
LEVEL · soulevel.com.br

Alternativa A — ✅ Correta ⟵ GABARITO

Esta é a única que segue a sintaxe correta do NGINX: server app1.exemplo.com:80 weight=2; e server app2.exemplo.com:80 weight=1;. O parâmetro weight define a proporção de requisições, e os valores 2 e 1 garantem que o primeiro servidor receba o dobro de requisições do segundo. O ponto e vírgula final é obrigatório.

Alternativa B — ❌ Incorreta

A alternativa B omite a palavra-chave server, que é obrigatória para declarar cada servidor no bloco upstream. A sintaxe app1.exemplo.com:80 2; não é reconhecida pelo NGINX. Além disso, o peso não é indicado com weight=, mas apenas com o número solto, o que também está errado.

Alternativa C — ❌ Incorreta

A alternativa C usa vírgula para separar os servidores e coloca os pesos em uma lista 2,1, o que não corresponde à sintaxe do NGINX. No NGINX, cada servidor é declarado em uma linha separada com a diretiva server, e o peso é um parâmetro individual. Essa sintaxe lembra outros balanceadores, como o HAProxy, mas não o NGINX.

Alternativa D — ❌ Incorreta

A alternativa D usa 2x e 1x para indicar os pesos, o que não é válido no NGINX. O parâmetro correto é weight=2 e weight=1, sem o sufixo x. A palavra server está presente, mas o formato do peso está errado.

Alternativa E — ❌ Incorreta

A alternativa E coloca o peso antes do endereço (server 2 app1.exemplo.com:80;), o que inverte a ordem correta. No NGINX, o endereço vem primeiro e o parâmetro weight depois, como em server app1.exemplo.com:80 weight=2;. Além disso, o peso não é indicado com weight=, apenas com o número, o que também está errado.

NÃO CAIA NESSA!

A banca explora a confusão entre a sintaxe do NGINX e a de outras ferramentas de balanceamento, como o HAProxy. No HAProxy, a configuração seria server app1 10.0.0.1:80 weight 2, sem o sinal de igual. Já no NGINX, o correto é server app1.exemplo.com:80 weight=2;. Fique atento a esse detalhe: o weight no NGINX usa o sinal de igual, e a diretiva server é obrigatória.

PEGA ESSA DICA!

Para memorizar a sintaxe do NGINX, lembre-se da estrutura: server <endereço>:<porta> weight=<número>;. O weight define a proporção de requisições, e o ponto e vírgula é obrigatório. Se a alternativa não tiver a palavra server ou o weight= com o sinal de igual, está errada.

Gabarito: letra A

Link permanente: /questoes/vu079177