IBM MQ: Deploy do IBM MQ como container
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 |
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
:Znos 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
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