Wordpress na replicação do IIS com robocopy

10

Nós configuramos um ambiente wordpress em 4 servidores IIS. Estamos pensando em usar uma tarefa planejada acionando um script robocopy para replicar o diretório wordpress a cada 5 minutos.

Quais são as opiniões sobre tal abordagem? Alguém já usou isso ou algo semelhante?

    
por joebegborg07 08.11.2016 / 09:36

3 respostas

12

Obrigado por todas as sugestões de pessoas.

Nossa solução estava usando uma abordagem de sincronização peer-to-peer usando uma ferramenta chamada resilio.

O Resilio nos permitiu configurar um número de computadores (neste caso, o IIS Front termina) em um cluster de sincronização ponto a ponto. Uma pasta é selecionada em cada computador no cluster a ser usado para o processo de sincronização.

O serviço resilio (serviço do windows sendo executado em segundo plano), monitora essas pastas em busca de alterações e, se uma alteração for feita em qualquer uma das pastas especificadas nos front ends em questão, o resilio enviará essa alteração para os outros servidores.

Espero que isso ajude outras pessoas a enfrentar um problema semelhante no futuro.

    
por 14.11.2016 / 10:37
12

Ter quatro servidores front-end que compartilham os mesmos arquivos ao mesmo tempo e que cada um é capaz de escrever sem usar algum tipo de programa de DFS ou de terceiros dedicado à sincronização de diretórios seria uma égua noturna.

Com o azure, você pode pesquisar três coisas.

  1. Armazenamento compartilhado, pode haver algum custo associado à obtenção de seu próprio armazenamento dedicado, e não tenho certeza da configuração, no entanto, o Azure oferece isso. Isso garantiria que todos os arquivos estejam disponíveis para cada servidor assim que forem gravados.

  2. O Azure DFS, DFS, é uma ferramenta de sincronização de diretórios baseada em Windows que funciona muito bem, além de não ter certeza sobre o custo, mas a configuração pode ser um pouco mais fácil. O DFS funciona de forma assíncrona, portanto há um pequeno atraso, mas não muito.

  3. (Vou explicar como isso seria feito e depois nunca mais falar sobre isso, porque é uma ideia horrível e irá falhar.) Crie um script que primeiro compare os dados em todos os quatro servidores e depois copie os dados diferenciais. Você precisaria compartilhar cada diretório com o servidor que está executando o script, configurar a permissão para que o servidor possa ler e gravar e, em seguida, solucionar problemas, solucionar problemas.

Qualquer uma das opções acima fará o trabalho, se o seu trabalho depender desse trabalho, recomendo que você fique longe da opção 3.

Assim sendo, e você não está tentando gastar dinheiro, siga as etapas abaixo.

  1. veja um programa chamado "sincronização gratuita de arquivos". Existem alguns recursos muito bons para a versão gratuita. Acredito que haja uma versão paga, mas não tenho certeza das melhorias que você obtém. Eu o usei em muitos dos meus ambientes de desenvolvimento ao tentar alcançar algo semelhante ao que você está procurando fazer e era preguiçoso em configurar o DFS.

  2. Faça apenas um servidor gravável, isso pode ser feito facilmente configurando um URI em cada servidor que diz se criar um artigo vá para ServerA, ou um URL reescreva em seu web.config, ou seja, o WordPress é php use:

    header ('Localização: link ');

Cada um terá um pouco de codificação e PHP, conhecimento do IIS.

  1. A parte realmente divertida, com ServerA sendo o servidor autor (somente servidor gravável), como direcionar o tráfego para ServerB, ServerC e ServerD para leitura sem um balanceador de carga?

Resposta curta que você não pode, bem, isso não é exatamente verdade, eu tive um cliente que foi inflexível sobre não usar um balanceador de carga, ele conseguiu através de uma série de scripts powershell mover uma conexão de um servidor para outro baseado em a quantidade de processos de trabalho em cada caixa ou algo parecido. De qualquer forma muito difícil de fazer e não vale a pena o tempo e energia para colocar adiante.

Veja se você não pode configurar o balanceamento de carga de rede nos servidores. Ele exigirá um IP adicional, mas sua única alteração de DNS e o tráfego poderão ser distribuídos para leitura nos três servidores.

Boa sorte!

    
por 09.11.2016 / 16:23
11

Eu não acho que as tarefas agendadas e o Robocopy sejam uma excelente abordagem. Por causa da janela de 5 minutos, haverá momentos em que um recurso é solicitado, mas o servidor selecionado pelo balanceador de carga não o terá disponível. Para sites em grande parte estáticos, isso acontecerá com muito menos frequência do que com sites ocupados que são alterados com frequência. Uma frequência mais alta ou usando uma tecnologia de sincronização diferente, como o Bittorrent Sync (agora chamado de Resilio Sync ), melhoraria bastante isso, mas não eliminaria problema.

Colocar seu conteúdo wp ou talvez apenas a pasta wp-content / uploads em uma unidade compartilhada seria uma solução melhor. Outra maneira de ver isso seria ter um dos servidores hospedando essa pasta e fazer com que os outros a compartilhem. Com o cache de disco, a carga no servidor não deve ser muito maior do que os outros servidores.

Atualizar

Dê uma olhada em este artigo para ideias sobre armazenamento em cache de páginas e este para o CDN. É sobre o Nginx, então você precisará resolver isso para o IIS, mas a teoria por trás dele é válida para qualquer servidor da Web.

    
por 08.11.2016 / 20:50