Mainframe Connector auf dem Mainframe installieren

Mainframe Connector wird als JVM-Prozess (Java Virtual Machine) im Kontext eines MVS-Batchjobs gestartet. Mainframe Connector wird in der Regel mit einer JAR-Datei bereitgestellt, die einige erforderliche Abhängigkeiten enthält, die nicht in den IBM-Bibliotheken enthalten sind, die in der JVM enthalten sind. In den folgenden Abschnitten wird die Installation von Mainframe Connector ausführlich beschrieben.

Hinweise

  • Führen Sie die Ersteinrichtung für Mainframe Connector durch. Die Ersteinrichtung umfasst das Zuweisen der erforderlichen Rollen zu Ihrem Dienstkonto, das Einrichten der Sicherheit für Ihre Assets und das Einrichten der Netzwerkverbindung zwischen Ihrem Mainframe und Google Cloud.
  • Konfigurieren Sie Java 8 oder Java 17.
  • Installieren Sie den JZOS Batch Launcher und das Toolkit (Java 8 oder Java 17).

Mainframe Connector installieren

So installieren Sie Mainframe Connector:

  1. Laden Sie die vorgefertigte JAR-Datei für den Mainframe Connector in ein Verzeichnis herunter, für das Ihr Nutzerkonto Schreibberechtigungen hat.

    Wichtig

    Der Mainframe-Connector verwendet Google Analytics, um Nutzungsdaten zu erheben. So können wir die Software verbessern und die Nutzerfreundlichkeit erhöhen. Google Analytics ist standardmäßig aktiviert. Sie können die Funktion jedoch deaktivieren, indem Sie beim Ausführen von Mainframe Connector eine Umgebungsvariable konfigurieren.

    Die Nutzung von Google Analytics unterliegt den Nutzungsbedingungen und der Datenschutzerklärung von Google Analytics. Durch das Herunterladen von Mainframe Connector bestätigen Sie, dass Sie die Nutzungsbedingungen gelesen, verstanden und akzeptiert haben.

  2. Kopieren Sie die Datei mainframe-connector-shadow-VERSION-all.jar in den Pfad, der im Abschnitt Java Classpath der in Schritt 8 gezeigten BQSH-JCL-Prozedur (Job Control Language) angegeben ist. VERSION ist die Version von Mainframe Connector.

  3. Wenn Sie von Ihrem Mainframe aus auf Google Cloud Dienste zugreifen möchten, müssen Sie einen Dienstkontoschlüssel als JSON-Schlüsseldatei erstellen und herunterladen. Weitere Informationen zum Erstellen einer JSON-Schlüsseldatei finden Sie unter Dienstkontoschlüssel erstellen.

  4. Kopieren Sie die JSON-Schlüsseldatei mit dem File Transfer Protocol (FTP) im binären Übertragungsmodus in das Unix-Dateisystem. Speichern Sie die unveränderte JSON-Schlüsseldatei mit der ursprünglichen UTF-8-Codierung im Dateisystem.

    Es gibt keinen Standardpfad zum Speichern der JSON-Schlüsseldatei im IBM z/OS Unix-Dateisystem. Sie müssen einen Pfad auswählen, der nur von Nutzern mit Berechtigungen für den Zugriff auf das Dienstkonto gelesen werden kann. Die JSON-Schlüsseldatei kann nicht von UNIX System Services (USS) gelesen werden, wenn sie korrekt übertragen wurde.

  5. Laden Sie die in Schritt 1 heruntergeladene JAR-Datei im Binärmodus per FTP an den folgenden Speicherort auf Ihrem Mainframe hoch.

     /opt/google/mainframe-connector/VERSION/
    

    Ersetzen Sie Version durch die Version der JAR-Datei.

    Dies ist der empfohlene Pfad für die Bereitstellung der JAR-Datei. Sie können auch einen beliebigen Pfad verwenden, der von einem Websiteadministrator ausgewählt wurde.

  6. Führen Sie den folgenden Befehl aus, um zu prüfen, ob die JAR-Datei korrekt übertragen wurde. Mit der Option -t wird der Inhalt der JAR-Datei aufgeführt.

     jar -tvf JAR_FILE_NAME
    

    Ersetzen Sie JAR_FILE_NAME durch den Namen der JAR-Datei.

  7. Kopieren Sie die folgende BQSH-JCL-Prozedur und ersetzen Sie die folgenden Variablen.

    In der BQSH-JCL-Prozedur gibt BQSH_ROOT_LOGGER=DEBUG an, dass das Debug-Logging aktiviert ist. Wenn Sie das Debug-Logging deaktivieren möchten, kommentieren Sie die Zeile aus oder legen Sie für die Variable einen anderen Wert als DEBUG fest.

    Wenn Sie Mainframe Connector so konfigurieren möchten, dass Protokollierungsinformationen in Cloud Logging geschrieben werden, legen Sie die Umgebungsvariablen LOG_PROJECT und LOG_ID wie im folgenden Beispiel gezeigt fest.

    Eine vollständige Liste der vom Mainframe Connector unterstützten Umgebungsvariablen finden Sie unter Umgebungsvariablen.

    • GKEY_FILE_PATH mit dem Pfad zur JSON-Schlüsseldatei, die in Schritt 3 beschrieben wird.
    • JAR_FILE_PATH durch den Pfad zum Verzeichnis mit der JAR-Datei.
    • PROJECT_NAME durch das Projekt, für das der Log in Cloud Logging erstellt wird
    • LOG_ID_NAME durch den Namen des Logs
    //BQSH PROC
    //*******************************************************************
    //*
    //* Copyright 2022 Google LLC All Rights Reserved
    //*
    //* Licensed under the Apache License, Version 2.0 (the "License");
    //* you may not use this file except in compliance with the License.
    //* You may obtain a copy of the License at
    //*
    //*     http://www.apache.org/licenses/LICENSE-2.0
    //*
    //* Unless required by applicable law or agreed to in writing, software
    //* distributed under the License is distributed on an "AS IS" BASIS,
    //* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    //* See the License for the specific language governing permissions and
    //* limitations under the License.
    //*
    //*******************************************************************
    //BQSH EXEC PGM=JVMLDM86,REGION=0M,
    //  PARM='/+I com.google.cloud.bqsh.Bqsh'
    //SYSPRINT DD SYSOUT=*
    //SYSOUT   DD SYSOUT=*
    //STDOUT   DD SYSOUT=*
    //STDERR   DD SYSOUT=*
    //CEEDUMP  DD SYSOUT=*
    //ABNLIGNR DD DUMMY
    //STDIN    DD DUMMY
    //QUERY    DD DUMMY
    //INFILE   DD DUMMY
    //COPYBOOK DD DUMMY
    //KEYFILE  DD DUMMY
    //STDENV   DD *,SYMBOLS=EXECSYS
    
    # Service Account Keyfile
    # Edit the line below to specify a unix filesystem path where
    # the service account keyfile is stored.
    # The service account should be granted Storage, BigQuery and Logging permissions.
    export GKEYFILE="GKEY_FILE_PATH"
    
    # Path to directory containing google jar file
    # Edit this to set actual path selected for your site
    # it's recommended to have a path with a version identifier
    # and create a symlink to the directory of the latest version
    GOOGLE_DIR="JAR_FILE_PATH"
    GOOGLE_CLASSPATH="$GOOGLE_DIR/*"
    
    # Do not modify the 3 lines below
    # Collect system symbols from JES
    export JOBNAME=&JOBNAME
    export JOBDATE=&YYMMDD
    export JOBTIME=&HHMMSS
    
    # IBM JZOS JDK Location
    JH="/usr/lpp/java/J8.0_64"
    export JAVA_HOME="$JH"
    export PATH="/bin:$JH/bin"
    
    # Log Level
    export BQSH_ROOT_LOGGER=DEBUG
    
    # Cloud logging
    export LOG_PROJECT="PROJECT_NAME"
    export LOG_ID="LOG_ID_NAME"
    
    # Binary Data Sets
    # Uncomment the line below to set a default output bucket for scp.
    # The DSN of the input file is used as the object name.
    # this may greatly reduce effort across many job steps
    #export GCSDSNURI="gs://[BUCKET]/[PREFIX]"
    
    # Generational Data Sets
    # Uncomment the line below to set a default output bucket for scp GDG datasets.
    # The Cloud GDG feature emulates a GDG dataset in a versioned object.
    # Cloud Storage objects take precedence over local DSN when this is set.
    #export GCSGDGURI="gs://[BUCKET]/[PREFIX]"
    
    # Uncomment the line below to set a default output bucket for the gszutil command.
    #export GCSOUTURI="gs://[BUCKET]/[PREFIX]"
    
    # Mainframe Connector gRPC service
    # Uncomment and edit the lines below to set the Hostname or IP Address and
    # port of the gRPC data set transcoding service.
    # The gRPC service converts z/OS datasets to ORC format on VMs running in
    # Google Cloud VPC. This is strongly recommended when processing high volumes
    # of data.
    #export SRVREMOTE=
    #export SRVPORT=
    
    # Native Libraries
    JL="$JH/lib"
    LP="/lib:/usr/lib:$JH/bin:$JL/s390x:$JL/s390x/j9vm:$JH/bin/classic"
    export LIBPATH="$LP:/usr/lib/java_runtime64"
    
    # Java Classpath
    CP="$JL:$JL/ext:/usr/include/java_classes/*"
    export CLASSPATH="$CP:$GOOGLE_CLASSPATH"
    
    # JVM options
    IJO="-Xms512m -Xmx512m -Xcompressedrefs -Djava.net.preferIPv4Stack=true"
    export IBM_JAVA_OPTIONS="$IJO"
    export JZOS_MAIN_ARGS=""
    /*
    // PEND
    
  8. Wenn Sie Mainframe Connector für die Verwendung mit einem TLS-abfangenden Proxy konfigurieren möchten, legen Sie die folgenden Java-Systemeigenschaften in der BQSH-JCL-Prozedur fest.

    • javax.net.ssl.trustStore
    • javax.net.ssl.trustStorePassword
    • https.proxyHost
    • https.proxyUser
    • https.proxyPassword

    Die BQSH-JCL-Prozedur vor dem Hinzufügen der Java-Systemattribute für IBM_JAVA_OPTIONS sieht so aus:

    # JVM options
    IJO="-Xms512m -Xmx512m -Xcompressedrefs -Djava.net.preferIPv4Stack=true"
    export IBM_JAVA_OPTIONS="$IJO"
     ```
    
    The BQSH JCL procedure after adding the Java system properties for
    <code>IBM_JAVA_OPTIONS</code> is as follows.
    
    ```none
    # JVM options
    IJO="-Xms512m -Xmx512m -Xcompressedrefs -Djava.net.preferIPv4Stack=true"
    IJO="$IJO -Djavax.net.ssl.trustStore=/path/to/cacerts"
    IJO="$IJO -Djavax.net.ssl.trustStorePassword=notasecret"
    IJO="$IJO -Dhttp.proxyHost=proxy.example.com"
    IJO="$IJO -Dhttp.proxyUser=username"
    IJO="$IJO -Dhttp.proxyPassword=password"
    export IBM_JAVA_OPTIONS="$IJO"
     ```
    
  9. Wenn Sie das Standardpasswort für den Trust Store changeit verwenden, müssen Sie die Systemeigenschaft trustStorePassword nicht festlegen. Die Proxyfunktionen werden von Apache HttpComponents HttpClient bereitgestellt.

    Sie müssen ein vom Mainframe Connector unterstütztes Zertifikats-Trust Store-Format verwenden. Der Zertifikat-Truststore kann in den folgenden Formaten gespeichert werden:

    • PKCS12 (.p12): Kann viele Zertifikate enthalten und erfordert ein Passwort
    • JKS (.jks): Kann viele Zertifikate enthalten und erfordert ein Passwort
    • PEM (.pem): Kann viele als base64 codierte Zertifikate enthalten.
    • Binär (.der): Enthält ein Zertifikat pro Datei

    Wenn die Systemeigenschaft trustStore der Pfad zu einem Verzeichnis ist, wird das Verzeichnis gescannt und alle Zertifikate im Format .pem und .der, die im Verzeichnis gefunden werden, werden als vertrauenswürdige Zertifikate hinzugefügt. PKCS12- oder JKS-Zertifikate müssen manuell geladen werden.

Wenn Sie die BQSH-JCL-Prozedur jederzeit ändern müssen, können Sie eine neuere Version in der Prozedurbibliothek (PROCLIB) der unteren Umgebung bereitstellen. Diese Bibliothek wird vor der Systembibliothek SYSP.PROCLIB hinzugefügt, damit die Änderungen in der unteren Umgebung geprüft werden können, bevor die Prozedur in SYSP.PROCLIB aktualisiert wird. So können Sie vermeiden, dass Sie JCL-Prozeduren während des Tests aktualisieren müssen, damit sie auf eine neue aktualisierte Prozedur verweisen.

Beispiel für eine BQSH-JCL-Prozedur

Im Folgenden finden Sie ein Beispiel für eine BQSH-JCL-Prozedur. In diesem Verfahren wird das Symbol ENV verwendet, um auf die Anweisungen der Java-Standardumgebung zu verweisen. Es ist spezifisch für die Google Cloud -Umgebung. So benötigen Sie nicht mehrere BQSH-Prozeduren für jede Umgebung. Wenn Sie Änderungen für eine bestimmte Umgebung vornehmen möchten, müssen Sie nur das entsprechende Element in derGoogle Cloud -Umgebung in der Systembibliothek PARMLIB aktualisieren. Sie können beispielsweise eine neue JAR-Datei erstellen, eine andere IBM-Java-Version verwenden oder die JSON-Schlüsseldatei mit Umgebungsanweisungen ändern.

#BQSH PROC ENV=DEV
//
//******************************************************************
//*
//* Copyright 2022 Google LLC All Rights Reserved
//*
//* Licensed under the Apache License, Version 2.0 (the "License");
//* you may not use this file except in compliance with the License.
//* You may obtain a copy of the License at
//*      http://www.apache.org/licenses/LICENSE-2.0
//* Unless required by applicable law or agreed to in writing , software
//* distributed under the License is distributed on as "AS IS" BASIS,
//* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express of impl.
//* See the license for the specific language governing permissions and
//* limitations under the License.
//*
//******************************************************************
//BQSH EXEC PGM=JVMLDM86,REGION=0M,
//  PARM='/+I com.google.cloud.bqsh.Bqsh'
//SYSPRINT DD SYSOUT = *
//SYSOUT   DD SYSOUT = *
//STDOUT   DD SYSOUT = *
//STDERR   DD SYSOUT = *
//CEEDUMP  DD SYSOUT = *
//ABNLIGNR DD DUMMY
//STDIN    DD DUMMY
//QUERY    DD DUMMY
//INFILE   DD DUMMY
//COPYBOOK DD DUMMY
//KEYFILE  DD DUMMY
//STDENV   DD DISP=SHR,DSN=SYSP.PARMLIB(EDW&ENV)
//         DD *,SYMBOLS=EXECSYS
# Do not modify the 3 lines below
# Collect system symbols from JES
export JOBNAME=&JOBNAME
export JOBDATE=&YYMMDD
export JOBTIME=&HHMMSS

Im folgenden Beispiel für das DEV PARMLIB-Element sehen Sie, wie auf die JSON-Schlüsseldatei und die JAR-Datei der Mainframe Connector-Software verwiesen wird.

# Service Account Keyfile
# Edit the line below to specify a unix filesystem path where
# the service account keyfile is stored.
# The service account should be granted Storage, BigQuery and Logging pe
GKPATH= "/opt/google/keyfile"
GKFILE= "prj-ent-edw-dev-landing-2451-f89d99af31e5.json"
export GKEYFILE= "$GKPATH/$GKFILE"

# Path  to directory containing google jar file
# Edit this is set actual path selected for your site
# its recommended to have a path with a version identifier
# and create a symlink to the directory of the latert version
GOOGLE_DIR= "/opt/google/mainframe-connector/5.9.0"
GOOGLE_CLASSPATH= "$GOOGLE_DIR/*"

#IBM JZOS JDK Location
JH= "/usr/lpp/java/J8.0_64"
export JAVA_HOME= "$JH"
export PATH= "/bin:$JH/bin"

# Log Level
export BQSH_ROOT_LOGGER=DEBUG

Nächste Schritte