Sincronizando vários servidores web wordpress em um farm

7

Minha empresa em breve criará um blog, e estou planejando configurar dois servidores para hospedar o site do wordpress para redundância. Normalmente, quando fazemos lançamentos em um site em uma fazenda, empurramos para um lado, testamos e depois soltamos para o outro lado. Para atualizações do wordpress, podemos fazer isso com bastante facilidade. No entanto, o problema se torna como lidar com a pasta wp-content. Como as pessoas estarão publicando postagens e fazendo o upload de gráficos, elas precisarão ser sincronizadas com o outro servidor no farm, não importando o servidor para o qual as enviem.

Eu poderia configurar o DFS para replicar os arquivos, mas isso parece um exagero.

Eu poderia configurar o robocopy para ser executado a cada 15 minutos ou algo assim e dizer a todos que as postagens devem agendar a publicação da postagem em pelo menos 15 minutos para que os arquivos tenham tempo de ser replicados.

Existe alguma solução melhor por aí? Talvez algo um plugin wordpress para que quando os gráficos são enviados para o post eles são automaticamente replicados para os outros servidores no farm?

Estou executando o Wordpress no Windows 2008 para que as soluções Linux não ajudem muito.

    
por mrdenny 29.06.2009 / 23:51

6 respostas

1

Nós usamos o Super Flexible File Synchronizer para coisas como essa no passado. Funciona muito bem e tem várias opções para controlar a sincronização.

    
por 01.07.2009 / 04:03
1

Eu não sou um assistente com o IIS, mas espero que a técnica seja traduzida.

Suponho que haja um nome de host compartilhado com carga balanceada entre os dois servidores e que também exista um nome publicamente acessível para cada um.

O que você quer é um redirecionamento condicional em um dos dois servidores combinado com algum tipo de sincronização de arquivos. Se o URI começar com / wp-content e o arquivo existir, atenda-o localmente. Caso contrário, redirecione para o outro servidor. O servidor A redireciona para B e vice-versa.

Isso deve resultar em uma experiência perfeita para os espectadores. Eles só recebem um redirecionamento temporário de imagens na janela entre a publicação e a sincronização. Dependendo das preocupações de largura de banda ou redundância, seu intervalo de sincronização pode ser muito mais longo que 15 minutos, já que o site deve renderizar adequadamente no momento em que a postagem for exibida.

No nginx, eu faria isso com um bloco assim:

location ~ ^/wp-content {
  if( -f $request_filename ) {
    expires max;
    break;
  }
  rewrite ^/(.+)$ http://otherserver.com/$1 last;
}

O nginx está disponível para Windows, mas duvido que você queira mudar o software do servidor da Web para fazer isso. Espero que a ideia possa ser convertida para o IIS ou para qualquer software que você esteja usando.

    
por 30.06.2009 / 00:14
1

Estou colocando isso como uma resposta separada porque é uma abordagem diferente:

O que dizer de colocar as imagens no armazenamento em nuvem (Amazon S3 ou similar) e depois fazer com que seus usuários usem links para a nuvem. Os custos de largura de banda podem ser um pouco maiores e possivelmente há problemas de treinamento para fazer com que os usuários façam o upload para a nuvem primeiro, mas elimina a necessidade de verificações de sistemas de arquivos locais ou entre servidores.

Ele também deve ser escalado, independentemente do número de servidores que você implanta.

    
por 30.06.2009 / 08:43
0

O conteúdo de um único compartilhamento de arquivos de rede (sem DFS) é uma opção?

Que tal uníssono ?

    
por 30.06.2009 / 02:40
0

Você pode usar o rsync para isso. Caso contrário, se você tiver arquivos sob controle de origem, poderá usar algo como o Capistrano para poder distribuir as coisas em máquinas diferentes (e até mesmo reverter, se necessário).

Quando você tem mais de uma máquina, ser capaz de implantar e reverter é muito útil.

    
por 01.07.2009 / 04:28
0

que tal robocopy com as seguintes opções: 1. Para detectar alterações & executar sincronizar - / MON: n :: fonte do MONITOR; correr novamente quando mais de n mudanças forem vistas. / MOT: m :: fonte do MOnitor; corra novamente em m minutos Tempo, se alterado.

  1. opções de economia de largura de banda - / RH: hhmm-hhmm :: Executar horas - horas em que novas cópias podem ser iniciadas. / PF :: verifique as horas de execução em uma base por arquivo (não por passagem).

neways, o que você finalmente usou para esse problema?

    
por 11.11.2009 / 00:45