Remover dependência do disco rígido compartilhado único no Amazon Server

0

Eu tenho um aplicativo php que é executado em vários servidores de aplicativos por trás de um balanceador de carga.

Vamos supor que esse aplicativo seja usado para enviar e-mails em massa. Abaixo está o processo dado:

  1. O usuário acessa uma API para enviar e-mails para milhares de usuários

  2. O aplicativo PHP divide esses milhares de endereços de e-mail em um grupo de 5-5k e-mails e os armazena como php-array em arquivos .php.

  3. E então esses arquivos são processados um por um em diferentes processos. (Para processar esses arquivos, as APIs internas são atingidas com o próximo nome de arquivo a ser processado e podem ser processadas por qualquer servidor)

Esses arquivos são armazenados em uma pasta, digamos email_csv  junto com os arquivos de código em public_html . Como cada servidor de aplicativos precisa de acesso a esses arquivos .php, é por isso que tenho um único disco rígido montado em um dos servidores e, em seguida, montado em cada um dos servidores como servidor NFS (não tenho muita certeza sobre o termo técnico)

Aqui está a saída de mount para esse disco rígido:

10.0.0.74:/home/kadamb/public_html on /home/kadamb/public_html type nfs4 (rw,relatime,vers=4.0,rsize=1048576,wsize=1048576,namlen=255,acregmin=2,hard,proto=tcp,port=0,timeo=5,retrans=2,sec=sys,clientaddr=10.0.0.27,local_lock=none,addr=10.0.0.74)

Agora, o problema é que esse disco rígido específico é um dos meus pontos únicos de falha. Eu preciso remover essa dependência e ter todos os servidores seu próprio disco rígido com toda a base de código. Mas eu não sou capaz de fazer isso, por causa do requisito de pasta compartilhada.

Existem duas opções em que pensei:

  1. Use o S3 para armazenar esses arquivos, mas procurei e descobri que há a latência de 200 a 300 ms ao buscar um arquivo do S3. Outro está montando o S3 em cada servidor localmente, em vez de chamar API, mas não tenho certeza se o problema de latência será resolvido com este ou não.

  2. Usando um disco rígido separado para esses arquivos e montando e compartilhando esse disco em cada servidor. (e ter um disco rígido separado com o código em cada servidor)

Eu só consigo pensar nesses dois.

Existe alguma outra (melhor) opção para implementar isso? Ou devo escolher entre qualquer uma das opções acima?

Obrigado

Mais alguns detalhes:

  1. Atualmente, o disco rígido é compartilhado entre 22 servidores de aplicativos.

  2. Os servidores são hospedados na AWS e o SO é Amazon Linux.

  3. Cerca de um milhão de arquivos são criados todos os dias e excluídos depois de processados.

por kadamb 25.06.2018 / 10:22

0 respostas