IBM MQ: Deploy do IBM MQ como container

From Wiki
Jump to navigation Jump to search


IBM MQ Deployment com Podman

Este guia fornece instruções completas para implantar IBM MQ usando Podman.

Pré-requisitos

  • Podman instalado no sistema
  • Espaço em disco suficiente (mínimo 2GB)
  • Portas 1414 e 9443 disponíveis

Instalação Rápida

Passo 1: Criar Diretórios

mkdir -p /opt/ibm-mq

cd /opt/ibm-mq

mkdir -p data config logs/mqm

Passo 2: Baixar a Imagem IBM MQ

podman pull icr.io/ibm-messaging/mq:latest

Passo 3: Executar o Container

cd /opt/ibm-mq

podman run -d \
  --name ibm-mq \
  -p 1414:1414 \
  -p 9443:9443 \
  -e LICENSE=accept \
  -e MQ_QMGR_NAME=QM1 \
  -e MQ_APP_PASSWORD=passw0rd \
  -e MQ_ADMIN_PASSWORD=passw0rd \
  -v $(pwd)/data:/mnt/mqm:Z \
  icr.io/ibm-messaging/mq:latest

Passo 4: Verificar Status

podman ps
podman logs ibm-mq

Informações de Acesso

Console Web

Detalhes de Conexão MQ

  • Host: localhost
  • Porta: 1414
  • Queue Manager: QM1
  • Canal: DEV.APP.SVRCONN
  • Usuário App: app
  • Senha App: passw0rd

Operações Comuns

Visualizar Logs

podman logs -f ibm-mq

Parar Container

podman stop ibm-mq

Iniciar Container

podman start ibm-mq

Reiniciar Container

podman restart ibm-mq

Remover Container

podman stop ibm-mq
podman rm ibm-mq

Executar Comandos no Container

podman exec -it ibm-mq bash

Verificar Status do Queue Manager

podman exec ibm-mq dspmq

Testando a Conexão

Usando Programas de Exemplo do MQ

Enviar uma mensagem:

podman exec ibm-mq /opt/mqm/samp/bin/amqsput DEV.QUEUE.1 QM1

Digite a mensagem e pressione Enter duas vezes.

Receber uma mensagem:

podman exec ibm-mq /opt/mqm/samp/bin/amqsget DEV.QUEUE.1 QM1

Usando Aplicações Cliente

Parâmetros de conexão:

  • Queue Manager: QM1
  • Host: localhost
  • Porta: 1414
  • Canal: DEV.APP.SVRCONN
  • Usuário: app
  • Senha: passw0rd

Variáveis de Ambiente

Variável Descrição Valor Padrão
LICENSE Aceitar acordo de licença accept
MQ_QMGR_NAME Nome do Queue Manager QM1
MQ_APP_PASSWORD Senha do usuário de aplicação passw0rd
MQ_ADMIN_PASSWORD Senha do usuário admin passw0rd
MQ_ENABLE_METRICS Habilitar métricas Prometheus true

Volumes Montados

Caminho no Container Propósito
/mnt/mqm Diretório de dados do MQ
/etc/mqm Configuração do MQ
/var/mqm/qmgrs/QM1/errors Logs de erro

Configuração com Podman Pod

Para criar um pod Podman:

# Criar o pod
podman pod create --name mq-pod -p 1414:1414 -p 9443:9443

# Executar o container no pod
podman run -d \
  --pod mq-pod \
  --name ibm-mq \
  -e LICENSE=accept \
  -e MQ_QMGR_NAME=QM1 \
  -e MQ_APP_PASSWORD=passw0rd \
  -e MQ_ADMIN_PASSWORD=passw0rd \
  -v $(pwd)/mq-data:/mnt/mqm:Z \
  -v $(pwd)/mq-config:/etc/mqm:Z \
  icr.io/ibm-messaging/mq:latest

Gerenciamento de Pods

Listar Pods

podman pod ps

Parar Pod

podman pod stop mq-pod

Iniciar Pod

podman pod start mq-pod

Remover Pod

podman pod rm -f mq-pod

Configuração Avançada

Limites de Recursos

podman run -d \
  --name ibm-mq \
  --memory=2g \
  --cpus=2 \
  -p 1414:1414 \
  -p 9443:9443 \
  -e LICENSE=accept \
  -e MQ_QMGR_NAME=QM1 \
  -e MQ_APP_PASSWORD=passw0rd \
  -e MQ_ADMIN_PASSWORD=passw0rd \
  -v $(pwd)/mq-data:/mnt/mqm:Z \
  icr.io/ibm-messaging/mq:latest

Rede Personalizada

# Criar rede
podman network create mq-network

# Executar container na rede
podman run -d \
  --name ibm-mq \
  --network mq-network \
  -p 1414:1414 \
  -p 9443:9443 \
  -e LICENSE=accept \
  -e MQ_QMGR_NAME=QM1 \
  -e MQ_APP_PASSWORD=passw0rd \
  -e MQ_ADMIN_PASSWORD=passw0rd \
  -v $(pwd)/mq-data:/mnt/mqm:Z \
  icr.io/ibm-messaging/mq:latest

Reinício Automático

podman run -d \
  --name ibm-mq \
  --restart=unless-stopped \
  -p 1414:1414 \
  -p 9443:9443 \
  -e LICENSE=accept \
  -e MQ_QMGR_NAME=QM1 \
  -e MQ_APP_PASSWORD=passw0rd \
  -e MQ_ADMIN_PASSWORD=passw0rd \
  -v $(pwd)/mq-data:/mnt/mqm:Z \
  icr.io/ibm-messaging/mq:latest

Solução de Problemas

Container Não Inicia

  • Verificar logs: podman logs ibm-mq
  • Verificar portas em uso: netstat -an | grep -E '1414|9443'
  • Verificar espaço em disco: df -h

Não Consegue Conectar ao MQ

  • Verificar se o container está rodando: podman ps
  • Verificar regras de firewall
  • Verificar nomes de canal e queue manager
  • Verificar credenciais

Problemas de Permissão

  • Garantir que os labels SELinux estão corretos (flag :Z nos volumes)
  • Verificar permissões dos diretórios: ls -la mq-data mq-config

Console Web Não Acessível

  • Aguardar 30-60 segundos após iniciar o container
  • Verificar se a porta 9443 está acessível
  • Tentar acessar via IP ao invés de localhost
  • Verificar configurações de segurança do navegador (certificado auto-assinado)

Comandos MQ Úteis

Listar Filas

podman exec ibm-mq runmqsc QM1 <<EOF
DISPLAY QUEUE(*)
EOF

Criar uma Fila

podman exec ibm-mq runmqsc QM1 <<EOF
DEFINE QLOCAL(MINHA.FILA)
EOF

Verificar Profundidade da Fila

podman exec ibm-mq runmqsc QM1 <<EOF
DISPLAY QLOCAL(DEV.QUEUE.1) CURDEPTH
EOF

Limpar uma Fila

podman exec ibm-mq runmqsc QM1 <<EOF
CLEAR QLOCAL(DEV.QUEUE.1)
EOF

Backup e Restore

Backup dos Dados

# Parar o container
podman stop ibm-mq

# Fazer backup dos volumes
tar -czf mq-backup-$(date +%Y%m%d).tar.gz mq-data mq-config mq-logs

# Reiniciar o container
podman start ibm-mq

Restore dos Dados

# Parar e remover o container
podman stop ibm-mq
podman rm ibm-mq

# Restaurar os dados
tar -xzf mq-backup-YYYYMMDD.tar.gz

# Recriar o container
podman run -d \
  --name ibm-mq \
  -p 1414:1414 \
  -p 9443:9443 \
  -e LICENSE=accept \
  -e MQ_QMGR_NAME=QM1 \
  -e MQ_APP_PASSWORD=passw0rd \
  -e MQ_ADMIN_PASSWORD=passw0rd \
  -v $(pwd)/mq-data:/mnt/mqm:Z \
  -v $(pwd)/mq-config:/etc/mqm:Z \
  icr.io/ibm-messaging/mq:latest

Considerações de Segurança

Template:Warning

Alterando Senhas

# Acessar o container
podman exec -it ibm-mq bash

# Alterar senha do usuário admin
mqsichangepassword admin

# Alterar senha do usuário app
mqsichangepassword app

Usando Secrets do Podman

# Criar secrets
echo "senha-segura-admin" | podman secret create mq-admin-password -
echo "senha-segura-app" | podman secret create mq-app-password -

# Usar secrets no container
podman run -d \
  --name ibm-mq \
  --secret mq-admin-password \
  --secret mq-app-password \
  -p 1414:1414 \
  -p 9443:9443 \
  -e LICENSE=accept \
  -e MQ_QMGR_NAME=QM1 \
  -v $(pwd)/mq-data:/mnt/mqm:Z \
  icr.io/ibm-messaging/mq:latest

Monitoramento

Verificar Uso de Recursos

podman stats ibm-mq

Inspecionar Container

podman inspect ibm-mq

Verificar Health Check

podman healthcheck run ibm-mq

Veja também