O conector de mainframe é iniciado como um processo de máquina virtual Java (JVM) no contexto de um job em lote do MVS. O Mainframe Connector geralmente é implantado usando um arquivo JAR que contém algumas dependências necessárias além das bibliotecas IBM incluídas na JVM. As seções a seguir descrevem o processo de instalação do Mainframe Connector em detalhes.
Antes de começar
- Conclua a configuração inicial do conector de mainframe. A configuração inicial inclui conceder as funções necessárias à sua conta de serviço, configurar a segurança dos seus recursos e configurar a conectividade de rede entre o mainframe e o Google Cloud.
- Configure o Java V8.
- Instale o JZOS Batch Launcher e o Toolkit.
Instalar conector de mainframe
Para instalar o Conector de mainframe, siga estas etapas:
Faça o download do arquivo JAR pré-criado. Copie o mainframe-connector-shadow-VERSION-all.jar para o caminho especificado na seção Java Classpath do BQSH procedimento de linguagem de controle de job (JCL, na sigla em inglês) mostrado na etapa 7. VERSION é a versão do Mainframe Connector.
Para acessar os serviços do Google Cloud no mainframe, é necessário criar e fazer o download de uma chave de conta de serviço como um arquivo de chave JSON. Para mais informações sobre como criar um arquivo de chave JSON, consulte Criar uma chave de conta de serviço.
Copie o arquivo de chave JSON para o sistema de arquivos Unix usando o protocolo de transferência de arquivos (FTP) no modo de transferência binária. Armazene o arquivo de chave JSON não modificado no sistema de arquivos com a codificação UTF-8 original.
Não há um caminho padrão para armazenar o arquivo de chave JSON no IBM z/OS Unix no sistema de arquivos. Escolha um caminho que possa ser lido somente por usuários com para acessar a conta de serviço. O arquivo de chave JSON não será legível nos Serviços de Sistema do UNIX (USS) se tiver sido transferido corretamente.
Use o FTP em modo binário para fazer upload do arquivo JAR baixado na etapa 1 para no seguinte local do mainframe.
/opt/google/mainframe-connector/VERSION/
Substitua Version pela versão do arquivo JAR.
Esse é o caminho recomendado para implantar o arquivo JAR. Também é possível usar qualquer caminho escolhido por um administrador do site.
Execute o comando a seguir para validar se o arquivo JAR foi transferido corretamente. A opção
-t
lista o conteúdo do arquivo JAR.jar -tvf JAR_FILE_NAME
Substitua JAR_FILE_NAME pelo nome do arquivo JAR.
Faça uma cópia do seguinte procedimento JCL BQSH e substitua as seguintes variáveis.
No procedimento JCL da BQSH,
BQSH_ROOT_LOGGER=DEBUG
indica que o registro de depuração está ativado. Para desativar a geração de registros de depuração, comente a linha ou defina a variável como qualquer coisa que não sejaDEBUG
.Para configurar o Mainframe Connector para gravar informações de registro no Cloud Logging, defina as variáveis de ambiente
LOG_PROJECT
eLOG_ID
, conforme mostrado no exemplo a seguir.Para a lista completa de variáveis de ambiente aceitas Conector de mainframe, consulte Variáveis de ambiente.
- GKEY_FILE_PATH pelo caminho para o arquivo de chave JSON descrito em etapa 3.
- JAR_FILE_PATH pelo caminho para o diretório que contém o JAR. .
- PROJECT_NAME com o projeto para o qual o registro está sendo criado no Cloud Logging
- LOG_ID_NAME pelo nome do 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 o Mainframe Connector para funcionar com um proxy de interceptação TLS, defina as seguintes propriedades do sistema Java no procedimento JCL BQSH.
javax.net.ssl.trustStore
javax.net.ssl.trustStorePassword
https.proxyHost
https.proxyUser
https.proxyPassword
O procedimento do JCL do BQSH antes de adicionar as propriedades do sistema Java para
IBM_JAVA_OPTIONS
é o seguinte.# 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" ```
Se você estiver usando a senha padrão da loja de certificados changeit, não será necessário definir a propriedade do sistema
trustStorePassword
. Os recursos de proxy são fornecidos peloApache HttpComponents HttpClient
.Você precisa usar um formato de repositório confiável de certificados compatível com o Conector de mainframe. O repositório de certificados de confiança pode ser armazenado nos seguintes formatos:
- PKCS12 (.p12): pode conter muitos certificados e exige uma senha
- JKS (.jks): pode conter muitos certificados e exige uma senha
- PEM (.pem): pode conter muitos certificados codificados como base64.
- Binário (.der): contém um certificado por arquivo.
Se a propriedade do sistema
trustStore
for o caminho para um diretório, o diretório é verificado e todos os certificados com a extensão .pem e .der encontrados no diretório são adicionados como certificados confiáveis. É necessário carregar manualmente certificados PKCS12 ou JKS.
Se você precisar fazer mudanças no procedimento JCL BQSH a qualquer momento, poderá preparar uma versão mais recente no ambiente inferior biblioteca de procedimentos (PROCLIB). Essa biblioteca é adicionada antes da biblioteca do sistema, SYSP.PROCLIB, para que as mudanças possam ser verificadas no ambiente inferior antes de atualizar o procedimento em SYSP.PROCLIB. Dessa forma, você pode evitar a atualização do JCL procedimentos para apontar para um novo procedimento atualizado durante o teste.
Exemplo de procedimento JCL do BQSH
Confira a seguir um exemplo de procedimento JCL BQSH. Neste procedimento, a ENV simbólico é usado para apontar para as instruções de ambiente padrão do Java e é específico para o ambiente do Google Cloud. Dessa forma, você não precisa procedimentos do BQSH para cada ambiente; Se você quiser fazer alterações em um ambiente específico, basta atualizar esse membro específico na Ambiente do Google Cloud na biblioteca PARMLIB do sistema. Por exemplo, crie um novo arquivo JAR, use uma versão diferente do Java da IBM ou mude o arquivo de chave JSON usando instruções de ambiente.
#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
Este é um exemplo do membro DEV PARMLIB que mostra como o O arquivo de chave JSON e o arquivo JAR do software do Conector de mainframe referenciadas.
# 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
A seguir
- Mover dados de mainframes transcodificados localmente para o Google Cloud
- Transcodificar dados de mainframes remotamente no Google Cloud
- Transcodificar dados de mainframe movidos para o Google Cloud usando uma biblioteca de fitas virtual