El conector de unidades centrales se inicia como un proceso de máquina virtual Java (JVM) en el contexto de un trabajo por lotes MVS. Por lo general, el conector de unidades centrales se implementa con un archivo JAR que contiene algunas dependencias requeridas distintas de las bibliotecas de IBM incluidas con la JVM. En las siguientes secciones, se describe la instalación del conector de unidad central proceso en detalle.
Antes de comenzar
- Completa la configuración inicial del conector de unidad central. La configuración inicial incluye otorgar los roles necesarios a tu servicio de seguridad para tus recursos y de la configuración conectividad entre tu unidad central y Google Cloud.
- Configura Java V8.
- Instala el Selector por lotes y el kit de herramientas de JZOS.
Instalar el conector de unidad central
Para instalar el conector de unidades centrales, sigue estos pasos:
Descarga el archivo JAR ya compilado. Copia el archivo mainframe-connector-shadow-VERSION-all.jar. a la ruta de acceso especificada en la sección Java Classpath de BQSH. Procedimiento de lenguaje de control de trabajo (JCL) que se muestra en el paso 7. VERSION es la versión del conector de unidad central.
Para acceder a los servicios de Google Cloud desde tu unidad central, debes crear y descarga una clave de cuenta de servicio como un archivo de claves JSON. Más información sobre cómo crear un archivo de claves JSON, consulta Crea una clave de cuenta de servicio.
Copia el archivo de claves JSON en el sistema de archivos Unix mediante el protocolo de transferencia de archivos (FTP) en modo de transferencia binaria. Asegúrate de almacenar la clave JSON sin modificar en el sistema de archivos, con su codificación original UTF-8.
No hay una ruta de acceso predeterminada para almacenar el archivo de claves JSON en el servidor Unix de IBM z/OS. un sistema de archivos completo. Debes elegir una ruta de acceso que solo puedan leer los usuarios con los permisos para acceder a la cuenta de servicio. El archivo de claves JSON no se podrá leer desde los servicios del sistema UNIX (USS) si se transfirió correctamente.
Usa FTP en modo binario para subir el archivo JAR que descargaste en el paso 1 a la siguiente ubicación de la unidad central.
/opt/google/mainframe-connector/VERSION/
Reemplaza Version por la versión del archivo JAR.
Ten en cuenta que esta es la ruta de acceso recomendada para implementar el archivo JAR. También puedes utilizar cualquier ruta elegida por un administrador del sitio.
Ejecuta el siguiente comando para validar que se haya transferido el archivo JAR correctamente. Ten en cuenta que la opción
-t
muestra el contenido de las JARjar -tvf JAR_FILE_NAME
Reemplaza JAR_FILE_NAME por el nombre del archivo JAR.
Haz una copia del siguiente procedimiento de JCL de BQSH y reemplaza el siguiente variables.
En el procedimiento JCL de BQSH,
BQSH_ROOT_LOGGER=DEBUG
indica lo siguiente: el registro de depuración está habilitado. Para inhabilitar el registro de depuración, marca como comentario la línea o establece la variable en cualquier valor distinto deDEBUG
.Para configurar Mainframe Connector para que escriba información de registro en Cloud Logging, establece las variables de entorno
LOG_PROJECT
yLOG_ID
como se muestra en el siguiente ejemplo.Para obtener la lista completa de variables de entorno compatibles con Conector de unidades centrales, consulta Variables de entorno.
- GKEY_FILE_PATH por la ruta de acceso al archivo de claves JSON descrito en Paso 3:
- JAR_FILE_PATH por la ruta de acceso al directorio que contiene el archivo JAR .
- PROJECT_NAME por el proyecto para el que se crea el registro Cloud Logging
- LOG_ID_NAME por el nombre del registro
//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 LOG_PROJECT="PROJECT_NAME" 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
Para configurar Mainframe Connector para que funcione con un proxy de intercepción de TLS, establece las siguientes propiedades del sistema de Java en el procedimiento JCL de BQSH.
javax.net.ssl.trustStore
javax.net.ssl.trustStorePassword
https.proxyHost
https.proxyUser
https.proxyPassword
El procedimiento JCL de BQSH antes de agregar las propiedades del sistema Java para
IBM_JAVA_OPTIONS
es el siguiente:# 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" ```
Si usas la contraseña predeterminada del almacén de confianza changeit, no es necesario que configures la propiedad del sistema
trustStorePassword
.Apache HttpComponents HttpClient
proporciona las capacidades del proxy.Debes usar un formato de almacén de confianza de certificados admitido por Conector de unidad central. El almacén de confianza de certificados se puede los siguientes formatos:
- PKCS12 (.p12): puede contener muchos certificados y requiere una contraseña
- JKS (.jks): Puede contener muchos certificados y requiere una contraseña
- PEM (.pem): puede contener muchos certificados codificados como base64
- Binario (.der): Contiene un certificado por archivo.
Si la propiedad del sistema
trustStore
es la ruta de acceso a un directorio, se analiza el directorio y se analizan todos los certificados con el archivo .pem y El formato .der que se encuentra en el directorio se agrega como certificados de confianza. Debes cargar de forma manual los certificados PKCS12 o JKS.
Si necesitas realizar cambios en el procedimiento de JCL de BQSH en cualquier momento, puedes habilitar a etapa una versión más reciente en un entorno inferior biblioteca de procedimientos (PROCLIB). Esta biblioteca se agrega antes que la biblioteca del sistema, SYSP.PROCLIB, por lo que los cambios en el entorno más bajo antes de actualizar en SYSP.PROCLIB. De esta manera, evitas actualizar JCL para llevar a cabo un procedimiento actualizado durante la prueba.
Procedimiento de JCL de BQSH de muestra
El siguiente es un ejemplo de procedimiento de JCL de BQSH. En este procedimiento, el parámetro ENV simbólico se usa para apuntar a las instrucciones del entorno estándar de Java y es específica del entorno de Google Cloud. De esta manera, no necesitarás varios Procedimientos de BQSH para cada entorno. Si quieres realizar cambios en un entorno en particular, solo debes actualizar a ese miembro específico en la Entorno de Google Cloud en la biblioteca PARMLIB del sistema. Por ejemplo, crea usar un archivo JAR nuevo, usar una versión diferente de IBM Java o cambiar el archivo de claves JSON con declaraciones de entorno.
#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
//STIN 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
El siguiente es un ejemplo del miembro DEV PARMLIB que muestra cómo se de claves JSON y el archivo JAR de software del conector de unidades centrales a los que se hace referencia.
# 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
¿Qué sigue?
- Transfiere datos de unidades centrales transcodificadas localmente a Google Cloud
- Transcodifica datos de unidades centrales de forma remota en Google Cloud.
- Transcodifica los datos de mainframe que se transfirieron a Google Cloud con una biblioteca de cintas virtual