Translate

Mostrar mensagens com a etiqueta DNS. Mostrar todas as mensagens
Mostrar mensagens com a etiqueta DNS. Mostrar todas as mensagens

sábado, 24 de maio de 2025

Kubernetes Services Muito Além do ClusterIP

 

Bellacosa Mainframe e os kubernetes

☕ Um Café no Bellacosa Mainframe

Kubernetes Services Muito Além do ClusterIP

O Que Todo Programador COBOL Padawan Precisa Saber Sobre ClusterIP, NodePort, LoadBalancer, ExternalName, DNS, Balanceamento, Alta Disponibilidade e Como os Grandes Bancos Mantêm Milhares de Microsserviços Funcionando Sem Que Ninguém Perceba

"Um bom programador conhece um endereço IP. Um excelente engenheiro cria sistemas onde ninguém precisa conhecer endereço algum."


Introdução

Durante décadas, nós, profissionais de Mainframe, aprendemos que estabilidade era uma virtude.

No IBM Z, dificilmente pensamos no endereço físico de uma aplicação.

Quando um operador acessa uma transação CICS, ele não precisa saber em qual LPAR ela está executando.

Quando um lote conversa com o DB2, ele não sabe onde está o buffer pool.

Quando um terminal 3270 executa uma transação, ele não precisa conhecer qual região AOR irá atendê-lo.

Existe uma camada de abstração.

Essa camada protege o usuário da complexidade.

Curiosamente, quase cinquenta anos depois, o Kubernetes resolveu exatamente o mesmo problema.

Só que agora para milhares de containers distribuídos em centenas de servidores Linux.

Se você é um Programador COBOL Padawan entrando no universo DevOps, Kubernetes pode parecer um mundo completamente diferente.

Mas não é.

Na verdade, muitos dos conceitos já existem no Mainframe há décadas.

Neste artigo vamos descobrir por que os Kubernetes Services talvez sejam um dos recursos mais importantes de toda a plataforma.


Antes de falar de Services...

Precisamos entender um conceito fundamental.

Tudo no Kubernetes é temporário.

Isso assusta quem vem do Mainframe.

No IBM Z pensamos assim:

"Meu programa está naquela máquina."

No Kubernetes pensamos diferente.

"Meu programa está em algum lugar do cluster."

Essa pequena mudança de mentalidade muda tudo.

Imagine uma aplicação simples.

Internet

↓

Frontend

↓

Backend

↓

Banco

Agora imagine que o Backend roda em três Pods.

Pod A

Pod B

Pod C

Cada Pod possui um endereço IP.

10.244.1.3

10.244.8.15

10.244.2.9

Até aqui parece simples.

O problema aparece quando um Pod morre.


Pods nascem e morrem o tempo todo

Ao contrário de um servidor tradicional, Pods são descartáveis.

Podem desaparecer por diversos motivos.

  • atualização

  • falha

  • manutenção

  • escalabilidade

  • reinício do Node

  • Rolling Update

  • Auto Scaling

Imagine:

Pod B

10.244.8.15

Foi destruído.

Kubernetes cria outro.

Pod D

10.244.19.44

Novo IP.

Novo identificador.

Nova localização.

Se todas as aplicações utilizassem o IP antigo, tudo quebraria.

É exatamente aqui que nasce o Kubernetes Service.


Afinal, o que é um Kubernetes Service?

A definição oficial diz:

Um Service fornece um endpoint de rede estável para acessar um conjunto de Pods.

Na prática podemos traduzir para:

Um Service é um endereço permanente que representa vários Pods temporários.

Observe.

Sem Service.

Cliente

↓

Pod A

10.244.1.7

Quando o Pod muda...

Tudo quebra.

Com Service.

Cliente

↓

backend-service

↓

Pod A

Pod B

Pod C

Agora o cliente nunca mais conversa diretamente com os Pods.

Essa é uma das ideias mais elegantes do Kubernetes.


A analogia perfeita para quem conhece Mainframe

Imagine um ambiente CICS.

Você possui:

  • TOR

  • AOR

  • FOR

  • WLM

  • Sysplex

  • VIPA

Quando um usuário acessa uma aplicação, ele normalmente não conhece qual AOR irá executar sua transação.

Existe uma infraestrutura inteligente fazendo esse trabalho.

No Kubernetes acontece exatamente a mesma coisa.

Cliente

↓

Service

↓

Pod 1

Pod 2

Pod 3

O Service é uma espécie de endereço lógico.

Assim como um VIPA.


Por que Services existem?

Existem cinco motivos principais.

1. Endereço permanente

Mesmo que todos os Pods sejam recriados.

O endereço continua igual.


2. DNS automático

Todo Service recebe automaticamente um nome DNS.

Exemplo.

backend-service

Ou

backend-service.default.svc.cluster.local

Isso elimina IPs fixos no código.


3. Balanceamento

Se existem quatro Pods...

Pod1

Pod2

Pod3

Pod4

O Service distribui as requisições.

Nenhum Pod fica sobrecarregado.


4. Descoberta de serviços

Imagine um cluster com:

  • PIX

  • Conta Corrente

  • Cartão

  • Investimentos

  • Fraude

  • Autenticação

Como um microsserviço encontra o outro?

Através do Service.


5. Desacoplamento

Aplicações deixam de depender da infraestrutura.

Mudamos Pods.

Mudamos Nodes.

Mudamos Cluster.

Nada muda para o cliente.


Como um Service funciona internamente?

Muita gente imagina que existe um processo rodando como um proxy.

Na maioria dos casos não.

O fluxo real é aproximadamente este.

Cliente

↓

DNS

↓

Service

↓

EndpointSlice

↓

kube-proxy

↓

iptables/IPVS/eBPF

↓

Pod

O kube-proxy cria regras dentro do próprio Kernel Linux.

O encaminhamento acontece praticamente sem intervenção de processos em espaço de usuário.


Endpoint e EndpointSlice

Quando criamos um Service, ele precisa descobrir quais Pods pertencem à aplicação.

Isso acontece através dos Labels.

Pod.

labels:
  app: backend

Service.

selector:
  app: backend

O Kubernetes encontra automaticamente todos os Pods.

Esses Pods são armazenados em objetos chamados EndpointSlices.

Nos clusters antigos existiam apenas Endpoints.

Hoje o EndpointSlice melhora muito a escalabilidade.


Os quatro tipos clássicos de Services

Agora chegamos ao coração do assunto.


ClusterIP

Este é o padrão.

Sempre que você cria um Service sem especificar o tipo, ele será ClusterIP.

type: ClusterIP

Ele cria um IP virtual acessível apenas dentro do cluster.

Arquitetura.

Frontend

↓

ClusterIP

↓

Backend

É o tipo mais utilizado.

Por quê?

Porque a maioria dos microsserviços nunca deve ficar pública.

Imagine um banco.

Você possui.

  • Serviço PIX

  • Serviço Cartão

  • Serviço Conta

  • Serviço Investimentos

  • Serviço Fraude

Nenhum deles precisa ser acessado pela Internet.

Todos usam ClusterIP.


Casos de uso

  • APIs internas

  • Banco de Dados

  • Redis

  • RabbitMQ

  • Kafka

  • Elasticsearch

  • MongoDB


NodePort

Agora a história muda.

NodePort abre uma porta fixa em todos os servidores do cluster.

Exemplo.

Node1

30080
Node2

30080
Node3

30080

Qualquer um responde.

Mesmo que o Pod esteja em outro servidor.

O acesso acontece assim.

192.168.1.50:30080

Muito útil para laboratório.

Pouco utilizado em produção.


Limitações

  • portas limitadas

  • pouca segurança

  • difícil gerenciamento

  • IP dos Nodes exposto

Por isso normalmente é utilizado apenas para desenvolvimento.


LoadBalancer

Quando trabalhamos em Cloud, LoadBalancer torna-se extremamente importante.

Criamos.

type: LoadBalancer

O Kubernetes conversa automaticamente com o provedor.

AWS cria um ELB.

Azure cria um Azure Load Balancer.

Google cria um Cloud Load Balancer.

IBM Cloud cria um IBM Cloud Load Balancer.

Tudo automaticamente.

Arquitetura.

Internet

↓

Cloud Load Balancer

↓

Service

↓

Pods

Essa automação impressiona quem vem do mundo tradicional.

Em poucos segundos uma infraestrutura completa aparece pronta.


ExternalName

Este tipo é diferente de todos os outros.

Ele não cria IP.

Não cria balanceamento.

Não cria Endpoint.

Não cria Proxy.

Ele apenas responde um nome DNS.

Exemplo.

externalName:
   api.bcb.gov.br

Agora qualquer aplicação utiliza.

banco-central

Mesmo que o endereço verdadeiro mude.

Isso facilita migrações.


O quinto tipo que poucos lembram

Embora muitos materiais apresentem apenas quatro tipos, existe outro extremamente importante.

Headless Service.

clusterIP: None

Nesse caso não existe IP virtual.

O DNS devolve diretamente todos os Pods.

Muito utilizado em StatefulSets.

Exemplo.

  • Kafka

  • Cassandra

  • MongoDB

  • Elasticsearch

  • ZooKeeper


O papel do DNS

Uma das maiores mágicas do Kubernetes.

Criamos.

name: backend-service

Automaticamente nasce.

backend-service.default.svc.cluster.local

Nenhuma configuração adicional.

Isso é fornecido pelo CoreDNS.

Assim os desenvolvedores nunca precisam decorar IPs.


Como acontece o balanceamento?

Imagine.

Pod1

Pod2

Pod3

Chegam 900 requisições.

O Service distribui.

300

300

300

Na prática depende do mecanismo utilizado.

  • iptables

  • IPVS

  • eBPF

Mas a ideia continua sendo a mesma.

Distribuir carga.


O que acontece quando um Pod morre?

Suponha.

Pod2

Falhou.

Kubernetes percebe.

Remove o Pod do EndpointSlice.

O Service deixa imediatamente de enviar tráfego para ele.

O usuário nem percebe.

Depois um novo Pod nasce.

Automaticamente entra no balanceamento.

Tudo sem intervenção humana.


O papel das Readiness Probes

Outro conceito fundamental.

Um Pod pode estar vivo.

Mas ainda não pronto.

Imagine um sistema Java iniciando.

O processo já está executando.

Mas ainda carregando centenas de classes.

O Kubernetes espera a Readiness Probe informar.

"Agora estou pronto."

Só então o Service começa a enviar requisições.


Ingress não substitui Service

Esse erro aparece frequentemente em entrevistas.

Ingress faz uma função diferente.

Arquitetura correta.

Internet

↓

Load Balancer

↓

Ingress Controller

↓

ClusterIP

↓

Pods

Ingress trabalha na camada HTTP/HTTPS.

Service trabalha na camada de rede interna.

São tecnologias complementares.


Session Affinity

Por padrão.

Cada requisição pode ir para qualquer Pod.

Mas algumas aplicações antigas dependem de sessão.

Nesse caso.

sessionAffinity:
   ClientIP

O mesmo cliente tende a conversar sempre com o mesmo Pod.

É semelhante ao conceito de Sticky Session.


Erros clássicos

Selector errado

Service.

selector:
   app: api

Pods.

labels:
   app: backend

Resultado.

Zero Endpoints.


TargetPort incorreto

Service.

targetPort: 8080

Container.

9090

Nada funciona.


Pod não Ready

Existe.

Está executando.

Mas ainda não recebe requisições.


NetworkPolicy

O Service funciona.

Mas a política de rede bloqueia o acesso.


O paralelo com o IBM Mainframe

Chegamos à parte mais interessante.

Veja esta comparação.

IBM MainframeKubernetes
Região CICSPod
SysplexCluster
VIPAClusterIP
Sysplex DistributorService
WLMBalanceamento
VTAMRede do Cluster
DNS CorporativoCoreDNS
Health CheckReadiness Probe
Região AORRéplica do Deployment
Balanceador F5LoadBalancer

Perceba que o Kubernetes não inventou todos esses conceitos.

Ele apenas os adaptou para um mundo distribuído baseado em Linux e containers.


Como um banco utiliza tudo isso?

Imagine um Internet Banking.

Internet

↓

Load Balancer

↓

Ingress

↓

Gateway

↓

Conta Corrente

↓

PIX

↓

Cartão

↓

Investimentos

↓

DB2

Cada caixa dessa arquitetura possui seu próprio ClusterIP.

Cada aplicação possui diversas réplicas.

Cada réplica pode estar em um servidor diferente.

Se um Node inteiro falhar.

O Kubernetes recria os Pods em outro Node.

Os Services continuam exatamente iguais.

Os clientes continuam utilizando os mesmos nomes DNS.

Nenhum código precisa ser alterado.

Esse é o verdadeiro poder da abstração.


Conclusão

Quando começamos a estudar Kubernetes, é comum dedicar muita atenção aos Pods, Deployments e Containers. Eles são importantes, mas representam apenas parte da história.

O componente que realmente transforma um conjunto de processos efêmeros em uma plataforma corporativa é o Service.

Ele fornece identidade estável para aplicações que mudam constantemente, esconde a complexidade da infraestrutura, distribui carga, integra-se ao DNS do cluster e permite que atualizações, escalabilidade e recuperação de falhas ocorram de forma transparente.

Para quem vem do universo IBM Mainframe, a ideia não é totalmente nova. Há décadas, tecnologias como VIPA, Sysplex Distributor, WLM e CICS já abstraem a localização física das aplicações e distribuem trabalho entre múltiplas instâncias. O Kubernetes segue a mesma filosofia, adaptando-a ao mundo dos containers, dos microsserviços e da computação em nuvem.

O grande aprendizado para o Programador COBOL Padawan é que o endereço de uma aplicação nunca deve depender da máquina onde ela está executando. Assim como um usuário de um sistema bancário não precisa saber qual região CICS processará sua transação, um consumidor de um microsserviço não deve conhecer o IP de um Pod. Ele deve conhecer apenas um nome lógico — o Service.

No fim das contas, Kubernetes Services representam muito mais do que um recurso de rede. Eles materializam princípios clássicos de engenharia de software: abstração, desacoplamento, alta disponibilidade, balanceamento de carga, resiliência e escalabilidade. São esses princípios que permitem que grandes bancos, seguradoras e empresas globais executem milhões de transações por dia, mantendo seus sistemas disponíveis mesmo quando containers são criados, destruídos e recriados continuamente. Entender esse mecanismo é um passo fundamental para qualquer desenvolvedor COBOL que deseje evoluir do mundo do processamento tradicional para a moderna engenharia de software baseada em DevOps, Cloud Native e IBM Z integrado ao ecossistema Kubernetes.

domingo, 17 de fevereiro de 2019

Kubernetes Ingress Muito Além do Erro 502 Bad Gateway

 

Bellacosa Mainframe e o kubernetes ingress

☕ Um Café no Bellacosa Mainframe

Kubernetes Ingress Muito Além do Erro 502 Bad Gateway

O Que Todo Programador COBOL Padawan Precisa Saber Sobre Ingress, Services, Pods, Endpoints, DNS, DevOps, Cloud e Como os Grandes Bancos Encontram Problemas em Produção Antes que Eles Virem Incidentes

"No Mainframe aprendemos que um ABEND raramente é a causa do problema. Normalmente ele é apenas o sintoma. No Kubernetes acontece exatamente a mesma coisa com o famoso erro 502 Bad Gateway."


Introdução

Se você perguntar para um administrador de Mainframe qual foi o pior problema que ele enfrentou em produção, dificilmente ele responderá que foi um erro de compilação.

Os verdadeiros pesadelos acontecem quando...

  • o CICS começa a rejeitar transações;

  • o DB2 responde lentamente;

  • um Job Batch termina com RC=12;

  • um MQ Queue Manager para de responder;

  • uma região entra em SOS (Short On Storage);

  • ou simplesmente "o sistema caiu" e ninguém sabe por quê.

Curiosamente, no mundo Kubernetes acontece exatamente a mesma coisa.

Um dos erros mais famosos é:

502 Bad Gateway

Muitos iniciantes acreditam que o Ingress "quebrou".

Na verdade...

Na maioria das vezes o Ingress está funcionando perfeitamente.

Quem está com problemas é alguma camada localizada atrás dele.

E aqui está a primeira grande lição para um Programador COBOL Padawan:

Grandes sistemas nunca são compostos por apenas uma aplicação. Eles são compostos por diversas camadas que trabalham em conjunto.

É exatamente assim que funciona um banco.

É exatamente assim que funciona um IBM Z.

E é exatamente assim que funciona um cluster Kubernetes.

Hoje vamos entender profundamente cada uma dessas camadas.


Antes de falar do erro 502...

Precisamos entender quem participa da conversa.

Imagine que você abre o navegador e acessa:

https://api.banco.com/saldo

Parece simples.

Mas internamente existe uma verdadeira viagem.

Usuário

↓

DNS

↓

Load Balancer

↓

Ingress

↓

Service

↓

Endpoints

↓

Pods

↓

Aplicação

↓

Banco de Dados

Veja quantos componentes participaram.

O usuário nem imagina.

É exatamente como acontece quando você consulta seu saldo no aplicativo do banco.

Você aperta um botão.

Milhares de componentes trabalham em conjunto.


A analogia com o Mainframe

Vamos traduzir tudo para a linguagem COBOL.

KubernetesMainframe
DNSVTAM / TCP/IP
IngressAPI Gateway / CICS Front-End
ServiceDefinição lógica de roteamento
PodRegião executando aplicação
ContainerAddress Space
ClusterData Center
DeploymentVersão da aplicação
NamespaceAmbiente (DEV/HML/PRD)
ConfigMapPARMLIB
SecretRACF + Keyring
Persistent VolumeDASD

Perceba que os conceitos são muito semelhantes.

Mudam apenas os nomes.


O que realmente significa o erro 502?

O navegador mostra:

502 Bad Gateway

O usuário pensa:

"A aplicação caiu."

Nem sempre.

Na verdade o Ingress está dizendo algo parecido com:

"Recebi sua requisição.

Tentei conversar com o servidor responsável.

Mas ele respondeu errado ou simplesmente não respondeu."

Observe que o problema pode estar muito distante do Ingress.


O Ingress é apenas um porteiro

Imagine um edifício comercial.

Na recepção existe um porteiro.

Ele pergunta:

"Quem você deseja visitar?"

Você responde:

"Departamento Financeiro."

O porteiro liga.

Ninguém atende.

Isso significa que o porteiro fez algo errado?

Claro que não.

Ele apenas tentou encaminhar.

O Ingress faz exatamente isso.


A viagem da requisição

Vamos acompanhar um pacote.

Notebook

↓

Internet

↓

DNS

↓

Ingress Controller

↓

Service

↓

Endpoints

↓

Pod

↓

Container

↓

Aplicação Java

↓

Banco

Em qualquer etapa algo pode falhar.


O DNS

O DNS é o catálogo telefônico da Internet.

Quando digitamos:

api.banco.com

O computador precisa descobrir:

172.31.25.90

Sem DNS nada funciona.

No Kubernetes existe também o DNS interno.

Por exemplo:

pagamentos.default.svc.cluster.local

É assim que um Pod encontra outro.

Sem DNS...

Não existe comunicação.


O Ingress

O Ingress é um roteador HTTP.

Ele analisa:

  • Host

  • URL

  • Caminho

  • Certificados

  • TLS

  • Headers

Depois decide para onde enviar.

Exemplo:

api.banco.com/clientes

↓

Service Clientes

Enquanto:

api.banco.com/cartoes

↓

Service Cartões

O Ingress não executa sua aplicação.

Ele apenas encaminha.


O Service

Aqui existe um conceito muito importante.

O Service NÃO É a aplicação.

Ele também NÃO É o Pod.

Ele funciona como um endereço lógico.

Imagine uma agência bancária.

O cliente conhece:

Caixa Preferencial

Mas não conhece qual funcionário está trabalhando naquele momento.

O Service funciona exatamente assim.


O segredo do Selector

O Service procura Pods através dos Labels.

Exemplo.

O Pod possui:

app=financeiro

O Service procura:

selector:

app=financeiro

Perfeito.

Agora imagine um erro.

Pod:

financeiro

Service:

finance

Uma palavra diferente.

Resultado:

0 Pods encontrados.

O Ingress não terá ninguém para atender.


Endpoints

Pouca gente conhece esse objeto.

Mas ele é extremamente importante.

O Endpoint é a lista de Pods disponíveis.

Imagine:

Pod A

10.1.1.5
Pod B

10.1.1.6

O Service cria:

Endpoints

10.1.1.5

10.1.1.6

Agora o balanceamento pode acontecer.


Quando o Endpoint fica vazio

Imagine que todos os Pods morreram.

O Endpoint passa a mostrar:

<none>

Agora pense.

O Ingress pergunta:

"Para quem envio?"

O Service responde:

"Ninguém."

Resultado?

502

ou

503

Dependendo do cenário.


O Pod

O Pod é onde sua aplicação realmente vive.

Pode conter:

  • Java

  • Go

  • Node

  • Python

  • .NET

  • COBOL moderno

É equivalente a uma região executando programas.


Running não significa saudável

Esse é um erro clássico.

Imagine:

kubectl get pods

Resultado:

Running

Todo mundo comemora.

Mas...

READY

0/1

O Pod está vivo.

Mas não está pronto.

É igual um operador sentado na mesa sem conseguir atender clientes.


Readiness Probe

Essa é uma das funcionalidades mais inteligentes do Kubernetes.

A cada poucos segundos ele pergunta:

Você está pronto?

Se a resposta for:

200 OK

O Pod entra no balanceamento.

Caso contrário...

Ele fica isolado.


Liveness Probe

Agora outra pergunta.

Você continua vivo?

Se a resposta for negativa...

O Kubernetes mata o processo.

Depois inicia outro.

É como um operador de Mainframe reiniciando uma região CICS travada.


TargetPort

Um dos maiores causadores do erro 502.

Imagine:

Container:

8080

Service:

targetPort

9090

O Service bate na porta errada.

É igual ligar para um ramal inexistente.


O erro mais comum do mundo

O desenvolvedor altera a aplicação.

Antes:

8080

Depois:

9090

Esquece de alterar o Service.

Pronto.

Produção parada.


Como um SRE investiga

Nunca começa olhando código.

Segue uma sequência lógica.

Primeiro:

kubectl get ingress

Depois:

kubectl describe ingress

Depois:

kubectl get svc

Depois:

kubectl describe svc

Depois:

kubectl get endpoints

Depois:

kubectl get pods

Depois:

kubectl logs

Perceba a filosofia.

Ele verifica a cadeia inteira.

Não apenas um componente.


A importância dos Logs

Logs são o SDSF do Kubernetes.

No Mainframe fazemos:

SDSF

JESMSGLG

JESJCL

SYSOUT

No Kubernetes fazemos:

kubectl logs

Ali encontramos mensagens como:

Connection refused
Timeout
Database unavailable
Port already in use

Essas mensagens normalmente apontam para a causa raiz.


Eventos do Cluster

Outro recurso pouco utilizado.

kubectl get events

Ali aparecem informações como:

  • Pod reiniciado

  • Nó indisponível

  • Falha no agendamento

  • Problemas de armazenamento

  • Imagem não encontrada

  • Erros de montagem de volumes

É semelhante aos consoles operacionais de um ambiente z/OS, onde mensagens do sistema revelam a sequência dos acontecimentos.


O que os grandes bancos fazem diferente?

Grandes bancos não esperam o usuário reclamar.

Eles monitoram tudo.

Cada camada possui métricas específicas:

  • Tempo de resposta do Ingress.

  • Quantidade de requisições por segundo.

  • Taxa de erros HTTP.

  • Saúde dos Pods.

  • Consumo de CPU e memória.

  • Tempo de resposta do banco de dados.

  • Número de conexões ativas.

  • Latência entre serviços.

Ferramentas como Prometheus, Grafana, Loki, Elastic, OpenTelemetry e Jaeger ajudam a transformar milhares de métricas em painéis compreensíveis.


Observabilidade: muito além dos logs

Em ambientes modernos falamos em três pilares:

  1. Logs: contam o que aconteceu.

  2. Métricas: mostram tendências e comportamento.

  3. Traces: acompanham uma requisição por todas as camadas.

Imagine uma transferência bancária. Um trace pode mostrar:

Cliente
   ↓
Ingress
   ↓
API
   ↓
Serviço de autenticação
   ↓
Serviço de pagamentos
   ↓
DB2

Se houver lentidão, você identifica exatamente onde ela ocorreu.


Um estudo de caso

Imagine que um banco publica uma nova versão do serviço de consulta de saldo.

Logo após o deploy, o monitoramento começa a registrar centenas de erros 502.

O procedimento correto seria:

  1. Confirmar se o Ingress continua roteando corretamente.

  2. Verificar se o Service aponta para a porta correta.

  3. Confirmar se os Endpoints existem.

  4. Validar se os Pods estão Ready.

  5. Conferir a configuração das Readiness Probes.

  6. Examinar os logs da aplicação.

  7. Caso necessário, executar um rollback para a versão anterior.

Observe que, em nenhum momento, a primeira ação é "reiniciar tudo". Profissionais experientes evitam esse tipo de abordagem porque ela pode mascarar a causa real do problema.


Lições para um Programador COBOL Padawan

Quem trabalhou com Mainframe já aprendeu algo muito valioso:

  • Um ABEND pode ter origem em um arquivo indisponível.

  • Um SQLCODE negativo pode ser consequência de um problema anterior.

  • Um Job RC=12 pode ter sido causado por outro Job que terminou em RC=08.

Em Kubernetes, a lógica é idêntica.

O erro 502 é apenas o último elo de uma cadeia de eventos.

Por isso, desenvolva sempre uma visão sistêmica. Entenda como DNS, Ingress, Services, Endpoints, Pods, Containers, Rede e Aplicação trabalham juntos. Essa capacidade de enxergar o fluxo completo é o que diferencia um operador de comandos de um verdadeiro engenheiro de software.


Conclusão

O famoso 502 Bad Gateway é um excelente exemplo de como os sistemas modernos são compostos por diversas camadas cooperando entre si. O Ingress raramente é o verdadeiro culpado; ele apenas informa que não conseguiu obter uma resposta válida do backend.

Para o Programador COBOL Padawan, a maior lição não é decorar comandos do kubectl, mas adotar uma forma de pensar que já existe há décadas no universo IBM Mainframe: investigar de forma estruturada, compreender a arquitetura completa e seguir o caminho da requisição do início ao fim.

Em um banco moderno, uma simples consulta de saldo pode atravessar DNS, balanceadores, Ingress, Services, Pods, APIs, mensageria, aplicações Java, programas COBOL, CICS e DB2 antes de retornar ao cliente. Quando entendemos essa jornada, percebemos que um erro como o 502 deixa de ser um mistério e passa a ser um sintoma que aponta para a próxima etapa da investigação.

No fim das contas, a tecnologia muda, os nomes evoluem e as plataformas se modernizam, mas os princípios permanecem os mesmos: conhecer a arquitetura, observar cuidadosamente os sinais do sistema e investigar cada camada até encontrar a verdadeira causa raiz. É assim que trabalham os SREs, os engenheiros DevOps e os especialistas em IBM Z responsáveis por manter, todos os dias, milhões de transações bancárias funcionando com segurança e disponibilidade quase absoluta.


terça-feira, 21 de agosto de 2018

☕🔥 TCP/IP NO IBM MAINFRAME — A INTERNET MODERNA AINDA DEPENDE DOS COMANDOS QUE O z/OS DOMINA HÁ DÉCADAS

 

Bellacosa Mainframe e os comandos tcp/ip no mainframe

☕🔥 TCP/IP NO IBM MAINFRAME — A INTERNET MODERNA AINDA DEPENDE DOS COMANDOS QUE O z/OS DOMINA HÁ DÉCADAS

Existe uma ilusão muito comum no mundo da tecnologia:

“Mainframe é isolado da internet.”

Só que a realidade é exatamente o contrário.

O IBM Mainframe é um dos ambientes mais conectados do planeta.

Todos os dias o z/OS conversa com:

  • APIs REST

  • aplicações mobile

  • cloud

  • PIX

  • cartões

  • bolsas financeiras

  • sistemas globais

  • Open Banking

  • Kafka

  • Kubernetes

E tudo isso depende de uma coisa:

🔥 TCP/IP.


☕ O QUE MUITA GENTE NÃO SABE

O Mainframe foi um dos primeiros ambientes corporativos a operar redes gigantescas com:

  • altíssima disponibilidade

  • throughput absurdo

  • tolerância a falhas

  • segurança pesada

  • roteamento complexo

Enquanto muita infraestrutura moderna reinicia containers…

o z/OS continua processando transações críticas há décadas.


☕🔥 PING — O “ARE YOU ALIVE?” DA INFRAESTRUTURA

O famoso:

ping google.com

parece simples.

Mas ele representa algo fundamental:

🔥 conectividade básica.


☕ O QUE O PING REALMENTE FAZ?

Usa:

ICMP Echo Request

para verificar:

  • alcance

  • latência

  • disponibilidade


☕ No Mainframe isso também é essencial

Ambientes z/OS usam:

  • TCP/IP stack

  • VTAM

  • OSA adapters

  • Sysplex networking


☕ Problema clássico

Aplicação CICS não responde.

O operador imediatamente pensa:

É rede?
É DNS?
É rota?
É firewall?

☕ Bellacosa Mainframe Analysis™

Ping é o:

🔥 “DISPLAY STATUS” da internet.


☕🔥 TRACERT / TRACEROUTE — O GPS DOS PACOTES

Agora entramos numa ferramenta fantástica.


☕ Exemplo:

tracert ibm.com

☕ O que isso mostra?

Cada salto da rede:

HOST
 ↓
ROUTER
 ↓
BACKBONE
 ↓
DESTINO

☕ No Mainframe isso lembra fortemente:

  • análise VTAM

  • troubleshooting SNA

  • rotas TCP/IP

  • OSA networking


☕ Grandes bancos vivem disso

Porque latência impacta:

  • PIX

  • cartão

  • bolsa financeira

  • APIs

Milissegundos importam.


☕🔥 NSLOOKUP — O “CATÁLOGO” DA INTERNET

DNS é uma das coisas mais subestimadas da computação.


☕ Exemplo:

nslookup openai.com

☕ O DNS traduz:

NOME → IP

☕ Sem DNS?

🔥 metade da internet parece “quebrada”.


☕ No Mainframe isso lembra:

  • HOST tables

  • VTAM naming

  • enterprise DNS

  • Sysplex resolution


☕ Problema clássico corporativo

Aplicação funciona por IP…

mas não por hostname.

O operador já sabe:

👉 DNS.


☕🔥 NETSTAT — O SDSF DAS CONEXÕES TCP/IP

Agora chegamos numa das ferramentas mais poderosas.


☕ Exemplo:

netstat -an

☕ Isso mostra:

  • conexões ativas

  • portas abertas

  • sockets

  • estados TCP


☕ No z/OS isso é extremamente importante

Existe literalmente:

NETSTAT CONN

☕ O operador Mainframe usa isso para:

  • troubleshooting

  • segurança

  • análise de portas

  • throughput

  • debugging de aplicações


☕ Estados TCP clássicos

ESTABLISHED
TIME_WAIT
LISTEN
CLOSE_WAIT

☕ CLOSE_WAIT excessivo?

🔥 possível vazamento de conexão.


☕ LISTEN em porta inesperada?

🔥 possível risco de segurança.


☕🔥 ARP -A — O “RACF DA REDE LOCAL”

Agora entramos numa área fascinante.


☕ Exemplo:

arp -a

☕ Isso mostra:

IP ↔ MAC ADDRESS

☕ Em redes corporativas isso é vital

Porque permite:

  • identificar dispositivos

  • rastrear hosts

  • detectar conflitos

  • investigar spoofing


☕ Cybersecurity ama ARP

Porque ataques clássicos incluem:

  • ARP poisoning

  • spoofing

  • MITM


☕ O Mainframe também depende disso

Principalmente em ambientes:

  • OSA Express

  • HiperSockets

  • Sysplex networking


☕🔥 IPCONFIG /FLUSHDNS — O “REFRESH” DA INTERNET

Agora uma ferramenta simples… mas extremamente útil.


☕ Exemplo:

ipconfig /flushdns

☕ O que isso faz?

Limpa cache DNS local.


☕ Parece pequeno…

Mas resolve MUITOS problemas.


☕ Situação clássica

Servidor mudou IP.

Cache ainda guarda endereço antigo.

Tudo parece quebrado.


☕ Flush DNS resolve.


☕ Bellacosa Mainframe Analysis™

Isso lembra muito:

VARY TCPIP,,OBEYFILE

ou refresh de cache em sistemas corporativos.


☕🔥 TELNET — O DINOSSAURO QUE AJUDOU A CONSTRUIR A INTERNET

Muita gente hoje vê Telnet como:

  • antigo

  • inseguro

  • ultrapassado

Mas historicamente ele foi revolucionário.


☕ Exemplo:

telnet servidor 80

☕ Isso testa:

  • conectividade

  • portas

  • serviços remotos


☕ No Mainframe?

Telnet foi GIGANTE.


☕ Terminais 3270 TCP/IP usaram isso por anos

Inclusive muitos ambientes z/OS ainda suportam:

  • TN3270

  • sessões remotas

  • emulação terminal


☕ Hoje SSH domina

Mas Telnet ainda aparece em:

  • troubleshooting

  • redes antigas

  • equipamentos legados


☕🔥 TCP/IP NO MAINFRAME NÃO É “ADAPTAÇÃO”

Isso é importante entender.

O z/OS não “aprendeu internet depois”.

Ele evoluiu junto com ela.


☕ Hoje o IBM Z suporta:

✅ IPv6
✅ TLS moderno
✅ APIs REST
✅ Open Banking
✅ MQ
✅ Kafka
✅ HTTP/2
✅ Web Services
✅ FTP/SFTP
✅ TN3270
✅ HiperSockets


☕🔥 HIPERSOCKETS — A “REDE QUÂNTICA” DO MAINFRAME

Pouca gente fora do z/OS conhece isso.

HiperSockets permitem comunicação interna:

🔥 sem passar fisicamente pela rede.


☕ Resultado?

  • latência absurdamente baixa

  • throughput gigante

  • segurança enorme


☕ Isso é perfeito para:

  • CICS

  • DB2

  • MQ

  • Sysplex


☕🔥 SYSPLEX — QUANDO VÁRIOS MAINFRAMES VIRAM UM “SUPER SISTEMA”

Aqui entramos em outro nível.

No Sysplex:

  • múltiplos z/OS cooperam

  • compartilham workload

  • compartilham dados

  • compartilham filas


☕ E tudo depende fortemente de networking

Porque no fundo:

🔥 o Mainframe moderno é um ecossistema distribuído gigantesco.


☕🔥 O QUE O MAINFRAME ENSINA SOBRE REDES

O mundo moderno descobriu:

  • observabilidade

  • latência

  • tracing

  • resiliência

  • failover

Mas o Mainframe já vivia isso há décadas.


☕ Porque quando você processa:

  • bilhões de dólares

  • bolsas financeiras

  • cartões globais

  • sistemas bancários

rede deixa de ser detalhe.

Rede vira:

🔥 missão crítica.


☕🔥 CONCLUSÃO — A INTERNET MODERNA AINDA PASSA PELO z/OS

Ping, Netstat, DNS e TCP/IP parecem ferramentas simples.

Mas por trás delas existe toda a engenharia que mantém:

  • bancos online

  • PIX funcionando

  • APIs financeiras

  • sistemas globais

  • transações em tempo real

E talvez essa seja a maior verdade sobre o Mainframe moderno:

Ele nunca ficou fora da internet.

🔥 A internet corporativa sempre passou silenciosamente por ele.

quinta-feira, 24 de outubro de 2013

☕🔥 NETWORKING NO IBM MAINFRAME — AS SIGLAS QUE MOVEM A INTERNET, OS BANCOS E O MUNDO SILENCIOSAMENTE

 

Bellacosa Mainframe numa visão ao networking no ibm

☕🔥 NETWORKING NO IBM MAINFRAME — AS SIGLAS QUE MOVEM A INTERNET, OS BANCOS E O MUNDO SILENCIOSAMENTE

Existe uma coisa fascinante no universo de redes:

🔥 praticamente toda a internet moderna funciona baseada em siglas.

IP.
DNS.
TCP.
TLS.
BGP.
VLAN.
MPLS.

Para muita gente isso parece apenas:

“letras técnicas aleatórias”.

Mas no universo corporativo REAL…

essas siglas sustentam:

  • bancos

  • bolsas financeiras

  • cloud

  • PIX

  • streaming

  • APIs

  • telecom

  • datacenters globais

E quando olhamos isso ao estilo Bellacosa Mainframe…

descobrimos algo impressionante:

o IBM Mainframe domina muitos desses conceitos há décadas.


☕🔥 IP — O “CPF” DA INTERNET

Tudo começa aqui.

IP = Internet Protocol


☕ O IP é o endereço do dispositivo.

Exemplo:

192.168.1.1

☕ Sem IP?

Nada conversa.


☕ Bellacosa Mainframe Analysis™

IP é como:

🔥 RACF ID da rede.

Cada sistema precisa de identidade única.


☕ No Mainframe isso é crítico

Porque o z/OS conversa com:

  • APIs

  • bancos

  • clouds

  • aplicações distribuídas

  • parceiros externos


☕ O TCP/IP stack do z/OS é absurdamente poderoso

E suporta:

✅ IPv4
✅ IPv6
✅ HiperSockets
✅ Sysplex Distributor
✅ TLS moderno


☕🔥 MAC ADDRESS — A “IDENTIDADE FÍSICA” DA PLACA

Agora descemos um nível.


☕ MAC Address é:

identidade da interface de rede

☕ Exemplo:

00:1A:2B:3C:4D:5E

☕ No Mainframe isso importa MUITO

Especialmente em:

  • OSA-Express

  • HiperSockets

  • redes corporativas críticas


☕ Cybersecurity usa MAC para:

  • rastrear dispositivos

  • detectar spoofing

  • auditoria de rede


☕🔥 LAN vs WAN — O MUNDO LOCAL vs O MUNDO GLOBAL


☕ LAN

Local Area Network

Rede interna.


☕ WAN

Wide Area Network

Rede geograficamente distribuída.


☕ O Mainframe vive nos dois mundos

LAN

Datacenter local.

WAN

Filiais, bancos, nuvem, parceiros.


☕ Grandes bancos possuem:

🔥 WANs monstruosas globais.


☕🔥 DNS — O “CATÁLOGO TELEFÔNICO” DA INTERNET

DNS traduz:

nome → IP

☕ Exemplo:

google.com
↓
142.x.x.x

☕ Sem DNS…

a internet parece quebrada.


☕ No Mainframe isso lembra:

  • HOST tables

  • VTAM naming

  • resolução corporativa


☕ Problema clássico

Aplicação responde via IP.

Mas hostname falha.

🔥 DNS.


☕🔥 DHCP — O “OPERADOR AUTOMÁTICO” DE ENDEREÇOS

DHCP entrega IP automaticamente.


☕ Sem DHCP…

seria necessário configurar tudo manualmente.


☕ Em ambientes Mainframe modernos isso aparece em:

  • ambientes híbridos

  • Linux on Z

  • virtualização

  • containers


☕🔥 HTTP vs HTTPS — O NASCIMENTO DA INTERNET SEGURA


☕ HTTP

Comunicação web básica.


☕ HTTPS

HTTP + criptografia TLS.


☕ Hoje HTTPS é obrigatório

Porque tráfego puro é perigoso.


☕ No z/OS isso é gigantesco

Especialmente com:

  • Open Banking

  • APIs REST

  • PIX

  • mobile banking


☕ Mainframe trabalha pesado com:

🔥 TLS acceleration.


☕ Porque criptografia em massa custa CPU.


☕🔥 FTP — O “DINOSSAURO” QUE AINDA MOVE ARQUIVOS CORPORATIVOS

Muita gente acha FTP morto.

Não está.


☕ Grandes empresas ainda trocam:

  • arquivos batch

  • remessas

  • integrações

  • cargas massivas

via FTP/SFTP.


☕ Mainframe sempre foi rei nisso

Especialmente em:

  • JES spool transfer

  • datasets

  • integração bancária


☕🔥 VPN — O “TÚNEL SECRETO” CORPORATIVO

VPN cria comunicação segura.


☕ Em bancos isso é crítico

Porque dados precisam atravessar:

  • internet pública

  • parceiros

  • filiais

com segurança.


☕ Bellacosa Mainframe Analysis™

VPN é como:

🔥 um túnel criptografado entre LPARs globais.


☕🔥 SSL/TLS — O “RACF” DA INTERNET

Agora entramos no coração da segurança moderna.


☕ TLS protege:

  • autenticação

  • integridade

  • confidencialidade


☕ Sem TLS:

🔥 qualquer interceptação vira desastre.


☕ O z/OS leva isso extremamente a sério

Com:

  • AT-TLS

  • RACF certificates

  • SAF integration


☕ Mainframe é obcecado por segurança

Porque precisa ser.


☕🔥 IDS & IPS — O “SEGURANÇA OPERACIONAL” DA REDE


☕ IDS

Detecta ataques.


☕ IPS

Bloqueia ataques.


☕ Isso lembra MUITO:

  • RACF alerts

  • SMF analysis

  • SIEM

  • automação NetView


☕ Hoje IA ajuda muito nisso

Especialmente em:

  • detecção comportamental

  • anomalias

  • tráfego suspeito


☕🔥 TCP vs UDP — CONFIABILIDADE vs VELOCIDADE

Agora chegamos numa das comparações mais clássicas da rede.


☕ TCP

Confiável.

Confirma entrega.


☕ UDP

Mais rápido.

Não garante entrega.


☕ TCP é perfeito para:

✅ bancos
✅ APIs
✅ DB2
✅ transações


☕ UDP é excelente para:

✅ streaming
✅ voz
✅ games
✅ realtime


☕ O Mainframe ama TCP

Porque:

🔥 integridade vem antes da velocidade.


☕🔥 ARP — O “WHO ARE YOU?” DA REDE

ARP traduz:

IP → MAC

☕ Parece pequeno…

Mas é fundamental.


☕ Sem ARP:

máquinas locais não se encontram.


☕🔥 VLAN — A “LPAR” DAS REDES

Agora vem uma analogia maravilhosa.


☕ VLAN segmenta redes logicamente.


☕ Isso lembra MUITO:

🔥 LPARs no Mainframe.


☕ Porque ambas fazem:

  • isolamento

  • segurança

  • separação lógica

  • organização


☕ Grandes bancos usam VLANs agressivamente.


☕🔥 NAT — O “TRADUTOR” DA INTERNET

NAT converte:

IP privado ↔ IP público

☕ Isso permite milhares de dispositivos compartilharem poucos IPs públicos.


☕ Sem NAT…

IPv4 já teria colapsado há muito tempo.


☕🔥 QoS — QUANDO A REDE APRENDE PRIORIDADE

QoS define:

🔥 quem tem prioridade.


☕ Exemplo:

PIX > YouTube corporativo.


☕ Em ambientes críticos isso é vital

Porque latência impacta:

  • trading

  • bancos

  • telecom

  • APIs realtime


☕🔥 BGP — O “JES2 DA INTERNET”

Agora entramos numa das peças mais importantes da internet mundial.


☕ BGP decide:

🔥 rotas globais entre provedores.


☕ Sem BGP…

a internet moderna entra em caos.


☕ Bellacosa Mainframe Analysis™

BGP lembra:

roteamento JES2/NJE gigantesco global

☕🔥 OSPF — O GPS CORPORATIVO

OSPF encontra melhor rota internamente.


☕ Muito usado em:

  • datacenters

  • backbone corporativo

  • grandes empresas


☕🔥 MPLS — A “REDE PREMIUM” CORPORATIVA

MPLS cria rotas eficientes e controladas.


☕ Bancos amam MPLS

Porque entrega:

✅ previsibilidade
✅ baixa latência
✅ controle
✅ QoS


☕🔥 O QUE O MAINFRAME ENSINA SOBRE REDES

O mercado moderno fala muito sobre:

  • observabilidade

  • resiliência

  • segurança

  • distribuição

Mas o Mainframe vive disso há décadas.


☕ Porque sistemas críticos exigem:

🔥 networking impecável.


☕ Quando bilhões dependem da rede…

“reiniciar e torcer” deixa de ser estratégia.


☕🔥 CONCLUSÃO — A INTERNET CORPORATIVA SILENCIOSAMENTE PASSA PELO MAINFRAME

IP, DNS, TLS, BGP e TCP parecem apenas siglas.

Mas por trás delas existe:

  • engenharia

  • segurança

  • confiabilidade

  • infraestrutura global

E talvez essa seja a maior verdade invisível da computação moderna:

enquanto o mundo fala sobre cloud…

🔥 o Mainframe continua sustentando silenciosamente as redes mais críticas do planeta.