Configuração avançada de verniz
O verniz fornece vários recursos que impedem que os clientes enfrentem longos atrasos e tempos limite quando o servidor do Commerce não está funcionando corretamente. Esses recursos podem ser configurados no arquivo default.vcl
. Este tópico descreve as adições que o Commerce fornece no arquivo VCL (Linguagem de configuração de verniz) que você baixa do Administrador.
Consulte o Manual de referência de verniz para obter detalhes sobre o uso da Linguagem de configuração de verniz.
Verificação de integridade
O recurso de verificação de integridade do Vernish consulta o servidor do Commerce para determinar se ele está respondendo em tempo hábil. Se estiver respondendo normalmente, o conteúdo novo é gerado novamente após a expiração do TTL (Time to Live). Caso contrário, o verniz sempre serve conteúdo obsoleto.
O Commerce define a seguinte verificação de integridade padrão:
.probe = {
.url = "/pub/health_check.php";
.timeout = 2s;
.interval = 5s;
.window = 10;
.threshold = 5;
}
A cada 5 segundos, essa verificação de integridade chama o script pub/health_check.php
. Este script verifica a disponibilidade do servidor, de cada banco de dados e do Redis (se instalado). O script deve retornar uma resposta em 2 segundos. Se o script determinar que qualquer um desses recursos está inativo, retornará um código de erro 500 HTTP. Se esse código de erro for recebido em seis de dez tentativas, o back-end será considerado não íntegro.
O script health_check.php
está localizado no diretório pub
. Se o diretório raiz do Commerce for pub
, altere o caminho no parâmetro url
de /pub/health_check.php
para health_check.php
.
Para obter mais informações, consulte a documentação das Verificações de integridade do verniz.
Modo de carência
O modo de carência permite que o Vernish mantenha um objeto no cache além de seu valor TTL. O verniz pode então fornecer o conteúdo expirado (obsoleto) enquanto busca uma nova versão. Isso melhora o fluxo de tráfego e diminui os tempos de carregamento. Ele é usado nas seguintes situações:
- Quando o back-end do Commerce está íntegro, mas uma solicitação está demorando mais do que o normal
- Quando o back-end do Commerce não está íntegro.
A sub-rotina vcl_hit
define como o Verniz responde a uma solicitação para objetos que foram armazenados em cache.
Quando o back-end do Commerce está íntegro
Quando as verificações de integridade determinam que o back-end do Commerce está íntegro, o Vernish verifica se o tempo permanece no período de carência. O período de carência padrão é de 300 segundos, mas um comerciante pode definir o valor do Administrador conforme descrito em Configurar o Commerce para usar o Verniz. Se o período de carência não tiver expirado, o Varnish fornecerá o conteúdo obsoleto e atualizará de forma assíncrona o objeto do servidor do Commerce. Se o período de carência tiver expirado, o Varnish fornecerá o conteúdo obsoleto e atualizará de forma síncrona o objeto do back-end do Commerce.
O tempo máximo que o Verniz fornece a um objeto obsoleto é a soma do período de carência (300 segundos por padrão) e do valor TTL (86.400 segundos por padrão).
Para alterar o período de carência padrão no arquivo default.vcl
, edite a seguinte linha na subrotina vcl_hit
:
if (obj.ttl + 300s > 0s) {
Quando o back-end do Commerce não está íntegro
Se o back-end do Commerce não for responsivo, o Varnish fornecerá conteúdo obsoleto do cache por três dias (ou conforme definido em beresp.grace
) mais o TTL restante (que por padrão é um dia), a menos que o conteúdo em cache seja limpo manualmente.
Modo Saint
O modo Saint exclui back-end não íntegros por um período de tempo configurável. Como resultado, back-end não íntegros não podem fornecer tráfego ao usar o Varnish como balanceador de carga. O modo Saint pode ser usado com o modo de carência para permitir o manuseio complexo de servidores de back-end não íntegros. Por exemplo, se um servidor de back-end não estiver íntegro, as tentativas poderão ser roteadas para outro servidor. Se todos os outros servidores estiverem inativos, forneça objetos em cache obsoletos. Os hosts de back-end do modo saint e os períodos de blecaute são definidos no arquivo default.vcl
.
O modo Saint também pode ser usado quando as instâncias do Commerce são colocadas offline individualmente para executar tarefas de manutenção e atualização sem afetar a disponibilidade do site do Commerce.
Pré-requisitos do modo Saint
Designar uma máquina como a instalação principal. Nesta máquina, instale a instância principal do Commerce, do banco de dados mySQL e do Varnish.
Em todas as outras máquinas, a instância do Commerce deve ter acesso ao banco de dados mySQL da máquina primária. As máquinas secundárias também devem ter acesso aos arquivos da instância primária do Commerce.
Como alternativa, o controle de versão de arquivos estáticos pode ser desativado em todas as máquinas. Isto pode ser acessado pelo Administrador em Lojas > Configurações > Configuração > Avançado > Desenvolvedor > Configurações de Arquivos Estáticos > Assinar Arquivos Estáticos = Não.
Por fim, todas as instâncias do Commerce devem estar no modo de produção. Antes de o Verniz ser iniciado, limpe o cache em cada instância. No Admin, vá para Sistema > Ferramentas > Gerenciamento de cache e clique em Liberar cache de Magento. Você também pode executar o seguinte comando para limpar o cache:
bin/magento cache:flush
Instalação
O modo Saint não faz parte do pacote principal de vernizes. É um vmod
com versão separada que deve ser baixado e instalado. Como resultado, você deve recompilar o Varnish a partir da origem, conforme descrito nas instruções de instalação para a sua versão do Varnish.
Depois de recompilar, você pode instalar o módulo Saint mode. Em geral, siga estas etapas:
-
Obter o código-fonte de módulos de verniz. Clonar a versão do Git (versão mestre) desde que as versões 0.9.x contenham um erro de código-fonte.
-
Crie o código-fonte com as ferramentas automáticas:
code language-bash sudo apt-get install libvarnishapi-dev || sudo yum install varnish-libs-devel ./bootstrap # If running from git. ./configure make make check # optional sudo make install
Consulte Coleção de módulos vernish para obter informações sobre a instalação do módulo Saint mode.
Arquivo VCL de exemplo
O código a seguir mostra o código que deve ser adicionado ao arquivo VCL para ativar o modo santo. Coloque as instruções import
e as definições backend
na parte superior do arquivo.
import saintmode;
import directors;
backend default1 {
.host = "192.168.0.1";
.port = "8080";
.first_byte_timeout = 600s;
.probe = {
.url = "/pub/health_check.php";
.timeout = 2s;
.interval = 5s;
.window = 10;
.threshold = 5;
}
}
backend default2 {
.host = "192.168.0.2";
.port = "8080";
.first_byte_timeout = 600s;
.probe = {
.url = "/pub/health_check.php";
.timeout = 2s;
.interval = 5s;
.window = 10;
.threshold = 5;
}
}
sub vcl_init {
# Instantiate sm1, sm2 for backends tile1, tile2
# with 10 blacklisted objects as the threshold for marking the
# whole backend sick.
new sm1 = saintmode.saintmode(default1, 10);
new sm2 = saintmode.saintmode(default2, 10);
# Add both to a director. Use sm0, sm1 in place of tile1, tile2.
# Other director types can be used in place of random.
new magedirector = directors.random();
magedirector.add_backend(sm1.backend(), 1);
magedirector.add_backend(sm2.backend(), 1);
}
sub vcl_backend_fetch {
# Get a backend from the director.
# When returning a backend, the director will only return backends
# saintmode says are healthy.
set bereq.backend = magedirector.backend();
}
sub vcl_backend_response {
if (beresp.status >= 500) {
# This marks the backend as sick for this specific
# object for the next 20s.
saintmode.blacklist(20s);
# Retry the request. This will result in a different backend
# being used.
return (retry);
}
}