Ich habe derzeit einen VPS bei HostingRails.com und bin ziemlich enttäuscht von dem Service, daher habe ich überlegt, stattdessen zu Linode zu wechseln. Ich habe drei Rails-Anwendungen (meine Live-Anwendung, die QA-Version der Live-Anwendung und eineRedmine) läuft auf Passenger auf Apache, eine phpbb-Installation und eine MySQL-Datenbank, die derzeit auf meinem VPS läuft und insgesamt derzeit etwa 400 MB RAM beansprucht.
Ich versuche herauszufinden, ob es besser wäre, einen 720-MB-Knoten zu bekommen und einfach alles darauf zu speichern, oder zwei 360-MB-Knoten zu bekommen und die Live-Site auf einem und die QA-Site und Redmine auf dem anderen zu haben (würden Sie in diesem Fall zwei separate Datenbanken vorschlagen, eine für jeden Knoten)? Mir wurde vorgeschlagen, dass es eine gute Idee wäre, meine Anwendungen aufzuteilen, aber ich weiß nicht, ob das stimmt; ich schätze, wenn ich einen Knoten habe und die Live-Anwendung mehr Speicher benötigt, kann sie die 360 MB beanspruchen, die wahrscheinlich nicht vollständig von meiner QA-Installation und Redmine genutzt würden.
Außerdem habe ich mein SVN (1 aktives Projekt, ein paar inaktive, zwei Benutzer) derzeit auf Dreamhost gehostet, weil ich im Voraus für einen Plan bezahlt hatte und mein SVN dort gelassen habe, anstatt es auf meinen VPS zu verschieben. Würde das Verschieben des SVN zu Linode Ihre Antwort beeinflussen?
Antwort1
Mit zwei Knoten erhalten Sie zwar die gleiche Speichermenge, aber auch doppelt so viel CPU-Zeit und IO-Token.
SVN könnte in derselben Apache-Instanz wie Passenger ausgeführt werden, ohne dass die Leistung zu sehr beeinträchtigt wird.
Sie möchten vielleicht auch ein anderes Setup in Betracht ziehen: einen Datenbankknoten und einen Webserverknoten. Keiner von beiden würde unterausgelastet sein (schließlich ist Apache ziemlich schwer), und wenn sie sich im selben Rechenzentrum befänden, könnten Sie beide öffentlichen IPs auf den Webserverknoten richten (Linode erlaubt dies) und ihn über das LAN von Linode mit dem Datenbankknoten kommunizieren lassen (wodurch Übertragungskontingente vermieden werden).
Antwort2
Aus Erfahrungen mit der Bereitstellung von Managed Hosting für einige Rails-basierte Unternehmen hat es sich immer als erfolgreich erwiesen, Datenbank und App zu trennen (wie fahadsadah betont).
Ich würde jedoch nicht Apache ausführenUndnginx auf derselben Maschine, insbesondere in einer VPS-Umgebung mit begrenzten Ressourcen. Wie bereits erwähnt, ist Apache selbst ziemlich schwer, kann aber alle Ihre Passenger-, SVN- und PHP-Anforderungen erfüllen. Daher würde ich nginx nicht in den Mix aufnehmen. Schließlich ist es ein weiteres Stück Software, das gewartet (konfiguriert, aktualisiert/gepatcht usw.) werden muss.
Außerdem neige ich persönlich dazu,nichtmeinen Quellcode im selben Setup hosten, auf dem meine App läuft. Ich bin ziemlich zuversichtlich, was die Robustheit und Sicherheit unseres Codes angeht, aber wenn es jemandem jemals gelingt, einen Weg durch die App und auf den Server zu finden, hätte er auch vollen Zugriff auf unseren Quellcode. Und Ihre DatenUndIhre Coderevisionen sind wahrscheinlich das Letzte, was ein Cracker in die Hände bekommen soll ...
Ich weiß, dass es eine unverschämte Werbung ist, aber mein Unternehmen bietet gebündeltes Redmine & SVN-Hosting unter der MarkePlanio. Es sollte auch andere Dienste wie Planio geben, sodass Sie eine Auswahl treffen können. Mein wichtigster Ratschlag ist: Versuchen Sie, das Hosting unterstützender Systeme an vertrauenswürdige externe Parteien zu delegieren und konzentrieren Sie Ihre Hosting-Bemühungen auf Ihr Kerngeschäft (also Ihre App).