Estratégias para tolerância a falhas em sistemas de larga escala
Author:
Anders, João Pedro de Oliveira
Abstract:
Serviços stateful, como bancos chave-valor, caches, serviços de coordenação e de metadados, são hoje peças de sustentação da infraestrutura em nuvem, mas recebem tolerância a falhas de modo ad hoc. A técnica clássica para o problema, a Replicação Máquina de Estados, é consolidada, porém invasiva, esta exige que a aplicação seja reescrita acoplada à uma biblioteca de consenso, o que a torna inaplicável a um binário já consolidado. Este trabalho apresenta um proxy de Replicação Máquina de Estados transparente e com genericidade quanto ao protocolo de aplicação, que torna uma aplicação não modificada tolerante a falhas por parada. Um interceptador diante dos clientes ordena totalmente as requisições por um anel de consenso URingPaxos, e um sidecar-learner ao lado de cada réplica as reaplica contra a instância local do binário; as respostas voltam fora de banda, em datagramas, com deduplicação. Tudo o que é específico de um protocolo de aplicação fica confinado atrás de uma única interface de delimitação de frames. O sistema está implantado em Kubernetes, constituído de N réplicas de uma aplicação-alvo não modificada, um anel de consenso, uma borda de entrada com terminação TLS, e opera de ponta a ponta. Foi construída também a instrumentação necessária à sua avaliação, sendo que o processo de avaliação experimental sobre essa instrumentação está especificada e constitui o próximo passo deste trabalho.