Prática recomendada para implementar o PHP em vários servidores

3

Atualmente, estou implantando alguns aplicativos PHP Zend em meus servidores e, atualmente, isso é o que consegui.

1ª camada - Load-balancer + Http-cache.

2nd Layer - web-server (terá muitos outros servidores web aqui, é por isso que o load-balancer).

3rd Layer - MySql (terá replicação, slave-master, talvez sharding por cliente ou grupo de clientes).

A questão é que, atualmente eu estou rodando nginx + php-fpm no servidor web, todo o código php permanece na respectiva pasta home do usuário. Quando o tempo passar, eu quero aumentar o número de servidores, instâncias php-fpm e nginx.

Onde devo colocar o php, porque não posso duplicá-lo entre os servidores, caso contrário as atualizações vão estragar a consistência;)

Eu estou pensando talvez em um NFS que conterá todo o código php e os servidores apenas apontarão para isso.

Qual a abordagem correta aqui?

Sou meio novo na arquitetura de servidores.

Aprecie sua ajuda.

[] 's Rodrigo

    
por Rodrigo Dellacqua 23.01.2011 / 18:49

2 respostas

2

Você realmente não deve colocá-lo no NFS. Isso fará com que seu servidor NFS seja um ponto único de falha. Se o seu NFS estiver inacessível (talvez ele falhe, talvez haja um problema de rede ...), todo o seu site estará offline.

Em vez disso, armazene seu PHP em algum local central - em qualquer lugar. Não importa onde. Então, quando você precisar enviar seus arquivos para um novo servidor, basta copiá-los para o novo servidor.

Você terá que garantir que seus usuários não atualizem o PHP diretamente nos servidores da web. Eles devem atualizá-los na localização central.

Por exemplo, digamos que você tenha web1 e web2 como seus servidores web, e seus arquivos PHP são mantidos em /home/foo/php e /home/bar/php . Atualmente, esse é seu local autoritativo e provavelmente precisa ser alterado. Configure algo como /var/code/foo/php e /var/code/bar/php e informe seus usuários para atualizarem lá. Quando eles fizerem uma atualização, execute um script que copie os arquivos para /home/foo/php e / home / bar / php 'em cada servidor web.

Parte da dificuldade que você está tendo agora, e continuará a ter, é que você está armazenando dados nos diretórios pessoais dos usuários.
Você deve considerar a mudança para um sistema de controle de versão adequado, como Mercurial, Git ou SVN. Armazene todos os dados no mesmo local e, em seguida, confira aqueles onde você quiser.

Um exemplo disso:
Use um servidor (vamos chamá-lo de dev1 ) e instale o SVN. Crie um novo projeto no SVN (vamos chamá-lo de php_project1 ). Peça aos usuários para verificar svn://dev1/php_project1/userN e editar e enviar os arquivos para o SVN.
Em seguida, nos servidores da Web, você pode fazer algo como:

cd /home/user1/php
svn checkout svn://dev1/php_project1/user1

E sempre que você precisar atualizar seus servidores da Web, basta executar svn update no diretório inicial.

Há muito mais para onde eu poderia ir. Bem-vindo ao gerenciamento de um farm da Web.

    
por 24.01.2011 / 01:09
0
  • 1ª camada - somente load-balancer
  • 2a camada - servidor web estático / de imagem / vídeo (nginx); servidor web comum (nginx + php-fpm); servidor de script (nginx + php-fpm ou cpp; execute script "pesado"); servidor de memcached
  • 3a camada - sharding servidor MySQL mestre-escravo

e monitoramento (Zabbix) e servidor de email. Pinba servidor de estatísticas / monitoramento em tempo real para PHP usando MySQL.

I'm thinking maybe a NFS that will hold all php code and the servers will just point to that.

má ideia, use o Sistema de Controle de Versão (git, svn, mercurial, ...) e o script de implantação

    
por 23.01.2011 / 18:58