INTRODUÇÃO
Este portfólio de aula prática de sistemas distribuídos reúne um
conjunto de atividades que abordam aspectos fundamentais para o
funcionamento eficiente de redes e sistemas em ambientes distribuídos.
A sincronização de relógios entre máquinas servidoras e clientes é crucial
para a operação adequada de diversos serviços, como autenticação de
usuários e acesso remoto. Para isso, a primeira atividade se dedica à
configuração do protocolo NTP (Network Time Protocol) em sistemas
operacionais GNU/Linux e Windows, garantindo que todos os dispositivos
envolvidos operem com horários sincronizados.
Outra habilidade essencial em ambientes distribuídos é a
criação e gerenciamento de máquinas virtuais, abordada na
segunda atividade. O uso de um sistema operacional como
CentOS, através do software Oracle VM VirtualBox permite a
simulação e o teste de sistemas de forma isolada e controlada.
Isso é de grande importância para a replicação de ambientes
reais e para o estudo de novas ferramentas e configurações.
A terceira atividade introduz o uso do Docker para orquestrar
servidores web em clusters, permitindo uma visão prática do
conceito de escalabilidade e alta disponibilidade. Por meio da
plataforma “ Play With Docker”, é possível criar e gerenciar
réplicas de servidores Apache em um ambiente de laboratório,
facilitando a experimentação e o aprendizado do uso de containers em
sistemas distribuídos. Finalmente, a última atividade explora o uso
do Wireshark, um poderoso analisador de pacotes de rede, que permite
capturar, inspecionar e analisar o tráfego em uma rede em tempo real.
Este tipo de ferramenta é essencial para o diagnóstico de
problemas em redes e para a compreensão detalhada do
funcionamento de protocolos de comunicação.
Com estas atividades, o portfólio proporciona uma formação
prática sólida em áreas fundamentais dos sistemas distribuídos,
preparando o aluno para lidar com desafios comuns em redes e
infraestruturas computacionais distribuídas.
MÉTODOS E RESULTADOS
Atividade 1 – Conceitos de Sistemas Distribuídos
A sincronização de relógios entre máquinas cliente e
servidor é um aspecto fundamental em sistemas distribuídos,
especialmente em serviços sensíveis ao tempo, como acesso remoto
e autenticação de usuários. Discrepâncias significativas no horário entre
esses sistemas podem comprometer a funcionalidade de diversos
serviços, o que torna a configuração do Network Time Protocol (NTP)
essencial para garantir a precisão temporal.
Nesta atividade prática, realizei a configuração do servi ço NTP
em dois ambientes distintos: GNU/Linux Ubuntu Desktop 18.04.1 e
Windows 10. A seguir, apresento as etapas executadas para
habilitar a sincronização horária em cada sistema operacional, bem
como as observações realizadas durante o processo.
1. Procedimentos Realizados
Configuração do NTP no Ubuntu 18.04.1
Instalação do Serviço NTP
A configuração i nicial foi realizada através d a instalação do
serviço NTP no Ubuntu. Para isso, utilizei o terminal e o gerenciador de
pacotes ap t com o comando:
sudo apt install ntp
Após a instalação, foi necessário verificar o sucesso da operação
e documentar o procedimento com capturas de tela, conforme solicitado.
Edição do Arquivo de Configuração
O próximo passo envolveu a edição do arquivo de configuração
do NTP, localizado em /etc/[Link], utilizando o editor de texto
nano. Se guindo as instruções, foram removidas as linhas que
faziam referência aos pools padrão d o Ubuntu e substituídas pelo
pool brasileiro:
pool [Link].
Após a reinicialização, a sincronização foi verificada utilizando o
comando ntpq -p, que lista os servidores de tempo consultados e
exibe o status da sincronização.
2. Configuração do NTP no Windows 10
Acesso ao Prompt de Comando
No Windows 10, o processo foi iniciado com a abertura do
Prompt d e Comando (CMD) em modo administrador, onde foi
inserido o seguinte co mando para configurar o NTP:
w32tm /config /syncfromflags:manual /manualpeerlist:[Link]
Este comando direciona o sistema para sincronizar o horário com
o servidor [Link], g arantindo que a máquina cli ente esteja
a justada de a cordo com um servidor confiável.
Reinicialização do Serviço de Data e Hora
Após a configuração do NTP, foi necessário reiniciar o serviço de
data e hora para que as alterações surtissem efeito. Os comandos
utilizados foram:
net stop w32time
net start w32time
Esses comandos interrompem e reiniciam o serviço responsável
pela sincronização de tempo no Windows.
Forçando a Sincronização
Para verificar o sucesso da configuração, utilizei o comando:
w32tm /resync /rediscover
A saída desse comando indicou que a sincronização foi realizada
com sucesso, confirmando que o sistema estava corretamente ajustado.
Criação do Disco Rígido Virtual
Escolhi criar um no vo disco rígido vi rtual (VDI) com capacidade
de 20 GB. Esse espaço seria suficiente para a instalação do
sistema e para armazenar arquivos e programas necessários para testes
futuros.
Configuração de Armazenamento
Após a criação do disco virtual, acessei as configurações da
máquina e selecionei a opção Armazenamento. Em seguida, no
menu de Controladora IDE, inseri a imagem ISO do CentOS no leitor de
CD virtual. Isso simula a inserção de um CD de in stalação físico,
necessário para iniciar o processo de instalação do sistema
operacional na máquina virtual.
3. Instalação do Sistema Operacional
Com a máquina virtual configurada, cliquei no botão Iniciar e segui as
etapas de instalação do CentOS. O processo incluiu:
Seleção da linguagem e layout de teclado.
Configuração do disco para instalação, utilizando todo o espaço
disponível no disco virtual previamente criado.
Definição do fuso horário e configuração da senha de root.
A instalação foi concluída após alguns minutos, e o sistema foi reiniciado
automaticamente, completando a criação da máquina virtual.
4. Testes e Verificação
Após a instalação, realizei alguns testes para garantir que o sistema estava
funcionando corretamente:
Verifiquei se o sistema foi capaz de acessar a internet a partir da rede
NAT configurada no VirtualBox.
Conferi a alocação correta de memória e a utilização do disco
rígido virtual.
Testei comandos básicos de administração no CentOS, como yum
update, para garantir que o sistema estava configurado
corretamente e que era possível realizar a atualização dos pacotes.
A atividade prática de criação de uma máquina virtual utilizando o Oracle
VM VirtualBox e o CentOS como sistema operacional foi realizada
com sucesso. A experiência permitiu consolidar conceitos de
virtualização, além de reforçar a importância da configuração
adequada de recursos como memória e armazenamento para
garantir o desempenho da máquina virtual. Adicionalmente, a prática
demonstrou a flexibilidade do Vi rtualBox em suportar diferentes
distribuições de sistemas operacionais GNU/Linux, sendo uma ferramenta
valiosa para ambientes de teste e desenvolvimento
Conferi a alocação correta de memória e a utilização do disco
rígido virtual.
Testei comandos básicos de administração no CentOS, como yum
update, para garantir que o sistema estava configurado
corretamente e que era possível realizar a atualização dos pacotes. A
atividade prática de criação de uma máquina virtual utilizando o Oracle
VM VirtualBox e o CentOS como sistema operacional foi realizada com
sucesso. A experiência permitiu consolidar conceitos de virtualização,
além de reforçar a importância da configuração adequada de recursos
como memória e armazenamento para garantir o desempenho da
máquina virtual. Adicionalmente, a prática demonstrou a flexibilidade do
VirtualBox em suportar diferentes distribuições de sistemas
operacionais GNU/Linux, sendo uma ferramenta valiosa para ambientes
de teste e desenvolvimento. Por fim, a criação de máquinas virtuais
se mostrou uma habilidade crucial para a ad ministração de
sistemas distribuídos, proporcionando um ambiente seguro para
realizar testes e desenvolver soluções sem comprometer a
máquina física hospedeira.
Atividade 3 - Conteinerização Com Docker
Nesta atividade prática, o objetivo foi compreender o processo
de orquestração de serviços utilizando o Docker Swarm, uma
ferramenta integrada ao Docker que permite a criação e
gerenciamento de clusters de containers. A proposta incluiu a criação de
um cluster com três nós, onde foi configurado um serviço web replicado
utilizando o Apache HTTP Se rver. A atividade foi conduzida por
meio da plataforma online Play with Docker, que fornece um
ambiente de testes ideal para simulação de clusters e containers.
O primeiro passo foi acessar o site oficial do Docker para fazer o
download do Docker Desktop. Entretanto, a prática foi realizada no
ambiente Play with Do cker, que permite a simulação de clusters
sem necessidade de instalar o Docker localmente.
A plataforma foi acessada a través d o link Play with Docker , e após
o login, foi possível iniciar um ambiente de laboratório virtual para
executar os comandos do Docker.
Criação do Cluster com Três Nós
O cluster foi criado com três nós, sendo um nó manager e
dois workers, seguindo os passos abaixo:
Adição de Instâncias (Nós)
Utilizei a função Add new instance para adicionar três instâncias,
que atuariam como os nós do cluster. Cada instância representa
um nó, n o qual os containers do serviço Apache rodariam.
Inicialização do Docker Swarm
No nó designado como manager, executei o comando para
inicializar o Swarm:
Criação e Orquestração do Serviço Apache com Docker
Com o cluster configurado, o próximo passo foi a cri ação e a
distribuição do serviço web Apache (HTTP Server) nas três
réplicas. O se rviço foi orquestrado e
forma distribuída, garantindo alta disponibilidade.
Criação do Serviço Apache
No nó manager, criei um serviço com cinco réplicas do servidor
Apache, utilizando o seguinte comando:
docker service create --name WEB --publish 80:80 --replicas=5 httpd
Esse comando configurou cinco containers do servidor Apache,
distribuídos automaticamente nos três nós do cluster. A porta 80 foi
mapeada para o acesso a o serviço web.
Verificação das Réplicas nos Nós
Para verificar em quais nós as réplicas do serviço Apache
estavam sendo executadas, utilizei o comando:
Nesta atividade prática, foi realizada a captura de pacotes de rede
utilizando o Wireshark, com o objetivo de compreender se u
funcionamento e como os dados são filtrados e analisados dentro da
ferramenta.
1. Procedimentos Realizados
Download e Instalação do Wireshark
O primeiro passo foi realizar o download do Wireshark através do
site oficial:
Wireshark Download . Após o download, o software foi instalado no
sistema operacional local, seguindo o processo padrão de instalação.
Iniciando o Wireshark
Após a instalação, o Wireshark foi aberto e sua interface inicial
foi analisada. A tela principal exibe as opções de captura de
pacotes, as interfaces de rede disponíveis e os menus de
configuração e análise.
No menu superior, estão disponíveis funções como Capture,
Analyze, e Statistics, que são fundamentais para a utilização da ferramenta.
2. Seleção da Interface de Rede e Captura de Pacotes
Para iniciar a captura dos pacotes de rede, foi necessário
selecionar uma interface de rede ativa. No menu Capture, se
lecionei a opção Options, que abriu uma janela listando todas as
interfaces d isponíveis no computador. Optei pela interface Wi-Fi,
que estava conectada à rede sem fio local. Com a interface selecionada,
cliquei no botão Start para iniciar a captura de pacotes. O
Wireshark começou a capturar todos os pacotes trafegados pela
rede, exibindo-os em tempo real na tela principal. Cada pacote
capturado era exibido em uma linha da tabela, com informações
sobre o protocolo utilizado, o endereço de origem e destino, e o
tamanho do pacote.
3. Filtragem de Pacotes
A captura de pacotes gerou uma grande quantidade de dados,
o que pode dificultar a análise manual. Para facilitar a
visualização dos pacotes relevantes, foi
necessário utilizar os filtros de exibição oferecidos pelo Wireshark.
No menu Analyze, selecionei a opção Display Filter Expression,
que abriu a caixa de diálogo de construção de filtros. Essa caixa
permite criar filtros personalizados para visualizar apenas os
pacotes de interesse. Utilizei um filtro básico para exibir apenas
os pacotes do p rotocolo HTTP, digitando o filtro “http” na barra
de filtros e aplicando-o. C om isso, a tabela de pacotes foi reduzida,
mostrando apenas as comunicações relacionadas ao protocolo HTTP.
4. Análise Detalhada dos Pacotes
Após filtrar os pacotes capturados, foi possível realizar uma análise
detalhada de cada pacote. Ao selecionar um pacote específico na
lista, o Wireshark exibiu informações detalhadas em três níveis:
Camada de Enlace: Contém detalhes sobre o protocolo de
enlace utili zado, como Ethernet, incluindo os endereços MAC de origem e
destino.
Camada de Rede: Exibe informações sobre os protocolos da
camada de rede, como IPv4 ou IPv6, incluindo os endereços IP de origem e
destino.
Camada de Transporte: Mostra os detalhes dos protocolos de
transporte, como TCP ou UDP, incluindo números de porta e controle de
fluxo. Essas informações permitiram a análise completa de cada
comunicação, ajudando a entender como os dados são transferidos
e processados ao longo da rede.
5. Finalização da Captura
Após coletar dados suficientes para análise, finalizei a captura de
pacotes clicando no botão Stop. O Wireshark permitiu salvar o
arquivo da captura em um formato padronizado (PC AP), que pode ser
reaberto para futuras análises ou compartilhado com outros profissionais de
rede.
A atividade prática com o Wireshark proporcionou uma compreensão
detalhada
de como um analisador de pacotes de rede funciona e como ele pode ser
utilizado para monitorar, capturar e analisar dados trafegados em uma
rede. A ferramenta se mostrou essencial para a análise de protocolos
e resolução de problemas em redes de computadores. Ao utilizar filtros de
exibição e recursos de análise detalhada de pacotes, foi
possível identificar e estudar diferentes p protocolos de rede, como HTTP
e TCP, além de compreender como a comunicação ocorre entre
dispositivos conectados à rede. Essa prática é valiosa não apenas para
administradores de redes, mas também para desenvolvedores de software
e pesquisadores que desejam entender o comportamento de seus sistemas
em ambientes distribuídos.
O Wireshark se destacou pela sua interface amigável, ampla documentação
e a capacidade de fornecer uma visão detalhada das camadas da pilha de
protocolos, tornando-se uma ferramenta indispensável para quem trabalha
com redes de computadores.