Wie verteilt man dauerhafte Verbindungen über einen Elixir / Phoenix-Cluster?

8

Diese Frage nervt mich, und ich brauche diese Art von Skala eigentlich nicht, ich bin nur neugierig. Kürzlich hat Chris Mccord 2 Millionen dauerhafte Verbindungen in einer einzigen Box mit Elixir / Phoenix erhalten . Wenn ich 3 Boxen in einem Cluster habe, die jeweils 2 Millionen persistente Verbindungen handhaben:

  1. Bedeutet das, dass der Load Balancer 6 Millionen persistente Verbindungen behalten muss, oder ist es möglich, die Verbindung zum Backend-Server nur weiterzuleiten und die Verbindung auf dem Load Balancer zu schließen?
  2. Muss ich die Verbindungen mithilfe einiger Logik im Client verteilen und einen einzelnen Einstiegspunkt vermeiden? Etwas wie box1.foo.com , box2.foo.com , box3.foo.com und dem Client mitteilen, sich mit einem von ihnen zu verbinden?

Ich weiß, dass die Antwort anwendungsspezifisch sein kann, aber können Sie bitte einige Beispiele dafür geben, wie Sie diese Art von Skalierung erreichen können? Auch dies ist nur eine Gedankenübung, ich konnte die Antwort nirgends finden und ich bin an horizontaler Skalierung interessiert.

Danke.

    
Esdras Mayrink 04.09.2016, 01:12
quelle

1 Antwort

5

Sie sollten mehrere Load Balancer verwenden (oder den Load Balancer vollständig überspringen) und Round-Robin-DNS (oder gewichtete DNS) verwenden, um Anforderungen über sie zu verteilen. So funktionieren das Routing-Mesh von heroku und die elastischen Load-Balancer von aws. Sie könnten auch Geld für etwas wie einen f5 Load Balancer ausgeben

    
ArgumentError 04.09.2016, 02:28
quelle