Renderingfarm auf der GCP mit OpenCue erstellen

Robotertanzparty

In dieser Anleitung wird gezeigt, wie Sie das Rendering-Managementsystem von OpenCue auf virtuellen Linux-Maschinen (VMs) über Google Cloud bereitstellen. Sie benötigen für die gesamte Anleitung etwa drei bis vier Stunden Zeit.

Renderingmanagementtools werden für die Produktion von visuellen Effekten und Animationen eingesetzt. Mit ihnen lassen sich komplexe Jobs in einzelne Aufgaben unterteilen und die zugehörigen Prozesse auf eine breite Palette von Rechenressourcen verteilen. Mit diesen Tools können Sie Jobs verwalten, z. B. 3D-Rendering, 2D-Compositing, Transcodierung von Daten von einem Format in ein anderes sowie das Ein- und Auschecken von Assets in Datenbanken. Die Tools werden häufig auch zur Verknüpfung von Jobphasen und Abhängigkeiten verwendet. In größeren Einrichtungen kann ein Rendering-Managementsystem Tausende von gleichzeitig ausgeführten Jobs unterstützen. Es bietet eine Oberfläche für die Zuordnung von Ressourcen zu den einzelnen Phasen eines Jobs, zur Verwaltung von Logs, für Tools zur Fehlerbehebung und zur Verwaltung von Ressourcen.

Google hat das Tool OpenCue in Zusammenarbeit mit Sony Pictures Imageworks entwickelt. Es ist ein in der Produktion bewährtes Open-Source-Rendering-Managementsystem, das unter Linux und Mac OS ausgeführt werden kann. OpenCue wurde zum Erstellen lokaler Renderingfarmen und für hybride Bereitstellungen in sehr großem Umfang verwendet, wobei auch Ressourcen mehrerer Cloudanbieter genutzt werden können.

Diese Anleitung ist für IT-Administratoren und technische Leiter der Pipeline gedacht, die mit den im Folgenden aufgeführten Tools und Konzepten vertraut sind. Sie müssen aber kein Experte auf allen hier aufgeführten Gebieten sein. Falls erforderlich, weisen wir auf weiterführende Ressourcen hin.

  • Funktionsprinzip des verteilten Renderingmanagements
  • Git und GitHub
  • Docker zum Erstellen und Ausführen von Containern
  • Bash-Skripterstellung zum Bearbeiten von Skripts und zum Ausführen von Ressourcen
  • Python-Konfiguration und -Skriptbearbeitung
  • Grundlegende Tools und Konzepte für das Google Cloud-Ressourcenmanagement, einschließlich Cloud SQL, Compute Engine, Cloud Storage und Container Registry

Da Renderingmanagementtools für verschiedene Anwendungsfälle geeignet sind und eine Vielzahl von Ressourcen orchestrieren, gibt es zahlreiche Möglichkeiten zur Konfiguration einer Renderingfarm. Damit Sie aber so schnell wie möglich mit der Arbeit beginnen können, behandelt diese Anleitung nur eine von mehreren denkbaren Konfigurationen von OpenCue. Darüber hinaus benötigen Sie für die optimale Architektur Ihrer Renderingfarm möglicherweise Änderungen bei den Schritten, ein Profiling der Leistung Ihres Workflows oder andere Google Cloud-Ressourcentypen. Weitere Informationen zu Optionen für die Einrichtung und Verwaltung einer Renderingfarm in Google Cloud finden Sie unter Hybride Renderingfarm erstellen. Außerdem erhalten Sie Informationen zum Schutz Ihrer Daten unter Renderingarbeitslasten sichern.

Lernziele

  • OpenCue-Module mit Docker und Python installieren und konfigurieren
  • OpenCue-Datenbank erstellen und darin Schema- sowie Beispieldaten einfügen
  • Cloud Storage-Ressourcen erstellen und darin Animationsszenendateien für diese Anleitung einfügen
  • Docker-Images lokal konfigurieren und erstellen, im Container Registry-Repository speichern und die Compute Engine-Ressourcen mit Containern starten
  • Instanzvorlagen und verwaltete Instanzgruppen für eine effiziente Skalierung der Rechenressourcen erstellen
  • Workstation für die lokale Ausführung der OpenCue-Benutzeroberfläche konfigurieren
  • Animationssequenz rendern und die Jobverwaltung mit der OpenCue-Benutzeroberfläche entdecken

Kosten

Mit dem Preisrechner können Sie eine Kostenschätzung für die geplante Nutzung vornehmen.

In dieser Anleitung wird im Detail jeder Schritt zum Erstellen einer funktionsfähigen Renderingfarm erläutert. Dabei sind die Anzahl und die Größe der Maschinen stark eingeschränkt. Damit wir in dieser Anleitung den preislichen Rahmen der kostenlosen Stufe von Google Cloud nicht überschreiten, rendern wir im Folgenden eine Animation mit geringer Auflösung und niedrigen Abtastraten auf nur wenigen VMs mit zwei vCPUs.

Die Kosten für die Nutzung der Ressourcen dieser Anleitung betragen bei einer Nutzungszeit von insgesamt vier Stunden 3,27 $.

Vorbereitung

  1. Melden Sie sich bei Ihrem Google Cloud-Konto an. Wenn Sie mit Google Cloud noch nicht vertraut sind, erstellen Sie ein Konto, um die Leistungsfähigkeit unserer Produkte in der Praxis sehen und bewerten zu können. Neukunden erhalten außerdem ein Guthaben von 300 $, um Arbeitslasten auszuführen, zu testen und bereitzustellen.
  2. Wählen Sie in der Google Cloud Console auf der Seite der Projektauswahl ein Google Cloud-Projekt aus oder erstellen Sie eines.

    Zur Projektauswahl

  3. Die Abrechnung für das Cloud-Projekt muss aktiviert sein. So prüfen Sie, ob die Abrechnung für Ihr Projekt aktiviert ist.

  4. Container Registry and Compute Engine APIs aktivieren.

    Aktivieren Sie die APIs

  5. Wählen Sie in der Google Cloud Console auf der Seite der Projektauswahl ein Google Cloud-Projekt aus oder erstellen Sie eines.

    Zur Projektauswahl

  6. Die Abrechnung für das Cloud-Projekt muss aktiviert sein. So prüfen Sie, ob die Abrechnung für Ihr Projekt aktiviert ist.

  7. Container Registry and Compute Engine APIs aktivieren.

    Aktivieren Sie die APIs

  8. Achten Sie darauf, dass auf Ihrem lokalen Computer Folgendes installiert ist:
    • Docker Diese Anleitung wurde mit Docker Engine Version 18.09.0 getestet.
    • Python Diese Anleitung wurde mit der Version 2.7.10 getestet.
    • Pip Diese Anleitung wurde mit der Version 19.0 getestet.
    • Virtualenv Diese Anleitung wurde mit der Version 16.2.0 getestet.
    • gcsfuse Diese Anleitung wurde mit der Version 0.23.0 getestet.
    • Das neueste Cloud SDK Für diese Anleitung müssen Sie zur Verwendung der gcloud- und gsutil-Befehlszeilentools das Cloud SDK installieren. Sie führen die gcloud- und gsutil-Tools in einem Terminal auf Ihrer lokalen Workstation aus.

Überblick über OpenCue

Die Benutzeroberfläche von OpenCue basiert auf verschiedenen Modulen und Befehlen sowie auf speziellen Konzepten und Begriffen. Die im Folgenden aufgeführten Tools und Techniken werden zur Bereitstellung einer einfachen, hybriden Renderingfarm verwendet. Informationen zu weiterführenden Themen und verschiedenen Bereitstellungsoptionen finden Sie in der Dokumentation zu OpenCue (nur auf Englisch verfügbar).

  • Cuebot: Das Zeitplanungstool von OpenCue. Cuebot übernimmt die Jobverteilung, verwaltet die Renderingressourcen und steuert die Kommunikation mit der Datenbank. Auf Cuebot kann mit Python und Bash über die Befehlszeile zugegriffen werden. Außerdem ist eine grafische Oberfläche, die weiter unten erläutert wird, als eigenes Modul verfügbar. In diesem Beispiel führen Sie Cuebot auf einer Google Cloud-VM aus. Sie können Cuebot für lokale Bereitstellungen auch lokal ausführen. Bei größeren oder hybriden Bereitstellungen haben Sie die Möglichkeit, mehrere Cuebot-Instanzen für eine Hochverfügbarkeit zu verwenden.
  • Datenbank: Um den Anwendungsstatus speichern zu können, interagiert Cuebot mit einem PostgreSQL-Datenbankserver. Auch bei einer Bereitstellung mit mehreren Cuebots nutzen die Instanzen nur eine einzige Datenbank gemeinsam. Zur Vereinfachung der Bereitstellung wird für diese Anleitung eine Cloud SQL-Instanz verwendet.
  • CueGUI: Die grafische Benutzeroberfläche für die Interaktion mit Cuebot. CueGUI wird zur Überwachung und Verwaltung der Einstellungen für Jobs und Renderinghosts verwendet. In dieser Anleitung führen Sie Cuebot in der Cloud und CueGUI auf Ihrem lokalen Computer aus.
  • Renderinghosts: Einzelne Renderingressourcen, die zur Verarbeitung einzelner Aufgaben verwendet werden. Dabei kann es sich um lokale Hosts, um Cloud-Hosts oder um eine Kombination aus beiden handeln. In dieser Anleitung verwenden Sie eine verwaltete Instanzgruppe von VMs in Google Cloud als Renderinghosts.
  • RQD: Render Queue Daemon, der auf einzelnen Renderinghosts ausgeführt wird und mit Cuebot interagiert, um Anweisungen über auszuführende Befehle zu senden und zu empfangen.
  • CueSubmit: GUI zum Konfigurieren und Starten von Jobs. Sie können dieses Python-Programm als eigenständige grafische Benutzeroberfläche oder als Plug-in in der Software von Drittanbietern ausführen. Zu OpenCue gehören ein Maya-Plug-in (getestet mit Version 2017 und höher) und Nuke (getestet mit Version 11). Das OpenCue-Repository beinhaltet Code, den Sie ändern können, um eigene Plug-ins für andere Tools von Drittanbietern zu erstellen oder Ihre Pipeline anzupassen.
  • PyCue: Eine Sammlung von Python-Bibliotheken, die zur Interaktion mit Cuebot verwendet werden. Sie können mit diesen Bibliotheken weitere Tools erstellen oder mit Cuebot über die Befehlszeile und nicht über eine GUI kommunizieren.
  • PyOutline: Python-Bibliothek zum Erstellen von OpenCue-Jobübermittlungen. Mit PyOutline können Sie eine Jobspezifikation erstellen und Abhängigkeiten definieren. In dieser Anleitung arbeiten Sie nicht direkt mit diesem Modul, da es von CueSubmit im Hintergrund ausgeführt wird.
  • CueAdmin: Ein Befehlszeilentool, das die PyCue Python API zur Verwaltung von OpenCue verwendet.

Programmarchitektur von OpenCue

Das folgende Architekturdiagramm stellt die Verbindung und Kommunikation der OpenCue-Module untereinander dar.

OpenCue-Architekturdiagramm

In dieser Anleitung verwendete Google Cloud-Ressourcen

Das folgende Architekturdiagramm veranschaulicht die Google Cloud-Ressourcen, die für diese Anleitung erforderlich sind.

Google Cloud-Ressourcen, die für dieses Anleitung erforderlich sind

OpenCue-Repository herunterladen

Das offizielle Repository für OpenCue wird auf GitHub gehostet.

  • Wechseln Sie zum Arbeitsbereich und zum Verzeichnis für diese Anleitung und laden Sie das OpenCue-Repository herunter:

    cd ~/
    git clone --branch 0.3.6 https://github.com/AcademySoftwareFoundation/OpenCue
    

Cloud Storage-Bucket erstellen und darin Beispieldateien speichern

In dieser Anleitung werden alle Animationsszenendateien und andere Abhängigkeiten für Eingabedateien sowie die endgültigen gerenderten Ausgabedateien und Logdateien des Renderinghosts in einem Cloud Storage-Bucket gespeichert.

In einem späteren Schritt installieren und verwenden Sie Cloud Storage FUSE (gcsfuse). Dieses Tool ist ein Open-Source-FUSE-Adapter, mit dem Sie Cloud Storage-Buckets als Dateisysteme auf Ihren Linux-Renderinghosts und auf Ihrem lokalen Computer bereitstellen können. gcsfuse bietet eine kostengünstige und effektive Speicheroption für diesen Workflow. Sie können aber die Leistung einiger Jobs noch erheblich verbessern, wenn Sie für einzelne Jobs das Speicherprofil verwenden, das für deren spezifische Anforderungen optimiert ist. Google Cloud bietet eine Vielzahl von Speicheroptionen. Im Rahmen dieses Dokuments ist es allerdings nicht möglich, die Vor- und Nachteile dieser Optionen für den einzelnen Workflow darzustellen. Weitere Informationen zu Speicheroptionen finden Sie unter Hybride Renderingfarm erstellen. Wenn Sie eine Speicheroption an Ihre Anforderungen anpassen möchten, hilft Ihnen ein Google Cloud-Ansprechpartner gerne weiter.

Cloud Storage-Bucket erstellen

Bevor Sie einen Bucket erstellen, müssen Sie prüfen, ob Sie sich im richtigen Projekt befinden:

  • Erstellen Sie einen Cloud-Storage-Bucket [YOUR_BUCKET_NAME] zum Speichern der Beispieldaten für diese Anleitung.

    gcloud config set project [YOUR_PROJECT_ID]
        gsutil mb -l us-central1 gs://[YOUR_BUCKET_NAME]
    

    Der Befehl gsutil erstellt hier Ressourcen in der Region us-central1.

Beispieldaten der Anleitung mit dem Bucket synchronisieren

Der Cloud Storage-Bucket enthält ungefähr 950 MB Beispieldaten für diese Anleitung. Mit gsutil rsync können Sie die Daten der Quelle mit dem Ziel-Bucket synchronisieren, ohne diese Daten auf Ihren lokalen Computer herunterladen zu müssen. Achten Sie auf das Flag -r, das rekursive Unterverzeichnisse kopiert, und das Flag -m, mit dem parallel synchronisiert wird. Dies ist für die Verwendung mehrerer Dateien hilfreich.

  1. Erstellen Sie eine Umgebungsvariable für Ihren Cloud Storage-Bucket-Namen:

    export YOUR_BUCKET=[YOUR_BUCKET_NAME]
    
  2. Synchronisieren Sie die Beispieldaten mit Ihrem Bucket:

    gsutil -m rsync -r gs://cloud-solutions-group-opencue gs://$YOUR_BUCKET
    

Beispieldatenbankschema und -daten hochladen

Laden Sie das Datenbankschema und die Beispieldaten hoch, um sie in Ihre Datenbanktabelle einzufügen:

  1. Kopieren Sie die Dateien V1__Initial_schema.sql, V2__Add_limit_table.sql und V3__increase_show_length.sql aus dem lokalen OpenCue-Verzeichnis in den Cloud Storage-Bucket der Anleitung:

    gsutil cp ~/OpenCue/cuebot/src/main/resources/conf/ddl/postgres/migrations/* gs://$YOUR_BUCKET/database/
    
  2. Kopieren Sie die Datei demo_data.sql aus dem lokalen OpenCue-Verzeichnis in den Cloud Storage-Bucket der Anleitung:

    gsutil cp ~/OpenCue/cuebot/src/main/resources/conf/ddl/postgres/demo_data.sql gs://$YOUR_BUCKET/database/
    

Datenbank bereitstellen

Das Cuebot-Modul von OpenCue speichert die Statusdaten des Programms in einer PostgreSQL-Datenbank. Für diese Anleitung reservieren Sie zuerst eine externe IP-Adresse für die VM, die als Cuebot dient. Dann stellen Sie eine Cloud SQL-Instanz bereit und konfigurieren diese. Anschließend setzen Sie die Cuebot-IP-Adresse auf die weiße Liste und richten so die Netzwerkverbindung ein. Abschließend fügen Sie der Datenbank ein Schema und die Beispieldaten hinzu.

Externe statische IP-Adresse für Cuebot reservieren

Reservieren Sie vor dem Erstellen der Datenbank oder der VM für Cuebot eine externe statische IP-Adresse für die Cuebot-VM. Diese wird für die Netzwerkkommunikation zwischen diesen beiden Ressourcen benötigt:

  1. Rufen Sie in der Cloud Console die Seite Statische Adresse reservieren auf.

    ZUR SEITE "STATISCHE ADRESSE RESERVIEREN"

  2. Wählen Sie einen Namen für die neue Adresse aus, z. B. cuebotstaticip.

  3. Legen Sie für Netzwerkdienststufe die Einstellung Premium fest.

  4. Geben Sie für IP-Version IPv4 an.

  5. Wählen Sie unter Typ die Option Regional aus.

  6. Wählen Sie die Region us-central1 aus.

  7. Übernehmen Sie unter Verknüpft mit die Einstellung Keine.

  8. Klicken Sie auf Reservieren, um die IP-Adresse zu reservieren.

Nachdem die Ressource erstellt wurde, werden Sie zur Seite Externe IP-Adressen zurückgeleitet. Hier geben Sie diese Adresse als [RESERVED_STATIC_IP_ADDRESS] an.

Cloud SQL-Instanz erstellen

Für die Erstellung einer PostgreSQL-Datenbank gibt es viele Möglichkeiten. In dieser Anleitung wird Cloud SQL verwendet, das eine einfache Einrichtung und eine vollständig verwaltete Datenbank auf Google Cloud bietet. Diese Instanz nutzt SSD für schnelle Lese- und Schreibvorgänge. Sie hat aber nur eine geringe anfängliche Speicherkapazität, nur 1 vCPU und 3,75 GB RAM. Wenn Sie OpenCue für größere Bereitstellungen skalieren möchten, sollten Sie zuerst diese Ressource erweitern. Cloud SQL kann zusammen mit Ihrer Bereitstellung skaliert werden.

  1. Rufen Sie in der Cloud Console die Seite "Cloud SQL-Instanzen" auf.

    Zur Seite "Cloud SQL-Instanzen"

  2. Wählen Sie Ihr Projekt aus und klicken Sie auf Weiter.

  3. Klicken Sie auf Instanz erstellen.

  4. Klicken Sie auf PostgreSQL.

  5. Geben Sie eine Instanz-ID ein, z. B. opencuedatabase.

  6. Geben Sie ein Passwort für den Nutzer "postgres" ein. Beim Erstellen von Cuebot wird dieses Passwort unter [DATABASEPASSWORD] angegeben.

  7. Legen Sie für Region us-central1 und Zone us-central1-a fest.

  8. Konfigurieren Sie die Verbindungsoptionen:

    1. Öffnen Sie Konfigurationsoptionen einblenden und wählen Sie Konnektivität aus.
    2. Wählen Sie Öffentliche IP-Adresse und +Netzwerk hinzufügen aus.
    3. Geben Sie unter Netzwerk Ihre [RESERVED_STATIC_IP_ADDRESS] ein.
    4. Klicken Sie auf Erstellen.

    Anschließend wird wieder die Instanzliste eingeblendet. Ihre neue Instanz ist darin abgeblendet dargestellt, während sie initialisiert und gestartet wird.

Cloud SQL-Datenbank erstellen

  1. Wählen Sie auf der Seite Instanzdetails Ihrer Cloud SQL-Ressource Datenbanken aus.
  2. Wählen Sie Datenbank erstellen aus.
  3. Legen Sie für Datenbankname cuebot fest.
  4. Klicken Sie auf Erstellen.
  5. Importieren Sie das Datenbankschema und die Beispieldaten:

    1. Wählen Sie Importieren aus.
    2. Klicken Sie in der Zeile für die Cloud Storage-Datei auf Durchsuchen.
    3. Wechseln Sie zu Ihrem Storage-Bucket [YOUR_BUCKET_NAME], den Sie hochgeladen haben, und importieren Sie das Schema für Ihre Datenbank durch Auswahl der folgenden Datei:

      gs://[YOUR_BUCKET_NAME]/database/V1__Initial_schema.sql
      
    4. Legen Sie für Importformat SQL fest.

    5. Wählen Sie für Datenbank die Option Cuebot aus.

    6. Wählen Sie Erweiterte Optionen einblenden aus.

    7. Wählen Sie unter Nutzer den Wert postgres aus.

    8. Klicken Sie auf Importieren.

    Wenn der Import abgeschlossen ist, werden Sie zur Detailseite der Cloud SQL-Instanz zurückgeleitet.

    Wiederholen Sie die vorherigen Schritte, um die Demodaten aus den folgenden Dateien zu importieren:

    gs://[YOUR_BUCKET_NAME]/database/V2__Add_limit_table.sql
    gs://[YOUR_BUCKET_NAME]/database/V3__increase_show_length.sql
    gs://[YOUR_BUCKET_NAME]/database/demo_data.sql
    

Wenn diese Importe abgeschlossen sind, werden Sie zur Detailseite der Cloud SQL-Instanz weitergeleitet. Notieren Sie sich die Cloud SQL-IP-Adresse. Diese muss später für [CLOUD_SQL_IP_ADDRESS] angegeben werden, wenn Sie Cuebot konfigurieren.

Cuebot-Docker-Images für die Bereitstellung vorbereiten

In dieser Anleitung wird Cuebot als Docker-Container auf einer einzelnen Compute Engine-VM bereitgestellt. Als Erstes müssen Sie dafür lokal ein Cuebot-Docker-Image aus dem OpenCue-Repository erstellen und zu Container Registry per Push weiterleiten. Container Registry ist ein privates Repository für Docker-Images auf Google Cloud, das Sie in dieser Anleitung zum Speichern der Docker-Images verwenden. Weitere Informationen zu diesem Workflow finden Sie in der Dokumentation zu Compute Engine.

Image erstellen

  1. Wechseln Sie gegebenenfalls zur Stammebene des OpenCue-Repositorys:

    cd ~/OpenCue
    
  2. Erstellen Sie eine Variable mit dem Namen TAG_NAME und eine weitere Variable für PROJECT_NAME. Legen Sie dann mit Docker ein Image mit diesem Tag zur Nachverfolgung an. Dabei verwenden Sie gcr.io/[PROJECT_NAME] im Build-Schritt für eine Tag-Kennzeichnung zur späteren Synchronisierung mit Container Registry.

    export TAG_NAME=demo
    export PROJECT_NAME=[PROJECT_NAME]
    docker build -t gcr.io/$PROJECT_NAME/opencue/cuebot:$TAG_NAME -f cuebot/Dockerfile .
    

Image mit Container Registry synchronisieren

Autorisieren Sie das gcloud-Tool, damit Docker Images in Container Registry hochladen kann. Anschließend synchronisieren Sie Ihr Cuebot-Docker-Image mit Container Registry.

  1. Führen Sie den folgenden Befehl aus, um das gcloud-Tool und die Docker-Synchronisierung zu autorisieren:

    gcloud auth configure-docker
    
  2. Geben Sie bei der folgenden Meldung y (Yes=Ja) ein und drücken Sie die Eingabetaste.

    Do you want to continue (Y/n)?
  3. Verschieben Sie das Cuebot-Docker-Image von Ihrem lokalen Repository in das Container Registry-Repository:

    docker push gcr.io/$PROJECT_NAME/opencue/cuebot:$TAG_NAME
    

Das Hochladen dauert einen Moment, bis die Synchronisierung abgeschlossen ist.

Cuebot-VM konfigurieren und bereitstellen

Mit der Konsole können Sie eine VM mit dem Betriebssystem "Container Optimized OS" bereitstellen. Außerdem können Sie damit die Containereinstellungen konfigurieren, eine Verbindung zur Datenbank erstellen und die reservierte externe statische IP-Adresse anfügen.

  1. Rufen Sie die Seite VM-Instanzen auf.

    ZUR SEITE "VM-INSTANZEN"

  2. Klicken Sie auf Instanz erstellen, um eine neue Instanz anzulegen.

  3. Benennen Sie die Instanz cuebot.

  4. Legen Sie für Region us-central1 und Zone us-central1-a fest.

  5. Wählen Sie unter Maschinentyp die Option Anpassen aus und legen Sie einen Maschinentyp mit 1 vCPU 6,5 GB fest.

  6. Konfigurieren Sie die Werte für Containereinstellungen.

    1. Wählen Sie im Bereich Container die Option Container-Image bereitstellen aus.
    2. Aktualisieren Sie [PROJECT_NAME] und geben Sie das folgende Container-Image an:

      gcr.io/[PROJECT_NAME]/opencue/cuebot:demo

    3. Blenden Sie Erweiterte Containeroptionen ein.

    4. Fügen Sie unter Befehlsargumente drei Argumente hinzu. Klicken Sie dazu dreimal auf +Argument hinzufügen.

    5. Geben Sie die folgenden Befehlsargumente ein und ersetzen Sie dabei [CLOUD_SQL_IP_ADDRESS] und [DATABASEPASSWORD] durch Ihre Werte.

      --datasource.cue-data-source.jdbc-url=jdbc:postgresql://[CLOUD_SQL_IP_ADDRESS]/cuebot
      --datasource.cue-data-source.username=postgres
      --datasource.cue-data-source.password=[DATABASEPASSWORD]
      

      Dabei gilt:

      Befehlsargument Erläuterung und erforderliche Eingabe
      --datasource.cue-data-source.jdbc-url=jdbc:postgresql://[CLOUD_SQL_IP_ADDRESS]/cuebot Ermöglicht die Kommunikation von Cuebot mit der Datenbank. Die Eingabe ist [CLOUD_SQL_IP_ADDRESS]/[DATABASE_NAME]. Sie haben in einem vorherigen Schritt Cuebot als Datenbanknamen verwendet, der deshalb hier eingegeben werden muss.
      --datasource.cue-data-source.username=postgres Cuebot benötigt den Nutzernamen der Datenbank zur Herstellung der Verbindung. Bei der Einrichtung haben Sie den Standardnutzernamen postgres verwendet. Dieser wird deshalb hier eingegeben. Für die Produktion sollten Sie gemäß Best Practices einen neuen Nutzer mit bestimmten Berechtigungen erstellen.
      --datasource.cue-data-source.password=[DATABASEPASSWORD] Cuebot benötigt das Datenbankpasswort zur Herstellung der Verbindung. Geben Sie hier den Wert für [DATABASEPASSWORD] ein.
  7. Konfigurieren Sie die Netzwerkeinstellungen:

    1. Wählen Sie unter Netzwerk die Option Netzwerkschnittstellen aus.
    2. Klicken Sie auf Externe IP-Adresse und wählen Sie die reservierte externe IP-Adresse aus, die Sie zuvor für Cuebot erstellt haben: cuebotstaticip.
    3. Klicken Sie auf Fertig.
    4. Übernehmen Sie in allen anderen Feldern die Standardeinstellungen.
    5. Klicken Sie auf Erstellen.

Bis die VM startet, dauert es einen Moment. Notieren Sie sich die interne IP-Adresse. Diese benötigen Sie zum Erstellen der Instanzvorlage. Die Adresse wird später unter [CUEBOT_INTERNAL_IP_ADDRESS] angegeben.

Renderinghosts erstellen

Ihre Renderinghosts bestehen aus VMs, die als verwaltete Instanzgruppe (Managed Instance Group, MIG) ausgeführt werden. Damit lassen sich sowohl der Standort als auch die Skalierung Ihrer Ressourcen steuern. Die MIG verwendet eine Instanzvorlage, um den Maschinentyp zu bestimmen, die Verwaltung von Dienstkonten zu aktivieren, ein Container-Image bereitzustellen und Containereinstellungen sowie Umgebungsvariablen zu konfigurieren.

Mit den Container-Images werden viele Abhängigkeiten und Softwarepakete konfiguriert, die zur Ausführung der Renderingaufgaben in dieser Anleitung erforderlich sind. Zur Konfiguration der Container-Images für Ihr Projekt erstellen Sie mit Docker ein Basis-Image für Renderinghosts und speichern dieses Image in einem lokalen Repository. Sie können dann dieses Basis-Image anpassen und beispielsweise aufgabenspezifische Software und Google Cloud-Einstellungen aus dem Repository dieser Anleitung hinzufügen, bevor Sie das Image im Container Registry-Repository bereitstellen.

Basis-Image für Renderinghosts erstellen

  • So erstellen Sie in Ihrer lokalen Shell das Basis-Image für den Renderinghost:

    cd ~/OpenCue
    export TAG_NAME=demo
    docker build -t opencue/rqd:$TAG_NAME -f rqd/Dockerfile .
    

Blender-Image konfigurieren

Das Dockerfile und die zugehörigen Skripts, die zum Erstellen des Blender-Images für Renderinghosts benötigt werden, befinden sich im Repository dieser Anleitung. In diesem Abschnitt laden Sie das Repository herunter und aktualisieren dafür einige Einstellungen für Ihr Projekt.

  1. Wechseln Sie zum Verzeichnis und zum Arbeitsbereich, die Sie für diese Anleitung verwenden, und laden Sie das Repository herunter:

    cd ~
    git clone https://github.com/GoogleCloudPlatform/python-opencue-demo.git
    
  2. Wenn der Renderinghost gestartet wird, ruft das Skript rqd_startup.sh in diesem Repository gcsfuse auf, um Ihren Anleitungs-Bucket als Dateisystem im Pfad /shots bereitzustellen. Öffnen Sie das Dockerfile in Ihrem Texteditor und aktualisieren Sie die Variable GCS_FUSE_BUCKET so, dass sie auf Ihren Bucket verweist:

    1. Kopieren Sie in einer Shell die folgende Datei in das Stammverzeichnis des Repositorys.

      cp ~/python-opencue-demo/third_party/Dockerfile ~/python-opencue-demo/Dockerfile
      
    2. Bearbeiten Sie die Datei in einem Texteditor Ihrer Wahl:

      ~/python-opencue-demo/Dockerfile
      
    3. Aktualisieren Sie mit der folgenden Zeile [YOUR_BUCKET_NAME] mit dem Namen Ihres Buckets:

      ENV GCS_FUSE_BUCKET [YOUR_BUCKET_NAME]
      
    4. Speichern Sie und beenden Sie den Texteditor.

Image erstellen und nach Container Registry verschieben

  1. Erstellen Sie das Image:

    cd ~/python-opencue-demo
    docker build -t gcr.io/$PROJECT_NAME/opencue/rqd-blender:$TAG_NAME .
    
  2. Wenn der Build abgeschlossen ist, verschieben Sie das Image nach Container Registry:

    docker push gcr.io/$PROJECT_NAME/opencue/rqd-blender:$TAG_NAME
    

Renderinghosts bereitstellen

Ihre Renderinghosts müssen zum Rendern Lese- und Schreibberechtigungen haben. Erstellen Sie für die Gewährung des Zugriffs der Renderinghosts ein Dienstkonto und vergeben Sie dafür im Sinne der Sicherheit die niedrigste mögliche Berechtigung. Bei der Bereitstellung Ihrer VMs verwenden Sie dieses Konto für die Identität und den API-Zugriff.

Dienstkonto erstellen

  1. Rufen Sie in der Cloud Console die Seite Dienstkonten auf.

    ZUR SEITE "DIENSTKONTEN"

  2. Klicken Sie auf Projekt auswählen.

  3. Wählen Sie Ihr Projekt aus und klicken Sie auf Öffnen.

  4. Klicken Sie auf +Dienstkonto erstellen.

  5. Geben Sie einen [SERVICE_ACCOUNT_NAME] ein, z. B. storageservice. Klicken Sie dann auf Erstellen.

  6. Wählen Sie die Rolle "Storage-Objekt-Administrator" für das Dienstkonto aus und klicken Sie auf Weiter.

  7. Klicken Sie auf Fertig.

Instanzvorlage erstellen

Erstellen Sie mit dem Docker-Image rqd-blender eine Instanzvorlage, um die Größe und die Einstellungen für die VM festzulegen:

  1. Rufen Sie in der Cloud Console die Seite Instanzvorlagen auf.

    ZUR SEITE "INSTANZVORLAGEN"

  2. Klicken Sie auf Instanzvorlage erstellen.

  3. Geben Sie der Instanzvorlage einen Namen, z. B. rqd-blender.

  4. Wählen Sie unter Maschinentyp die Option n1-highmem-2 aus.

  5. Konfigurieren Sie die Werte für Containereinstellungen.

  6. Klicken Sie im Bereich Container das Kästchen Container-Image für diese VM-Instanz erstellen an.

  7. Aktualisieren Sie [PROJECT_NAME] und geben Sie Folgendes für das Container-Image an:

    gcr.io/[PROJECT_NAME]/opencue/rqd-blender:demo
    
  8. Erlauben Sie den Zugriff auf die Systemgeräte, um Ihre RQD-Blender-Instanzen beim Start bei Cuebot anzumelden:

    1. Klicken Sie auf Erweiterte Containeroptionen.
    2. Wählen Sie Als privilegiert ausführen aus.
    3. Klicken Sie unter Umgebungsvariable auf +Variable hinzufügen und legen Sie für NAME CUEBOT_HOSTNAME und WERT [CUEBOT_INTERNAL_IP_ADDRESS] fest. Der letzte Wert bezieht sich auf die interne IP-Adresse der zuvor bereitgestellten Cuebot-VM.
  9. Konfigurieren Sie das Dienstkonto:

    1. Wählen Sie im Bereich Dienstkonto den Dienstkontonamen ([SERVICE_ACCOUNT_NAME]) aus, den Sie zuvor erstellt haben.
    2. Übernehmen Sie für alle anderen Felder die Standardeinstellungen.
    3. Klicken Sie auf Erstellen.

Verwaltete Instanzgruppe erstellen

Mit der Instanzvorlage erstellen Sie eine Gruppe verwalteter Instanzen und legen dabei den VM-Standort, die Anzahl der Instanzen und die Einstellungen für das Autoscaling fest.

  1. Rufen Sie in der Cloud Console die Seite Instanzgruppen auf.

    ZUR SEITE "INSTANZGRUPPEN"

  2. Klicken Sie auf Instanzgruppe erstellen.

  3. Geben Sie einen Namen für die verwaltete Instanzgruppe ein, z. B. rqd-blender-mig.

  4. Wählen Sie Einzelne Zone und die Region us-central1 sowie die Zone us-central1-a aus.

  5. Wählen Sie unter Gruppentyp die Option Verwaltete Instanzgruppe aus.

  6. Wählen Sie unter Instanzvorlage Ihre Instanzvorlage aus, z. B. rqd-blender.

  7. Wählen Sie für Autoscaling die Option Aus aus.

  8. Geben Sie unter Anzahl der Instanzen den Wert 3 ein.

  9. Klicken Sie auf Erstellen.

Lokale Workstation konfigurieren

Cuebot wird jetzt auf Google Cloud ausgeführt und kann nun Ihre Renderinghosts und Jobwarteschlangen verwalten. Zur Aktivierung der grafischen Benutzeroberfläche für das Senden und Verwalten von Aufgaben konfigurieren Sie Ihre lokale Workstation für die Ausführung von CueSubmit und CueGUI. Stellen Sie dann eine Verbindung von Ihrem lokalen Host zu Google Cloud her.

Verzeichnis erstellen und Berechtigungen für den Bucket-Bereitstellungspunkt festlegen

  • Erstellen Sie einen Bereitstellungspunkt für Ihren Cloud Storage-Bucket und legen Sie die Berechtigungen zum Lesen und Schreiben fest:

    sudo mkdir /shots
    sudo chmod 777 /shots
    sudo chown $USER /shots
    

    Bei der Bereitstellung auf Ihrer lokalen Workstation oder Ihrem Renderinghost werden diese Pfade für Ihre Eingabeanimationsszenendatei etwa in der Form /shots/robotdanceparty/sh_05/sh_05_lores.blend aufgelöst.

Bucket für diese Anleitung bereitstellen

  • Weisen Sie gcsfuse an, den Bucket für die Anleitung auf Ihrem lokalen Computer als Dateisystem im Pfad /shots bereitzustellen. Das Flag --implicit-dirs unterstützt dabei die Zuordnung von Objekten zu Verzeichnissen.

    gcsfuse --implicit-dirs $YOUR_BUCKET /shots
    

    SSH-Weiterleitung einrichten

In dieser Anleitung wird die SSH-Weiterleitung verwendet, um eine sichere Kommunikation zwischen Ihrer lokalen Workstation und Google Cloud zu ermöglichen. Mit den folgenden Befehlen öffnen Sie einen Port zur Weiterleitung von Aufrufen zwischen den OpenCue-Schnittstellen und Cuebot.

  1. Öffnen Sie eine neue Shell und reservieren Sie die Shell für den SSH-Vorgang.
  2. Aktualisieren Sie [YOUR_PROJECT_ID] und führen Sie die folgenden Befehle aus:

    export CUEBOT_INSTANCE_NAME=cuebot
    export PROJECTID=[YOUR_PROJECT_ID]
    export ZONE=us-central1-a
    gcloud compute ssh $CUEBOT_INSTANCE_NAME --project $PROJECTID --zone $ZONE -- -N -L 8443:127.0.0.1:8443
    

Virtuelle Umgebung initialisieren

  1. Öffnen Sie ein neues Shell-Fenster und reservieren Sie es für die Verwendung von CueGUI und CueSubmit.
  2. Isolieren Sie Ihre Umgebung vor der Installation mit dem Befehl virtualenv:

    cd ~/OpenCue
    virtualenv --python python2 venv
    

    Mehr über virtualenv erfahren.

  3. Ermitteln Sie die virtuelle Umgebung und installieren Sie die Abhängigkeiten mit pip.

    source venv/bin/activate
    pip install -r requirements.txt
    

    Sie können mit cat requirements.txt die Liste der installierten Abhängigkeiten aufrufen.

  4. Legen Sie, bevor Sie CueGUI oder CueSubmit starten, die erforderlichen Variablen für die Bereitstellung fest:

    export OPENCUE_ROOT=~/OpenCue
    export CUEBOT_HOSTS=localhost
    export PYTHONPATH=$OPENCUE_ROOT/pyoutline/:$OPENCUE_ROOT/pycue/:$OPENCUE_ROOT/cuesubmit/:$OPENCUE_ROOT/cuegui/
    
    Umgebungsvariable Erläuterung
    CUEBOT_HOSTS=localhost Gibt die Art der Verbindung von PyCue zur Cuebot-Instanz an. Bei Verwendung einer SSH-Weiterleitung wird sie als "localhost" definiert. Bei einer Verbindung über VPN oder Dedicated Interconnect müssen Sie die Cuebot-IP-Adresse eingeben.
    PYTHONPATH=$OPENCUE_ROOT Gibt den Python-Pfad zu den OpenCue-Bibliotheken an.

gRPC-Protokolle kompilieren

OpenCue verwendet gRPC als Kommunikationsprotokoll für das Senden von Nachrichten zwischen dem Server und den Clients. Die gRPC-Dienste werden mithilfe von Protokollpuffern in einer sprachneutralen .proto-Datei festgelegt. So aktivieren Sie die Python-Bibliotheken von OpenCue für die Kommunikation mit gRPC:

  • Kompilieren Sie mit den folgenden Befehlen die .proto-Definitionsdateien in für Python lesbare Dateien:

    cd ~/OpenCue/proto
    python -m grpc_tools.protoc -I=. --python_out=$OPENCUE_ROOT/pycue/opencue/compiled_proto --grpc_python_out=$OPENCUE_ROOT/pycue/opencue/compiled_proto ./*.proto
    

Benutzeroberflächen ausführen

Mit den folgenden Schritten entdecken Sie OpenCue. Dazu senden Sie einen Job mit CueSubmit und legen die Einstellungen für Jobs und Renderinghosts mit CueGUI fest. Beide Tools verwenden die gleiche Umgebung, sodass jeder Vorgang in der Shell der virtuellen Umgebung im Hintergrund ausgeführt werden muss.

CueSubmit ausführen

  • Führen Sie CueSubmit in der Shell der VM-Umgebung aus, damit ein Job gesendet werden kann:

    cd ~/OpenCue
    python cuesubmit/cuesubmit &
    

Job senden

Geben Sie über die CueSubmit-Benutzeroberfläche die folgenden Variablen ein:

  1. Geben Sie einen Job Name ein, z. B. yourjobname.
  2. Geben Sie eine Shot ein, z. B. sh_05.
  3. Geben Sie den Layer Name ein, z. B. render.
  4. Geben Sie im Feld Command to Run Folgendes ein:

    /usr/local/blender/blender -b -noaudio /shots/robotdanceparty/sh_05/sh_05_lores.blend -o /shots/renderimages/sh_05.lores.##### -F JPEG -f #IFRAME#
    
  5. Geben Sie im Feld Frame Spec den Wert 600-700 ein.

  6. Legen Sie für Job Type den Wert Shell fest.

  7. Legen Sie für Services den Wert shell fest.

  8. Übernehmen Sie in allen anderen Feldern die Standardeinstellungen und klicken Sie auf Submit.

    Anschließend wird ein Fenster mit der Nachricht "Submitted Job to OpenCue" ("Job an OpenCue gesendet") eingeblendet. Es enthält eine Job-ID und einen Jobnamen, mit denen Sie den Job beim Rendering überwachen können.

    Befehlszeilenoptionen für das Rendering:

    Befehlszeilenoption Beschreibung
    /usr/local/blender/blender Pfad zur ausführbaren Datei des Blenders.
    -b Rendering-Flag zur Ausführung ohne Oberfläche.
    -noaudio Rendering-Flag, das festlegt, dass keine Audiobibliotheken geladen werden.
    /shots/robotdanceparty/sh_05/sh_05_lores.blend Pfad zur Szenendatei, die gerendert werden soll.
    -o /shots/renderimages/sh_05.lores.##### Definieren Sie den Ausgabepfad, den Namen und den Frame-Abstand. ##### führt dazu, dass Frame 650 als sh_05.00650.jpg auf der Festplatte gespeichert wird.
    -F JPEG Festlegung des Ausgabedateityps als JPEG.
    -f #IFRAME# Festlegung der Frame-Nummer zum Zeitpunkt des Renderings (OpenCue-spezifisch). Diese Variable wird von <Frame Spec> interaktiv genutzt. Geben Sie die Variable deshalb wie hier angegeben ein.

    Weitere Informationen zum Befehlszeilen-Rendering mit Blender finden Sie in der Dokumentation zu Blender.

    Fenster mit gesendetem Job

    Variable Erläuterung
    Job Name Beliebige Variable, die Sie zu Beginn auswählen. Die meisten Einrichtungen halten Namenskonventionen ein, um eine konsistente Nachverfolgung von Jobs zu gewährleisten.
    User Name Wird von OpenCue eingefügt. Ist als Nutzer angemeldet, der CueSubmit startet.
    Show OpenCue erstellt zu Beginn eine Standardshow mit dem Namen testing. Die meisten Einrichtungen rufen einzelne Filmprojekte oder kommerzielle Shows in diesem Kontext auf. Für das Einfügen und Bearbeiten von Shows verwenden Sie am besten die CueAdmin-Befehlszeilentools.
    Shot Eine Abfolge von Frames, die unterbrechungsfrei über einen bestimmten Zeitraum abgespielt wird. Beim Film ist eine Aufnahme der Zeitraum zwischen "Klappe" und "Schlussklappe". Die Variable wird in der Regel für einzelne Aufnahmen in einer Sequenz oder Asset-Rotation während der Vorproduktion verwendet.
    Layer Ein einzelner Befehl für eine Übermittlung und einen Frame-Bereich. In diesem Beispiel führen Sie einen einzigen Layer namens render in Ihrem Job aus.
    Command to Run Der Befehl, den der Layer ausführen soll. Hier führen Sie ein Blender-Befehlszeilen-Rendering aus.
    Frame Spec Die Frames, die verarbeitet werden sollen. Hier rendern Sie die Frames 600–700 der Animation. Setzen Sie den Mauszeiger in das Feld Frame Spec (Frame-Spezifikation) für weitere Optionen, z. B. "Frame stepping" (Frame-weise Steuerung) und "Arbitrary frame inputs" (Beliebige Frame-Eingaben).
    Job Type Wird zur Definition des Softwarepakets verwendet, das für diese Layer in einem Job genutzt wird. Der von Ihnen definierte Befehl wird als Shell-Skript behandelt. Wählen Sie also Shell aus.
    Services Eine Liste von Anforderungen, z. B. der Mindest-RAM-Speicher oder eine benutzerdefinierte Ressource. Für Ihren Job sind über die Shell hinaus keine speziellen Anforderungen vorhanden. Wählen Sie also Shell aus.
    Submission details Das Gesamtergebnis aller Einstellungen, die Sie vorgenommen haben.

Überblick über CueGUI

CueGUI ist die zentrale Oberfläche einer Sammlung von UI-Modulen für unterschiedliche Aspekte der Renderingfarm. Im Folgenden finden Sie eine Liste mit allgemeinen Begriffen, Erläuterungen und zugehörigen Modulen, die Sie zur Überwachung Ihres Jobs und Ihrer Renderinghosts verwenden können. Eine weitere Übersicht über CueSubmit und CueGUI erhalten Sie in visueller Form im Video mit Schritt-für-Schritt-Anleitung.

Begriff Erläuterung Zugehörige CueGUI-Module
Job Eine einzelne Übermittlung zu OpenCue. Monitor Jobs
Attributes
Layer Ein einzelner Befehl für eine Übermittlung und einen Frame-Bereich. In diesem Beispiel führen Sie in Ihrem Job einen einzigen Layer namens render aus. Monitor Job Details
Attributes
Renderinghost Eine einzelne Renderingressource, die zur Verarbeitung einer Aufgabe verwendet wird. Monitor Job Details
Monitor Hosts
LogView
Attributes
Logs Renderinghosts schreiben Logdateien auf das Laufwerk. Diese bieten spezielle Informationen, z. B. zur Fehlerbehebung oder zur Erhebung von Leistungsmesswerten. Monitor Job Details
LogView
Attribute Eine Liste mit Details zu einer OpenCue-Übermittlung oder -Ressource. Das Fenster Attribute kann Details zu einem Job, einem Layer oder einem Renderinghost enthalten. Monitor Jobs
Monitor Job Details
Monitor Hosts
Attributes
Tag Eine Methode zur Kategorisierung, die einem Host oder einem Layer hinzugefügt werden kann, um sie bestimmten Jobs zuzuordnen. Sie fügen Host-Tags für die auf jedem Renderinghost verfügbaren Ressourcen und Layer-Tags für die zum Verarbeiten dieser Layer erforderlichen Ressourcen hinzu. Monitor Job Details
Monitor Hosts
Attributes
Layer-Tag Ein Tag, das die Anforderungen zur Verarbeitung eines Layers definiert. Wenn ein Layer beispielsweise eine GPU erfordert, fügen Sie dem Layer ein GPU-Tag hinzu. Monitor Job Details
Monitor Hosts
Attributes
Host-Tag Ein Tag, das eine Ressource definiert, die für einen Host zur Verfügung steht. Beispielsweise können Sie einem Host, auf dem eine GPU installiert ist, eine GPU-Ressource hinzufügen.
Ein Host wählt einen Layer für das Rendering aus, wenn diese Tags und eine Reihe von Ressourcenanforderungen erfüllt sind.
Monitor Job Details
Monitor Hosts
Attributes

Im Rahmen dieser Anleitung ist es nicht möglich, alle Oberflächen und Konzepte von OpenCue zu behandeln. Weitere Informationen finden Sie in der Dokumentation.

CueGUI ausführen

  • Öffnen Sie in der gleichen Shell der virtuellen Umgebung CueGUI:

    cd ~/OpenCue
    python cuegui/cuegui &
    

Fenster "Monitor Jobs" (Jobs überwachen) öffnen

  • Wählen Sie, wenn das CueCommander-Fenster geöffnet ist, Views/Plug-ins (Ansichten/Plug-ins) > Cuetopia > Monitor Jobs (Jobs überwachen) aus.

Infos zum Fenster "Monitor Jobs" (Jobs überwachen)

Das Fenster Monitor Jobs dient auf Jobebene als eine Art Großbildansicht.

Fenster "Monitor Jobs" in OpenCue

Suchen Sie in der Zeile mit [Your Job] nach den folgenden Informationen für diese Anleitung:

  • Job: Hier wird Ihr Jobname aufgeführt.
  • State (Status): Dieser Job ist In Progress (In Bearbeitung), weil er ausgewählt wurde und aktuell gerendert wird. Wenn der Job abgeschlossen ist, ändert sich der Wert in der Spalte State in Finished. Wenn bei dem Job ein Problem aufgetreten ist, ändert sich der Status in Failing. Es ist dann eine Fehlerbehebung erforderlich. Weitere Informationen zur Fehlerbehebung beim Rendering in OpenCue finden Sie in der Dokumentation.
  • Done/Total (Fertig/Gesamt): Bietet eine Übersicht über den Fortschritt des Jobs. In der Abbildung ist die Verarbeitung von 100 Frames in einem Job mit insgesamt 101 Frames abgeschlossen.
  • Running (Aktiv): Zeigt an, wie viele Frames aktuell auf Renderinghosts verarbeitet werden. In dieser Abbildung wird nur ein einziger Frame verarbeitet.
  • Progress (Fortschritt): Bietet eine visuelle Darstellung des Fortschritts bei der Verarbeitung des Jobs.

Fenster "Monitor Jobs" (Jobs überwachen) entdecken

  1. Überwachen Sie den Fortschritt Ihres Jobs im Fenster Monitor Jobs (Jobs überwachen). Ihr Job sollte den Status In Progress haben. Wenn er den Status Failing hat, informieren Sie sich im Bereich zur Fehlerbehebung über das weitere Vorgehen.
  2. Setzen Sie den Mauszeiger auf den Begriff Progress (Fortschritt). Ein Beschreibungsfenster mit hilfreichen Toolinformationen wird angezeigt.
  3. Machen Sie sich weiter mit der Benutzeroberfläche vertraut und setzen Sie dazu den Mauszeiger auf die anderen Zeilenüberschriften und Symbole.
  4. Wählen Sie [Your Job] aus.

Fenster "Monitor Job Details" aufrufen

  1. Wählen Sie, um das Fenster Monitor Job Details aufzurufen, View/Plug-ins > Cuetopia > Monitor Job Details aus.
  2. Doppelklicken Sie im Fenster Monitor Jobs auf [Your Job], um die Daten zu diesem Job in das Fenster Monitor Job Details zu laden.

Infos zum Fenster "Monitor Job Details"

Das Fenster Monitor Job Details bezieht sich auf Layer und enthält detaillierte Informationen zu Ihrem Job.

Fenster "Monitor Job Details" in OpenCue

Das Modul Monitor Job Details enthält diese beiden Fensterbereiche:

  • Layer: Im Fenster mit Ihrem Job ([Your Job]) in der Titelleiste wird der Name des Layers angezeigt.
  • Layer Info: Dieses Fenster enthält Informationen zu den einzelnen Frames des ausgewählten Layers.

Übersicht über den Bereich Layer:

  • Layer: Ihr Job hat einen Layer namens render. Wenn Ihr Job mehrere Layer hat, werden diese hier aufgelistet und können per Doppelklick einzeln ausgewählt werden.
  • Avg (Durchschnitt): Die durchschnittliche Renderingzeit dieser Layer pro Frame.
  • Tags: Hier werden Tags auf Layer-Ebene aufgelistet. Das Festlegen von Tags wird in dieser Anleitung nicht erläutert. Sie haben aber in diesem Bereich Zugriff auf Layer-Tags.
  • Depend (Abhängigkeit): Hier werden die Layer-Abhängigkeiten aufgelistet. Das Verwalten von Abhängigkeiten wird in dieser Anleitung nicht erläutert. Sie haben aber in diesem Bereich Zugriff auf die Layer-Abhängigkeiten.

Übersicht über den Bereich Layer Info (Layer-Info):

  • Schaltfläche Refresh (Aktualisieren): Wenn Sie auf diese Schaltfläche klicken, werden die neuesten Informationen aus der Datenbank in die Benutzeroberfläche geladen.
  • Order (Reihenfolge): Hier wird die Reihenfolge angezeigt, in der die Frames gerendert werden. Frames lassen sich in beliebiger Reihenfolge rendern. Beispielsweise können Sie jeden zehnten Frame rendern und dann die übrigen Frames oder Sie können die Reihenfolge umkehren. Diese Reihenfolge wird in CueSubmit unter "Frame Spec" (Frame-Spezifikation) angegeben, wenn Sie Ihren Job absenden.
  • Frame: Die Frame-Nummer der Szene, die gerendert werden soll.
  • Status: Der Status des Frames. In der Abbildung sind die Frames mit dem Status Succeeded gekennzeichnet.
  • Host: Die IP-Adresse des Renderinghosts, die dem Frame zugewiesen ist.

Fenster "Monitor Job Details" (Jobdetails überwachen) entdecken

  1. Klicken Sie auf Refresh (Aktualisieren) und überprüfen Sie den Fortschritt Ihres Jobs im Fenster Monitor Job Details (Jobdetails überwachen).
  2. Setzen Sie den Mauszeiger auf den Begriff Status. Es wird dann ein Beschreibungsfenster mit hilfreichen Toolinformationen angezeigt.
  3. Entdecken Sie weiter die Benutzeroberfläche und setzen Sie dazu den Mauszeiger auf die anderen Zeilenüberschriften und Symbole.

Fenster "LogView" (Logansicht) aufrufen

  • Wählen Sie für den Aufruf des Fensters LogView (Logansicht) die Option View/Plug-ins (Ansicht/Plug-ins)> Other (Weitere) > LogView (Logansicht) aus.

Infos zum Fenster "LogView" (Logansicht)

Das Fenster LogView (Logansicht) bietet eine schnelle Vorschau auf die Logs einzelner Frames. Diese Ansicht kann hilfreich sein, wenn Sie Informationen zur Problembehandlung einholen, VMs in der richtigen Größe für künftige Renderingdurchläufe skalieren oder das Rendering optimieren möchten.

Fenster "Log View" in OpenCue

Am Anfang einer Logdatei steht ein Header mit OpenCue-spezifischen Daten. Es folgt die Ausgabe der Software, die das Image verarbeitet. In diesem Beispiel wird die OpenCue-Konfiguration gefolgt von der Blender-Logausgabe dargestellt.

Fenster "LogView" (Logansicht) entdecken

  1. Wählen Sie im Fenster Monitor Job Details einen Frame mit dem Status SUCCEEDED im Bereich Layer Info aus, um die entsprechenden Logs zu betrachten.
  2. Achten Sie auf den Befehl, der aktuell ausgeführt wird.
  3. Achten Sie auf das logDestination.

Weitere Informationen zum Fenster LogView finden Sie in der Dokumentation zu OpenCue.

Fenster "Monitor Hosts" (Hosts überwachen) aufrufen

  • Wählen Sie für den Aufruf des Fensters Monitor Hosts (Hosts überwachen) die Option View/Plug-ins (Ansichten/Plug-ins) > CueCommander > Monitor Hosts (Hosts überwachen) aus.

Infos zum Fenster "Monitor Hosts" (Hosts überwachen)

Das Fenster Monitor Hosts enthält Informationen zu einzelnen Renderinghosts und bietet eine Oberfläche zum Hinzufügen oder Entfernen von Ressourcen mithilfe von Tags.

Fenster "Monitor Hosts" in OpenCue

Für diese Anleitung sind die folgenden Informationen relevant:

  • Kästchen Auto-refresh (Automatische Aktualisierung): Klicken Sie auf dieses Kästchen, damit das Fenster Monitor Hosts (Hosts überwachen) neu geladen wird.
  • Schaltfläche Refresh: Klicken Sie auf diese Schaltfläche, damit das Fenster Monitor Hosts neu geladen wird.
  • IP address: Die IP-Adresse ermöglicht die einfache Nachverfolgung von VMs zwischen OpenCue und Google Cloud.
  • Load %: Durchschnittlicher Wert der Ladelast auf dem Host in %, der relativ genau die Maschinenauslastung wiedergibt.
  • Mem (Speicher): Hostspeicherzuordnung.
  • Tags: Registrierte Ressourcen auf dem Host.

Fenster "Monitor Hosts" (Hosts überwachen) entdecken

  1. Klicken Sie auf Refresh (Aktualisieren) oder auf das Kästchen Auto-refresh (Automatische Aktualisierung).
  2. Wählen Sie einen Renderinghost aus und klicken Sie dazu auf seine IP Adress (IP-Adresse).
  3. Klicken Sie mit der rechten Maustaste auf den Renderinghost, um weitere Optionen einzublenden, z. B. Delete Host (Host löschen) oder Add or Remove Tags (Tags hinzufügen oder entfernen).

    Weitere Informationen zum Verwalten von Ressourcen mit Tags finden Sie in der Dokumentation.

  4. Klicken Sie doppelt auf einen Host, um seine Attribute zu prüfen.

  5. Achten Sie auf das Feld alloc, für das local.general ausgewählt wurde.

  6. Achten Sie auf die Tags, für die general festgelegt ist und die IP-Adresse des Hosts.

Fenster "Attributes" aufrufen

  • Wählen Sie Views/ Plug-ins (Ansichten/Plug-ins)> Other (Weitere) > Attributes (Attribute) aus.

Infos zum Fenster "Attributes" (Attribute)

Das Fenster Attributes (Attribute) enthält eine Liste mit Details zu einem Renderinghost, einem Layer oder einem Job. Nachfolgend finden Sie jeweils ein Beispiel.

Fenster "Attributes" in OpenCue

Jedes Fenster enthält relevante Informationen über den Host, den Layer oder den Job. Das Tag facility local (lokale Einrichtung) unter Job Attributes (Jobattribute) und das Tag general (allgemein) unter Layer Attributes (Layer-Attribute) sind zentrale Indikatoren für die Anforderungen dieser Übermittlung. Die Frames dieses Jobs verwenden nur Renderinghosts, denen beide Tags zugewiesen sind. Diese Tags entnehmen Sie Host Attributes in den Zeilen alloc und tags .

Fenster "Attributes" (Attribute) entdecken

  1. Klicken Sie im Fenster Monitor Hosts (Hosts überwachen) auf die IP-Address (IP-Adresse) eines Renderinghosts, um die zugehörigen Attribute zu laden.
  2. Prüfen Sie im Fenster Attributes (Attribute) die Einstellungen unter alloc (Zuordnung) und tags (Tags).
  3. Klicken Sie im Fenster Monitor Job Details (Jobdetails überwachen) auf einen Frame mit dem Status Succeeded (Erfolgreich), um dessen Attribute zu laden.
  4. Prüfen Sie im Fenster Attributes (Attribute) die Einstellungen für minMemory (Mindestspeicher) und tags (Tags).
  5. Klicken Sie im Fenster Monitor Jobs (Jobs überwachen) auf einen Job.
  6. Überprüfen Sie im Fenster Attributes die Einstellungen für facility (Einrichtung) und minCores (Mindestanzahl Kerne).

Eine ausführliche Erläuterung finden Sie in der Referenz zu CueGUI.

Gerenderte Frames prüfen

Es gibt mehrere Möglichkeiten, Frames beim Rendering zu prüfen oder nach dem Abschluss des Renderings lokal zu kopieren. Es ist im Rahmen dieser Anleitung nicht möglich, Tools für eine Vorschau auf die Animation zu installieren. Sie können jedoch mit der Cloud Console eine Vorschau einzelner Frames aufrufen oder die Frames lokal herunterladen, um sie in Ihrer bevorzugten Anwendung zur Bildanzeige darzustellen.

  1. Rufen Sie in der Cloud Console eine Liste von Objekten in einem Bucket oder eine Vorschau auf die Bilder in einem Browser auf:

    ZUR SEITE "CLOUD STORAGE"

  2. Klicken Sie auf [YOUR_BUCKET_NAME] und dann auf renderimages, um eine Liste der Frames anzusehen.

  3. Klicken Sie auf ein Bild, z. B. sh_05_lores.00650.jpg, um eine Vorschau im Browserfenster zu öffnen.

  4. Listen Sie mit Ihrer lokalen Shell die Bilder im Ausgabeverzeichnis auf:

      ls /shots/renderimages
    

    Sie können Dateien auch lokal kopieren oder in einem Anzeigetool Ihrer Wahl öffnen.

  5. Listen Sie mit gsutil die Objekte eines Buckets auf:

    gsutil ls gs://[YOUR_BUCKET_NAME]/renderimages
    
  6. Kopieren Sie mit gsutil alle Objekte aus Ihrem Bucket in ein lokales Verzeichnis: [LOCAL_DIRECTORY].

    mkdir ~/[LOCAL_DIRECTORY]
    gsutil -m rsync -r gs://[YOUR_BUCKET_NAME]/renderimages ~/[LOCAL_DIRECTORY]
    

Job beenden

Wenn das Rendering ausgeführt wird, können Sie auf den Abschluss warten und dann OpenCue weiter entdecken oder das Rendering durch Abbrechen im Fenster Monitor Jobs (Jobs überwachen) beenden.

So brechen Sie Ihren Job in OpenCue ab:

  1. Rufen Sie das Fenster Monitor Jobs auf.
  2. Wählen Sie [Your Job] aus und klicken Sie auf die Schaltfläche Kill Job.
  3. In einem Pop-up-Fenster wird die Meldung "Are you sure you want to kill these jobs?" angezeigt.
  4. Klicken Sie auf OK, um den Job zu beenden.

(Optional) Mit den Optionen für Ihre Renderingfarm vertraut machen

Damit diese Anleitung innerhalb des Rahmens von maximal 8 vCPUs verbleibt, haben Sie einige Renderinghosts mit geringer Größe für Ihre Renderingaufgabe bereitgestellt. Nehmen wir aber an, Sie möchten den Job schnell ausführen oder eine Animation für eine große Leinwand oder einen großen Bildschirm erstellen. In diesem Fall können Sie eine größere Anzahl von Ressourcen mit mehr CPUs bereitstellen. Dazu müssen Sie für Ihre vorhandene Instanzvorlage die Verwendung einer n1-highcpu-4-vCPU oder höher festlegen. Außerdem müssen Sie eine verwaltete Instanzgruppe erstellen, die alle Renderinghosts steuert, die für den Job verfügbar sind.

Sie haben die folgende Szenendatei mit geringer Auflösung auf n1-standard-2-VMs mit etwa einer Minute pro Frame gerendert.

  • Szenendatei:

    gs://[YOUR_BUCKET_NAME]/robotdanceparty/sh_05/sh_05_lores.blend
    
  • Bildergebnis:

    Bild der Robotertanzparty mit niedriger Auflösung

    Ihr Bucket für diese Anleitung enthält eine Szenendatei mit höherer Auflösung, die beim Rendering mit einer n1-highcpu-4-VM solche Bilder in etwa acht Minuten erstellt.

    Wenn Sie andere Optionen in OpenCue testen möchten, aktualisieren Sie den Befehl CueSubmit, um diese Datei mit höherer Auflösung zu verwenden.

  • Szenendatei:

    gs://[YOUR_BUCKET_NAME]/robotdanceparty/sh_05/sh_05.blend
    
  • Bildergebnis:

    Etwas höhere Auflösung des gleichen Roboterbilds

(Optional) Änderung des Kontingents anfordern

Wenn Sie die Anzahl der Renderinghosts erhöhen oder größere VMs verwenden möchten, müssen Sie möglicherweise das Kontingent für Ihr Projekt erhöhen.

  1. Rufen Sie die Seite Kontingente auf.

    ZUR SEITE "KONTINGENTE"

  2. Wählen Sie auf der Seite Kontingente die Kontingente aus, die Sie ändern möchten.

  3. Klicken Sie oben auf der Seite auf die Schaltfläche Kontingente bearbeiten.

  4. Klicken Sie auf das Kästchen des Dienstes, den Sie bearbeiten möchten.

  5. Geben Sie Ihren Namen, Ihre E-Mail-Adresse und Telefonnummer ein und klicken Sie auf Weiter.

  6. Geben Sie Ihre Anfrage zur Erhöhung des Kontingents ein und klicken Sie auf Weiter.

  7. Senden Sie die Anfrage.

Fehlerbehebung


Problem: Probleme mit dem Docker-Build-Prozess.

Lösung: Versuchen Sie, das Dockerfile mit dem Flag --no-cache zu erstellen. Dadurch wird Docker angewiesen, die aktuellen Daten für alle Schritte zu verwenden. Weitere Informationen zu den Build-Optionen von Docker finden Sie in der Dokumentation.


Problem: Beim Start von CueSubmit oder CueGUI tritt der Fehler Connect Failed auf. Beispiel:

Encountered a server error. StatusCode.UNAVAILABLE : Connect Failed

Lösung: Prüfen Sie, ob Ihr SSH-Tunnel funktioniert, und starten Sie dann CueSubmit oder CueGUI noch einmal.

  1. Führen Sie den ps-Befehl zum Vorgangsstatus in einer lokalen Shell aus, um den SSH-Tunnel zu öffnen:

    ps aux | grep ssh.
    

    Es wird eine Liste der Vorgänge angezeigt. Bei einem der Vorgänge sollte eine ähnliche Ausgabe wie im Folgenden dargestellt angezeigt werden, also mit [USER_NAME], [PROJECT_NAME] und Betriebssystem:

    [USER_NAME]     75335   0.0  0.3  4392464  54736 s002  T     3:03PM   0:00.84  /usr/local/Cellar/python@2/2.7.15_1/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/Python -S /Users/[USER_NAME]/google-cloud-sdk/lib/gcloud.py compute ssh cuebot --project [PROJECT_NAME] --zone us-central1-a -- -N -L 8443:127.0.0.1:8443
    
  2. Achten Sie darauf, dass [USER_NAME], [PROJECT_NAME], --zone und der Name (cuebot) für Ihre Bereitstellung korrekt sind.

  3. Beenden Sie den SSH-Vorgang und wiederholen Sie die Schritte im Bereich "SSH-Weiterleitung einrichten" in diesem Dokument, um einen neuen SSH-Tunnel zu öffnen.


Problem: CueSubmit oder CueGUI wurden aufgerufen, generieren aber Fehler in der Start-Shell.

Lösung: Stellen Sie eine Verbindung zu Ihrer Cloud SQL-Instanz her und prüfen Sie, ob diese Schema- und Beispieldaten enthält. Wenn die erwartete Ausgabe nicht angezeigt wird, importieren Sie die Dateien noch einmal. Eine Anleitung hierzu finden Sie im Bereich Cloud SQL-Datenbank erstellen im Schritt zum Importieren des Datenbankschemas und der Beispieldaten.

  1. Rufen Sie Cloud Shell in der Cloud Console auf und aktualisieren Sie mit dem folgenden Befehl Ihre Cloud SQL-Instanz. Ersetzen Sie dabei [CLOUD_SQL_INSTANCE_ID] durch den Namen Ihrer Instanz.

    gcloud sql connect [CLOUD_SQL_INSTANCE_ID] --user=postgres
    
  2. Aktualisieren Sie [DATABASEPASSWORD], wenn Sie dazu aufgefordert werden, und drücken Sie die Eingabetaste:

    [DATABASEPASSWORD]
    
  3. Geben Sie den folgenden Befehl ein und drücken Sie die Eingabetaste:

    \c cuebot
    
  4. Geben Sie das Passwort noch einmal ein, wenn Sie dazu aufgefordert werden, und drücken Sie die Eingabetaste:

    [DATABASEPASSWORD]
    
  5. Geben Sie den folgenden Befehl ein:

    \d+
    

    Die Ausgabe sollte in etwa so aussehen:

    >
    List of relations
    Schema | Name     | Type  | Owner    | Size       | Description
    -------+----------+-------+----------+------------+-------------
    public | action   | table | postgres | 8192 bytes |
    public | alloc    | table | postgres | 8192 bytes |
    public | comments | table | postgres | 8192 bytes |
    public | config   | table | postgres | 8192 bytes |
    public | deed     | table | postgres | 0 bytes    |
    public | depend   | table | postgres | 0 bytes    |
    public | dept     | table | postgres | 8192 bytes |
    

Problem: In CueSubmit oder CueGUI Shell treten Fehler auf und beide Tools werden nicht ausgeführt.

Lösung: Prüfen Sie die folgenden Variablen, um festzustellen, ob eine Verbindung zwischen CueBot und Ihrer Datenbank besteht:

  1. Prüfen Sie, ob im Schritt "Netzwerk" des Bereichs Cloud-SQL-Instanz erstellen [RESERVED_STATIC_IP_ADDRESS] ordnungsgemäß eingegeben wurde.
  2. Prüfen Sie, ob [CLOUD_SQL_IP_ADDRESS] und [DATABASEPASSWORD] im Schritt "Befehlsargumente" des Bereichs Cuebot-VM konfigurieren und bereitstellen korrekt eingegeben wurde.
  3. Prüfen Sie, ob die reservierte externe IP-Adresse im Schritt "Netzwerkeinstellungen konfigurieren" des Bereichs Cuebot-VM konfigurieren und bereitstellen richtig eingegeben wurde.

Problem: Ein gestarteter Job wird in OpenCue aufgeführt, wird aber auf den Renderinghosts nicht ausgewählt.

Lösung: Prüfen Sie, ob die Tags Job Facility (Jobeinrichtung) und Job Layer (Job-Layer) mit den zugewiesenen Tags unter Render Host (Renderinghost) übereinstimmen und ob die Mindestanforderungen an die Ressourcen erfüllt sind. Weitere Informationen finden Sie in den Dokumenten zur Behebung von Renderfehlern und zur Behebung von Bereitstellungsfehlern in OpenCue.


Problem: In CueGUI werden keine Renderinghosts angezeigt.

Lösung: Die fehlende Anzeige von Hosts kann verschiedene Ursachen haben. Am wahrscheinlichsten ist, dass die interne IP-Adresse für Cuebot beim Bereitstellen der Renderinghost-Instanzvorlage falsch eingegeben wurde. Weitere Informationen finden Sie in der Dokumentation zur Behebung von Bereitstellungsfehlern.

Bereinigen

Damit Ihrem Google Cloud-Konto die in dieser Anleitung verwendeten Ressourcen nicht in Rechnung gestellt werden, löschen Sie entweder das Projekt, das die Ressourcen enthält, oder behalten Sie das Projekt und löschen Sie die einzelnen Ressourcen.

  1. Wechseln Sie in der Cloud Console zur Seite Ressourcen verwalten.

    Zur Seite „Ressourcen verwalten“

  2. Wählen Sie in der Projektliste das Projekt aus, das Sie löschen möchten, und klicken Sie dann auf Löschen.
  3. Geben Sie im Dialogfeld die Projekt-ID ein und klicken Sie auf Shut down (Beenden), um das Projekt zu löschen.

Nächste Schritte