AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / server / Perguntas / 1168085
Accepted
Ian Flanagan
Ian Flanagan
Asked: 2024-11-24 15:28:05 +0800 CST2024-11-24 15:28:05 +0800 CST 2024-11-24 15:28:05 +0800 CST

A implantação alterando o link simbólico afetará as solicitações em execução no momento?

  • 772

É uma estratégia popular para o servidor web referenciar a compilação atual via symlink e alternar o symlink para implantar uma nova compilação

/var/www/current -> /var/www/build-1

Isso é um problema para solicitações executadas quando o link simbólico é alternado, já que os scripts fazem referência a outros arquivos durante a execução, e esses arquivos foram modificados na nova compilação?

Se sim, você acha que isso o desqualifica como uma estratégia para um serviço que exige alta disponibilidade?

É uma estratégia melhor atualizar a configuração do Nginx para referenciar a nova compilação diretamente e executar service nginx reload ? Presumo que reload permite que as solicitações atuais sejam concluídas na compilação antiga, enquanto envia novas solicitações para a nova compilação.

Se for relevante, estou interessado especificamente em PHP e Laravel.

nginx
  • 2 2 respostas
  • 88 Views

2 respostas

  • Voted
  1. Best Answer
    John Mahowald
    2024-11-24T23:41:33+08:002024-11-24T23:41:33+08:00

    Empacotar conteúdo como um diretório, como você sugere, tem a vantagem de facilitar o versionamento, o arquivamento, a instalação e a reversão.

    Não é necessário alterar o caminho do conteúdo na configuração httpd. A intenção de servir a versão atual do aplicativo implantado não mudou. A atualização de diretórios de conteúdo em servidores httpd acontece o tempo todo.

    Minimizar o tempo de transição ajuda a reduzir a janela de distorção de versão onde apenas alguns arquivos são diferentes. O uso de links simbólicos torna as trocas atômicas possíveis, não estritamente necessárias, mas também podem tentar uma transição limpa.

    ln -s /var/www/build-1 /var/www/current
    ln -s /var/www/build-2 /var/www/new/current
    mv /var/www/new/current /var/www/current
    

    (Ou excho programa a partir do util-linux 2.40 pode trocar diretórios reais atomicamente, mas é somente para Linux.)

    Em sistemas POSIX, em geral, arquivos abertos que são removidos continuam abertos. Os identificadores de arquivo são por inode, não por nome. No entanto, essa é a versão antiga. Qualquer coisa de execução longa deve ser informada de alguma forma para fechar o que eles abriram.

    PHP é relevante para os detalhes de implementação. Muitas instalações hoje em dia são processos php-fpm separados. Enviar o sinal USR2 recarregará graciosamente os workers e sua configuração. Leia a documentação do seu gerenciador de serviços para saber como enviar isso, como no systemd Linux systemctl reload

    Recarregar o servidor http também pode ser necessário. Quando ele serve conteúdo estático diretamente. Para linguagens em processo como httpd com mod_php. Para alterações de configuração. Mesma coisa, geralmente há um sinal de recarga elegante.


    Alta disponibilidade é o design e a implementação do que você quer que seja sua meta de tempo de atividade. Uma recarga elegante de php-fpm e nginx pode causar apenas um breve sinal de falha no serviço quando os novos workers são iniciados. Por si só, isso pode ser bom para alguns casos de uso. No entanto, mesmo que as atualizações de conteúdo quase não causem tempo de inatividade, eventualmente será necessária uma reinicialização para atualizações de software. Se esses poucos minutos de tempo de inatividade da infraestrutura forem um problema para sua organização, mesmo a recarga mais elegante não é uma solução de HA completa.

    Iniciar vários servidores http e colocá-los atrás de um balanceador de carga é um padrão descrito em todo lugar. Colocá-los em hosts diferentes evita que uma variedade de falhas interrompa o serviço completamente, melhorando o tempo de atividade. Além disso, torna-se possível drenar todas as conexões de um processo e fazer qualquer manutenção nele quando quiser.

    Alguns desses métodos de implantação pretendem que diferentes versões sejam executadas ao mesmo tempo. Disciplina durante o desenvolvimento ajuda, especialmente para recursos compartilhados ou APIs. Talvez haja uma oportunidade de reestruturar consultas de banco de dados na versão 2. Um período de transição em que o banco de dados pode fazer consultas da versão 1 ou 2 torna a implantação mais fácil. A instalação e o recarregamento contínuos, um backend de cada vez, levam algum tempo para verificar um número tolerável de erros. Fácil de colocar a versão 1 de volta ou concluir a instalação da 2.

    • 0
  2. Kiyomizu
    2024-11-25T01:54:29+08:002024-11-25T01:54:29+08:00

    Para serviços de alta disponibilidade, alternar o symlink pode causar problemas com solicitações ativas referenciando diferentes builds. Recarregar o Nginx é uma abordagem melhor para implantações com tempo de inatividade zero.

    • 0

relate perguntas

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Você pode passar usuário/passar para autenticação básica HTTP em parâmetros de URL?

    • 5 respostas
  • Marko Smith

    Ping uma porta específica

    • 18 respostas
  • Marko Smith

    Verifique se a porta está aberta ou fechada em um servidor Linux?

    • 7 respostas
  • Marko Smith

    Como automatizar o login SSH com senha?

    • 10 respostas
  • Marko Smith

    Como posso dizer ao Git para Windows onde encontrar minha chave RSA privada?

    • 30 respostas
  • Marko Smith

    Qual é o nome de usuário/senha de superusuário padrão para postgres após uma nova instalação?

    • 5 respostas
  • Marko Smith

    Qual porta o SFTP usa?

    • 6 respostas
  • Marko Smith

    Linha de comando para listar usuários em um grupo do Windows Active Directory?

    • 9 respostas
  • Marko Smith

    O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL?

    • 3 respostas
  • Marko Smith

    Como determinar se uma variável bash está vazia?

    • 15 respostas
  • Martin Hope
    Davie Ping uma porta específica 2009-10-09 01:57:50 +0800 CST
  • Martin Hope
    kernel O scp pode copiar diretórios recursivamente? 2011-04-29 20:24:45 +0800 CST
  • Martin Hope
    Robert ssh retorna "Proprietário incorreto ou permissões em ~/.ssh/config" 2011-03-30 10:15:48 +0800 CST
  • Martin Hope
    Eonil Como automatizar o login SSH com senha? 2011-03-02 03:07:12 +0800 CST
  • Martin Hope
    gunwin Como lidar com um servidor comprometido? 2011-01-03 13:31:27 +0800 CST
  • Martin Hope
    Tom Feiner Como posso classificar a saída du -h por tamanho 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent Como determinar se uma variável bash está vazia? 2009-05-13 09:54:48 +0800 CST

Hot tag

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve