Alle Artikel
Getting Started
Was ist CICDoo Erste Schritte: der Onboarding-Assistent Das Dashboard und die InfrastrukturkarteConcepts
Produktions-, Staging- und Development-Stages Domains, Subdomains und SSL Odoo-Versionen und -Editionen (Community vs. Enterprise) Workspaces und TeamzusammenarbeitServers
Einen Server hinzufügen Server-Domains und DNS Einen Load Balancer verwenden Server-Aktionen: Deploy, Logs und DiagrammeProjects & Git
Ein Projekt erstellen GitHub verbinden GitLab verbinden Branches und Instanzen Projekte mit Tags versehen und filtern Hochverfügbarkeit mit App-KnotenInstances & Console
Eine Instanz erstellen Eine Instanz neu starten, stoppen und entfernen Branches zwischen Stages mergen Web-IDE und Fernzugriff Instanzeinstellungen erklärt Deployments und die Job-WarteschlangeAgent Tasks
Was Agent-Aufgaben sind Agent-Aufgaben einrichten Eine Aufgabe ausführen und das Ergebnis prüfen Agent-Zeit und AufstockungenMonitoring & Backups
Deine Instanz überwachen Backups und Wiederherstellung Warnbenachrichtigungen (E-Mail und SMS)Workspaces & Permissions
Workspace-Mitglieder einladen Mitgliederberechtigungen und Ressourcenzugriff Ein Mitglied kann eine Ressource nicht sehen oder nutzenAccount & Security
Zwei-Faktor-Authentifizierung (2FA) Profil- und Integrationseinstellungen Passwörter und KontowiederherstellungBilling & Plans
Tarife und Preise Dein Abonnement upgraden und verwalten Wenn ein Projekt-Abonnement unbezahlt bleibt Das Channel-Partner-ProgrammSupport & Tickets
Ein Support-Ticket eröffnen Hilfe vom CICDoo-Team erhaltenTroubleshooting
Fehlerbehebung: Server kann nicht verbunden werden Fehlerbehebung: ein Deployment ist fehlgeschlagen Fehlerbehebung: git push schlägt mit 403 fehl nach Verschieben eines Repositorys Fehlerbehebung: meine Instanz ist ausgefallen oder langsam Fehlerbehebung: Domain- oder SSL-ProblemeProjekte & Git
Hochverfügbarkeit mit App-Knoten
Wie du eine Odoo-Produktionsdatenbank auf mehreren Servern betreibst, mit einem Primärprojekt, das die Datenbank ausführt, und App-Knoten, die sie bedienen.
Wie es funktioniert
Mit Hochverfügbarkeit läuft die Produktion einer Odoo-Datenbank auf mehreren Servern gleichzeitig. Wenn ein Server nicht mehr antwortet, werden Besucher zu den anderen geleitet.
Ein Cluster besteht aus Projekten, die denselben Code ausführen:
- Das Primärprojekt: ein Projekt, dessen Produktionsinstanz Odoo und die Datenbank ausführt. Seine Datenbank ist für die App-Knoten geöffnet und für niemanden sonst.
- App-Knoten: weitere Projekte, jedes auf einem anderen Produktionsserver, deren Produktionsinstanz nur Odoo ausführt und die Datenbank des Primärprojekts nutzt.
Besucher verwenden die Adresse des Primärprojekts. CICDoo richtet diese Adresse auf das Primärprojekt und auf jeden antwortenden App-Knoten aus und prüft jeden Knoten alle paar Minuten. Ein Knoten, der nicht mehr antwortet, wird aus der Adresse genommen, bis er sich erholt.
Die Datenbank selbst läuft weiterhin auf einem Server, dem des Primärprojekts. App-Knoten machen die Odoo-Seite redundant; fällt der Server des Primärprojekts aus, fällt die Seite mit ihm aus.
Bevor du beginnst
- Gleicher Code: jedes Projekt in einem Cluster muss dasselbe Repository, denselben Standard-Branch, dieselbe Odoo-Version und Edition verwenden. Wenn Time Machine aktiv ist, müssen auch die fixierten Commits übereinstimmen.
- Verschiedene Server: jeder App-Knoten braucht einen eigenen Produktionsserver, der sich von dem des Primärprojekts und denen der anderen Knoten unterscheidet.
- Cloudflare-Proxy: die Verteilung des Traffics auf die Knoten funktioniert derzeit für Server, bei denen der Cloudflare-Proxy aktiviert ist. Nutze Server in derselben Region, denn jede Seite, die ein App-Knoten ausliefert, spricht mit der Datenbank des Primärprojekts.
- Gemeinsamer Filestore: jeder Server im Cluster muss denselben gemeinsamen Speicher für den Odoo-Filestore einbinden. Ohne ihn fehlt ein über einen Knoten hochgeladener Anhang auf den anderen, und ein Besucher, der auf einem anderen Knoten landet, wird abgemeldet. Wende dich an den Support, wenn du Hilfe bei der Einrichtung brauchst.
- Datenbankverbindungen: jeder App-Knoten öffnet eigene Verbindungen zur Datenbank des Primärprojekts. Wenn du Knoten hinzufügst, erhöhe max_connections in der PostgreSQL-Konfiguration der Produktionsinstanz des Primärprojekts, im Tab Einstellungen ihrer Konsole.
Die Einstellungen für Hochverfügbarkeit findest du in den Projekteinstellungen, im Tab Erweitert, in der Karte Hochverfügbarkeit. Du brauchst die Berechtigung, die Einstellungen des Projekts zu ändern.
Das Primärprojekt einrichten
Öffne das Projekt, das die Datenbank ausführen soll, gehe zu Projekteinstellungen > Erweitert und setze in Hochverfügbarkeit die Rolle auf Primär (App + Datenbank). Klicke auf Anwenden und bestätige.
Die Produktionsinstanz startet neu. Danach nimmt ihre Datenbank Verbindungen von den App-Knoten des Clusters an. Verbindungen zwischen Servern sind verschlüsselt, sofern deine Server kein privates Netzwerk teilen.
Die Produktionsinstanz muss ihre eigene mitgelieferte Datenbank verwenden. Ein Projekt, dessen Produktionsinstanz auf eine externe Datenbank zeigt, kann kein Primärprojekt sein.
Einen App-Knoten hinzufügen
Erstelle ein Projekt für den Knoten wie gewohnt: dasselbe Repository und derselbe Standard-Branch, dieselbe Version und Edition und ein eigener Produktionsserver. Entferne alle Staging- und Entwicklungsinstanzen, die es hat: ein App-Knoten führt nur die Produktion aus, und Staging- und Entwicklungs-Branches liegen im Primärprojekt.
Öffne dann die Projekteinstellungen > Erweitert des Knotens, setze die Rolle auf App-Knoten (nutzt die Datenbank eines Primärprojekts), wähle das Primärprojekt unter Datenbankquelle aus, klicke auf Anwenden und bestätige. Angeboten werden nur Primärprojekte im selben Workspace, die denselben Code ausführen.
Der Knoten startet nicht sofort. Der Server des Primärprojekts muss ihn zuerst zulassen, was bei seiner nächsten Prüfung geschieht, meist innerhalb von fünf Minuten. Bis dahin zeigt die Karte "Warten, bis das Primärprojekt diesen Knoten zulässt", und der Knoten startet von selbst, sobald er zugelassen ist. Einige Minuten nachdem er antwortet, erhält er Besucher.
Im Primärprojekt listet die Karte Hochverfügbarkeit seine App-Knoten auf und zeigt, ob der Datenbankserver die aktuelle Zugriffsliste angewendet hat.
Was sich auf einem App-Knoten ändert
- Seine Produktionsinstanz hat keine eigene Datenbank. Ihre Datenbankeinstellungen werden von CICDoo verwaltet und können in der Odoo-Konfiguration der Instanz nicht geändert werden.
- Geplante Aufgaben (Odoo-Crons) laufen nur auf dem Primärprojekt.
- Backups werden auf dem Primärprojekt erstellt. Sichere und stelle die Datenbank des Clusters über das Primärprojekt wieder her.
- Ein Push auf den Branch eines App-Knotens bewirkt für sich allein nichts. Der Cluster wird über das Primärprojekt aktualisiert.
Updates deployen
Pushe wie gewohnt auf den Branch des Primärprojekts. CICDoo aktualisiert dann den gesamten Cluster der Reihe nach:
- Jeder App-Knoten wird gestoppt.
- Das Primärprojekt wird aktualisiert, einschließlich etwaiger Modul-Upgrades, während kein anderer Server die Datenbank nutzt.
- Jeder App-Knoten wird mit dem neuen Code wieder gestartet.
Du kannst jeden Schritt im Tab Warteschlange der Instanz verfolgen, auf der er läuft. Schlägt das Update des Primärprojekts fehl, werden die App-Knoten nicht wieder gestartet, und ihre Einträge in der Warteschlange nennen den Grund. Behebe das Problem und deploye erneut.
Da Modul-Upgrades die Datenbank für sich allein brauchen, ist die Seite während des Updates des Primärprojekts nicht erreichbar, so wie bei einer einzelnen Instanz.
Einen Cluster verlassen
Um einen App-Knoten zu entfernen, setze seine Rolle zurück auf Eigenständig (eigene Datenbank) und klicke auf Anwenden. Seine Produktionsinstanz stoppt, weil seine eigene Datenbank die Daten des Clusters nicht enthält. Stelle ein Backup darin wieder her, bevor du sie wieder startest.
Ein Primärprojekt kann nicht geändert werden, solange es noch App-Knoten hat. Entferne zuerst die Knoten.
Fehlerbehebung
- Der Knoten wartet weiterhin auf die Zulassung: prüfe, ob die Produktionsinstanz des Primärprojekts läuft und ihr Server online ist. Das Primärprojekt muss nach dem Wechsel zur Rolle Primär einmal neu starten, bevor ein Knoten zugelassen wird.
- Der Knoten startet, aber Odoo kommt nicht hoch: öffne die Logs des Knotens. Eine Meldung, dass die Datenbank des Primärprojekts nicht initialisiert ist, bedeutet, dass das Primärprojekt seinen ersten Start noch nicht abgeschlossen hat.
- Uploads oder Anmeldungen folgen Besuchern nicht zwischen den Knoten: die Server teilen sich den Filestore nicht. Siehe "Bevor du beginnst" weiter oben.
Wie Instanzen Branches zugeordnet sind, steht unter Branches und Instanzen, und die Load-Balancer-Einstellung auf Serverebene, die eine andere Funktion ist, unter Einen Load Balancer verwenden.
Kommst du nicht weiter? Erstelle ein Ticket in der App oder sprich mit einem Techniker.