Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Estratégias para sincronizar arquivos especiais nas VPS que hospedam os nós do cluster (e.g. NAS) via software #17

Open
fititnt opened this issue Jun 23, 2019 · 1 comment
Milestone

Comments

@fititnt
Copy link
Member

fititnt commented Jun 23, 2019

Veja também

Afeta (neste momento):


Independente de como dentro da rede de docker/tsuru seja gerenciado dados em cluster, se for para deixar a Águia Pescadora com idealmente manutenção relativamente mínima, tem casos muito específicos em que arquivos precisam ser compartilhados entre as VPSs.

Um exemplo mais imediato é (pelo menos sem ajustes finos) como é feito em tempo real desafio para descobrir se quem pediu um certificado para o Let's Encrypt realmente deveria receber ele.

Vamos dizer que por padrão é aconselhado para os usuários apontarem domínios customizados para um CNAME que este usa Delta, Echo e a Foxtrot. A máquina que receber a primeira visita via o #16 vai solicitar ao Let's encrypt que lhe dê a chave. Porém o Let's encrypt vai tentar descobrir se ela merece isso, só que poderá escolher qualquer um dos 3 servidores ativos para perguntar. E isso implica em ter 33% de acertar. E rodar logo em seguinda não quer dizer que vai conseguir, porque o Let's Encrypt pode ter cacheado a errada.

Uma das formas de fazer isso (sem desligar 2 balanceadores de carga apenas pra obter uma TLS nova) seria garantir que o desafio escrito no disco em um servidor possa ser acessado ao mesmo tempo (uns 200ms, talvez?) nos demais. Isso seria suficiente para pelo menos um dos servidores receber a chave privada dele.

Esse arquivo de desafio acaba sendo um dos mais criticos. A chave privada da SSL (que é lida o tempo todo pelo provedor de HTTPS) até pode ser sincronizada com os demais depois de segundos (ou mesmo deixar uma rotina de 5 minutos) fazendo isso.

Uma das soluções: o GlusterFS

Eu já tenho experiência com GlusterFS, mas esse é um dos casos em que se houver alternativa melhor, eu usaria. Eu não tenho como culpar o software por algo que é um problema do desafio em si, mas eu abri esse issue aqui porque talvez isso seja um dos pontos mais problemáticos.

Ok que nesse caso aqui, os servidores da Águia Pescadora são muito mais poderosos do que os que tenho em cliente em produção em alta disponibilidade na amazon são paulo, mas de toda uma pilha de software em cliente o glusterfs é uma das que menos já consegui otimizar.

Pensem que o fato de ter sincronia em tempo real (aka se escrever em um servidor, o outro ao ler tem como saber que leu um arquivo que todo mundo está lendo) implica em deligar várias super otimizações de cache de kernel de linux. E isso pode afetar performance de forma absurda. É triste.

@fititnt
Copy link
Member Author

fititnt commented Jul 15, 2019

Troquei de 2.0-alpha para 3.0-alpha.

Talvez este ponto de questão acabe sendo resolvido mais fácil com uso de kubernetes e k3s e para as implementações usando docker puro que ainda estiverem sendo usadas (como nosso foco é algo amigável e idealmente resiliente para não especialistas) a gente nem mesmo dê opção para quem for usar e alertar que valeria a pena pagar um pouco mais e ter VPSs que suportem pelo menos um nó tudo-em-um em kubernetes.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant