segunda-feira, 20 de março de 2017

Você sabia que 8 Raspberry Pi's 3 já hospedaram o site da Fundação Raspberry Pi?


Qual a melhor forma de mostrar do que seu produto é capaz? Colocando-o à  prova.

Se tratando do uso do Raspberry Pi como servidor, a fundação utilizou primeiramente como teste o Raspberry Pi 2 e 3 Modelo B no dia do lançamento. O Raspberry Pi 2 geriu 3% do tráfego e o 3 ficou com 5% (lembrando que estamos falando aqui de um tráfego monstruoso, que em dia de lançamento se multiplica de forma surreal). Testes anteriores foram feitos para os Raspberry Pi's gerirem 25% do tráfego em dias normais, que foram um sucesso.


Na época utilizaram um cartão de memória de 8GB para o sistema operacional (Raspbian Lite) e um pen drive de 32GB para armazenar os dados do blog, sendo que até então a pasta /var/www continha 17GB. Foi instalado o PHP7 vindo do repositório do Debian. O banco de dados continuava sendo servido por uma das máquinas virtuais.

Infelizmente, após 12 horas e 1,5 milhões de requisições houve um kernel panic no Raspberry Pi 3. O balanceamento de carga tratou de redirecionar automaticamente as requisições para as máquinas virtuais. Segundo informações o problema não foi a placa, mas sim o fato do sistema começar a extrapolar o uso de memória RAM, usando continuamente a memória swap (que estava no cartão, corrompendo-o). Após o reboot tudo estava ok novamente.

Quanto ao desempenho, comparado as VMs atuais, era o seguinte:


ServerSpec Seconds per page
Blog VM (PHP 5.6) 24 x 2.4Ghz Ivy Bridge 0.4
Pi 2 (PHP 7) 4 x 0.9Ghz A7 0.9
Pi 3 (PHP 7) 4 x 1.2Ghz A? 0.7

Na época foram criadas duas contas de twitter onde apresentavam o status dos servidores: @hostingpi3 e @hostingpi2.

O upgrade



Posteriormente, houve uma conversa citada pela fundação parecida com essa (traduzida):

Eben(criador do Raspberry Pi): É possível hospedar todo o site com Raspberry Pi 3's?
Pete(que gerencia os servidores): Como você faria?
Philip(CEO atual da fundação): Não seria incrível fazer isso?
Liz(funcionária da fundação): Se atreva a experimentar!

Uma quantidade maior de placas ia ser necessária para dar conta de todo tráfego diário. Havia estimativa de 4 a 6 Raspberry Pi's 3. O banco de dados teria que ficar de fora, tanto pela falta de memória RAM como de I/O.

Semanas depois colocaram 8 placas para funcionar:


Um case foi projetado especificamente para isso e adicionaram expansões PoE (power over ethernet) para alimentá-los diretamente de um switch de 100Mbps. O armazenamento dos dados também foi feito via rede, com um pequeno servidor de armazenamento no mesmo rack dos Raspberry Pi's.

Na época ao requisitar os servidores, cada um vinha com uma identificação, sua lista era a seguinte:

Raspberry Pi a
Raspberry Pi e
Raspberry Pi 6
Raspberry Pi 12
Raspberry Pi 1a
Raspberry Pi 2
Raspberry Pi 16
Raspberry Pi 1e


É fato que para um site de grande tráfego como o da fundação, seria inviável a utilização de somente Raspberry Pi's para o serviço. Eles faziam o papel das requisições (o que em si já foi ótimo), mas como dito acima, o armazenamento dos dados e o banco de dados eram servidos por outras máquinas.

O experimento, durou alguns dias. Hoje já não é mais possível identificar as tags dos servidores, com retorno de somente duas VMs que processam as requisições:

X-Served-By: Blog VM 1
X-Served-By: Blog VM 2


Em circunstâncias favoráveis, o Raspberry Pi é ótimo como um servidor, por anos usei um Raspberry Pi Modelo B de 256MB RAM como servidor git/ssh/etc por aqui (hoje desativado por enquanto).

A placa também dá um ótimo servidor cache DNS, representado com testes de benchmark que fizemos no passado.

E você, utiliza seu Raspberry Pi como servidor? Deixe sua experiência comentários abaixo.

Fontes:
https://www.raspberrypi.org/blog/the-little-computer-that-could/
https://www.raspberrypi.org/blog/serving-raspberry-pi-3-launch-raspberry-pi-3/
http://blog.mythic-beasts.com/2016/02/29/hosting-the-raspberry-pi-3-launch-on-a-raspberry-pi-3/

2 comentários:

  1. Muito bacana. Não utilizo o Raspberry Pi como servidor, mas sim como central de controle de um DJI F550. E FPV utilizando a piCamera.

    ResponderExcluir
  2. Eu hoje utilizo uma cubietruck como servidor de midia com o plex, servidor DNS. um sistema em python para atormentar a NET quando existe perda de performance ou queda, os torrents e um gerenciador para a casa onde desligo e ligo algumas coisas.

    ResponderExcluir