IBM MQ: Deploy do IBM MQ como container

From Wiki


IBM MQ Deployment com Podman

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

Instalação Rápida

Passo 1: Criar Diretórios

mkdir -p /opt/ibm-mq/data

cd /opt/ibm-mq

chmod 777 data

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

entrando no container

podman exec -it ibm-mq bash

dspmqver

o resultado:

Name:        IBM M
Version:     9.4.5.0
...

Informações de Acesso

Console Web

  • URL: https://localhost:9443/ibmmq/console
  • Usuário: admin
  • Senha: passw0rd

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 e Iniciar Container

podman stop ibm-mq

podman start ibm-mq

Remover Container

podman stop ibm-mq
podman rm ibm-mq


Testando a Conexão

Connect to container

podman exec -it ibm-mq bash


Verificar Status do Queue Manager

dspmq


Usando Programas de Exemplo do MQ

Enviar uma mensagem:

/opt/mqm/samp/bin/amqsput DEV.QUEUE.1 QM1

Digite a mensagem e pressione Enter duas vezes.

Receber uma mensagem:

/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

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