RELATÓRIO DE AULA PRÁTICA – SISTEMAS DISTRIBUÍDOS
Aluno: Leonardo Machado Soares
RA: 3517823306
Curso: Superior de Tecnologia em Computação em Nuvem
Disciplina: Sistemas Distribuídos
Unidade: Campo Grande/MS – Matriz 7484667
SUMÁRIO
1 INTRODUÇÃO ................................................................................................1
2 DESENVOLVIMENTO ...................................................................................2
2.1 ATIVIDADE 01 - SINCRONIZAÇÃO NTP ................................................2
2.1.1 Introdução ....................................................................................................2
2.1.2 Desenvolvimento .........................................................................................2
2.1.3 Conclusão ...................................................................................................12
2.2 ATIVIDADE 02 - VIRTUALIZAÇÃO VM .................................................13
2.2.1 Introdução ...................................................................................................13
2.2.3 Conclusão ....................................................................................................19
2.3 ATIVIDADE 03 - CONTAINERIZAÇÃO COM DOCKER ........................19
2.3.1 Introdução ....................................................................................................19
2.3.2 Desenvolvimento .........................................................................................20
2.3.3 Conclusão ....................................................................................................28
2.4 ATIVIDADE 04 - ANALISADOR DE PACOTES WIRESHARK ............. 28
2.4.1 Introdução ....................................................................................................28
2.4.2 Desenvolvimento .........................................................................................29
2.4.3 Conclusão ....................................................................................................34
3 CONCLUSÃO GERAL ....................................................................................34
4 REFERÊNCIAS ................................................................................................35
1 INTRODUÇÃO
Nesta atividade prática, foi proposto 4 atividades sobre fundamentos da disciplia de
Sistemas Distribuídos, sendo elas as seguintes:
1. Sincronização NTP
Nesta atividade prática, você aplicará a sincronização relógios através
de servidor NTP em sistema operacional Linux e Windows.
2. Virtualização e conteinerização - Virtualização VM
Nesta atividade prática, você fará a criação de máquina virtual com sistema
operacional GNU/Linux.
3. Virtualização e conteinerização - Conteinerização com Docker:
Nesta atividade prática, você compreenderá como orquestrar o servidor web
Apache em um cluster simples através do Docker.
4. Segurança em sistemas distribuídos: Compreender como um
analisador de protocolos funciona. Trabalharemos com o Wire Shark
2 Desenvolvimento
2.1 Atividade 01 - Sincronização NTP
2.1.1 Introdução
A sincronização NTP é um processo que permite que os relógios de dispositivos
de uma rede sejam sincronizados, utilizando um protocolo de tempo. O NTP é a
sigla para Network Time Protocol, que significa "Protocolo de Tempo para
Redes".
O NTP é utilizado para sincronizar relógios de computadores, estações de
trabalho, roteadores e outros equipamentos. A sincronização é feita com base em
referências de tempo confiáveis, como os relógios atômicos do Observatório
Nacional. Abaixo segue como fazer a instalação do protocolo NTP no Linux e no
Windows.
2.1.2 DESENVOLVIMENTO
Realizando o exercício:
Para a realização desta experiência em ambiente Linux foi utilizada uma máquina
virtual no VirtualBox 7.0.14 com a distribuição Ubuntu 20.04.6 LTS (Focal Fossa).
Passo 1. Abra o Terminal, pressionando as teclas “CTRL + T” do teclado
Passo 2. Instale o serviço “ntp” através do gerenciador de pacotes “apt”, com o
comando: sudo apt install ntp
Pacote NTP instalado com sucesso. Comando sudo apt install ntp
Passo 3. Uma vez instalado o serviço, precisamos editar o arquivo de
configuração do mesmo. Comando 2: sudo nano /etc/[Link]
O roteiro da aula aqui, nos indica de remover os endereços já na configuração e inserir
o endereço do servidor do tempo brasileiro.
Passo 4. Devemos remover essas informações, o que está abaixo da frase # Specify one
or more NTC servers pressionando a tecla "DELETE" do teclado, até apagar tudo.
(Tudo que começar com pool 1,2,3,...) Ou seja, temos que excluir essas informações do
arquivo [Link].
Passo 5. Agora devemos incluir, onde excluímos os dados no passo anterior, na linha
abaixo do: # Specify one or more NTC servers.
O comando: pool [Link]
Passo 6. Salve essas alterações digitando "CTRL + X" no teclado, depois "S", e por
fim, "ENTER".
Passo 7. Reinicie o serviço ntp para ele utilizar essa nova configuração, com o servidor
do [Link], com o comando 3.
Comando 3: sudo service ntp restart
Passo 8. Feito isso, o serviço estará configurado adequadamente e já estará
funcionando, consultando um conjunto de servidores NTP através da Internet.
Adicionalmente, para fazer uma consulta manual e pontual, você poderá digitar o
seguinte comando no Terminal: ntpq -p.
Comando: ntpq -p
Procedimento no Windows
Para realizar essa configuração em um sistema operacional Windows:
Passo 1. Abra o Prompt de Comando (CMD), pressionando as teclas "WINKEY +
R" do teclado, digitando "cmd" e OK.
Passo 2. Na janela do CMD vamos inserir o código a seguir e pressionar a tecla
"Enter".
Código: w32tm /config /syncfromflags:manual
/manualpeerlist:[Link]
Observamos que ao final do comando aparece a mensagem “ O comando foi concluído
com sucesso”.
Passo 3. Vamos utilizar o comando "net stop w32time" e "net start w32time" para parar
o serviço e iniciar, reiniciando-o.
Comando para Parar: net stop w32time
Comando para Iniciar: net start w32time
Após isso vamos forçar uma sincronização de data e hora para verificar se está tudo
funcionando corretamente.
Passo 4. Podemos forçar uma sincronização através do comando "w32tm
/resync /rediscover".
Através da saída podemos observar que nossa configuração foi feita com sucesso
2.1.3 CONCLUSÃO
O NTP, se corretamente utilizado, é capaz de garantir as propriedades necessárias ao
relógio do computador para o bom funcionamento das aplicações. Num primeiro
momento isso pode parecer algo muito simples: "consultar o tempo em um servidor" e
"ajustar o relógio local" de tempos em tempos. Mas na verdade o NTP faz muito mais
do que isso.
Uma característica básica e ao mesmo tempo importante do tempo é que ele sempre
avança. O tempo não para e não volta atrás. Vários programas de computador fazem
uso dessa característica e podem ter seu funcionamento comprometido se o relógio do
computador inesperadamente passar a indicar um horário errado, especialmente se for
um horário no passado. Isso se complica ainda mais na Internet, com vários
computadores trocando informações entre si. Diante disso conseguimos perceber a
importância do Protocolo NTP.
2.2 ATIVIDADE 02 - VIRTUALIZAÇÃO E CONTEINERIZAÇÃO –
VIRTUALIZAÇÃO VM
2.2.1 INTRODUÇÃO
A virtualização é uma tecnologia que usa recursos tradicionalmente vinculados ao
hardware. Com ela, é possível usar toda a capacidade de uma máquina física,
distribuindo seus recursos entre muitos usuários ou ambientes. Entre os tipos de
virtualizações está: Virtualização de sistema operacional, que torna possível a execução
de vários sistemas operacionais em um único computador.
Uma máquina virtual (VM) é um computador digitalizado que funciona em um
servidor físico, utilizando recursos virtuais como CPU, memória e armazenamento. As
VMs são executadas como computadores individuais, mas são independentes das
outras e do computador físico.
As VMs podem ser usadas para: Testar novos sistemas operacionais, executar software
incompatível, criar e implantar aplicações na nuvem, fazer backup do sistema
operacional, executar aplicativos legados em hardware moderno. Para criar VMs, é
necessário utilizar um hypervisor, que é uma camada de software que aloca recursos de
compatação física para cada VM.
O VirtualBox é um software gratuito e de código aberto que permite criar, gerenciar e
executar máquinas virtuais (VMs). Ele é multi-plataforma e pode ser usado em
Windows, Mac OS X, Linux e Solaris.
O VirtualBox é uma ferramenta útil para quem precisa usar mais de um sistema
operacional ou para testar sistemas. Ele também pode ser usado para reduzir custos
operacionais e implementar aplicações de forma segura. O VirtualBox é ideal para
desenvolvedores, profissionais de TI e usuários comuns.
Nas imagens a seguir serão exibidas as fases de configuração da máquina virtual e da
instalação do sistema operacional hóspede.
Criação de máquina virtual com sistema operacional GNU/Linux, que como exemplo
trarei o Debian através do software Oracle VM VirtualBox.
Instalação do Debian
No VirtualBox devemos ir até a opção "Novo".
Agora devemos definir um nome para nossa máquina virtual, e o sistema operacional.
Definindo quantidade de memória RAM e processador.
Criando um novo disco virtual.
Criada nossa máquina, já aparece na lista.
Vamos nas configurações e apontamos a ISO do SO.
Após isso, devemos pressionar o botão ok e depois “iniciar”
Feito isso teremos a opção de instalar nossa maquina, ela deve ser selecionada e seguir
as etapas de instalação até sua conclusão.
Terminada a instalação, a maquina virtual inicializará o novo SO
2.2.3 CONCLUSÃO
A virtualização usando aplicativos como o VirtualBox é uma poderosa
ferramenta que oferecem diversas vantagens, incluindo a capacidade de testar e
desenvolver software em diferentes sistemas operacionais, isolamento seguro de
ambientes e eficiência no uso de recursos de hardware. No entanto, é importante estar
ciente das possíveis sobrecargas de desempenho e das necessidades de recursos de
hardware para garantir o funcionamento eficiente das máquinas virtuais.
2.3 ATIVIDADE 03 - CONTAINERIZAÇÃO COM DOCKER:
2.3.1 INTRODUÇÃO
A conteinerização com Docker é uma tecnologia que permite criar e utilizar contêineres
Linux para executar aplicações. Os contêineres são ambientes isolados que contém todos
os componentes necessários para executar um programa. O Docker é uma ferramenta de
conteinerização que permite criar contêineres de imagens do Docker. Os contêineres do
Docker são executados no kernel do host, o que permite que vários processos e
aplicações sejam executados separadamente.
A conteinerização é uma tecnologia essencial para a migração para a nuvem
2.3.2 DESENVOLVIMENTO
A realização dessa atividade tem como objetivo compreender como orquestrar o
servidor web Apache em um cluster simples através do Docker, e para iniciar foi
acessado o site: [Link] e em seguida feito a
inscrição com a criação da conta.
Depois de inscrito, foi necessário ir para a tela do Play with Docker
através do link: [Link] e clicar em Star (Começar).
Ambiente de laboratório
Com o acesso à plataforma:
1 Passo Foi adicionado 3 nós, que farão parte do cluster, através do botão "Add new
instance".
2 Passo: Foi escolhido o 1 nó para ser o mestre, através do seguinte comando
docker swarm init --advertise-addr [Link].
Este comando define esse nó como manager do cluster. Repare
que, ao executar esse comando, é apresentada uma saída, com a mensagem: (To add a
worker to this swarm, run the following command) “Para
adicionar um worker ao swarm, execute o seguinte comando”, conforme pode ser visto
na Figura.
Sendo assim, foi copiado a saída que foi apresentada (destacada em
vermelho na Figura), pois esse comando deverá ser executado em cada um dos demais
nós do cluster, adicionando estes como workers desse cluster.
3 Passo: Agora que os nós estão criados e seus papéis definidos,
para criar o serviço que estará rodando (de maneira distribuída, replicada) do servidor
web Apache, foi digitado o seguinte comando no nó mestre: docker service create - -
name WEB --publish 80:80 --replicas-5 httpd.
Este comando criou 5 instâncias de um servidor web Apache, que responderá na porta
mapeada (80, nesse caso) e, para facilitar a monitoração demos um nome a este
serviço: "WEB".
Para saber em quais nós as 5 réplicas desse serviço estão sendo executadas, digite o
seguinte comando: docker service ps WEB.I
4 Passo: Para finalizar, acessar a página de boas-vindas desse servidor Apache
através dos endereços IPv4 de cada nó onde esse serviço web estiver rodando. E
veremos a famosa mensagem "It works!" do Apache.
Servidor rodando o nó 1.
Servidor rodando o nó 2.
Servidor rodando o nó 3.
2.3.3 CONCLUSÃO
A conteinerização com Docker oferece uma maneira eficiente e consistente de
desenvolver, implantar e gerenciar aplicações. Utilizando contêineres, é possível
garantir que o ambiente de execução seja o mesmo em todas as etapas do ciclo de
desenvolvimento, reduzindo problemas de compatibilidade e facilitando a
escalabilidade.
2.4 ATIVIDADE 04 - ANALISADOR DE PACOTES WIRESHARK
2.4.1 INTRODUÇÃO
Wireshark é um analisador de protocolos utilizado para monitorar o tráfego de rede.
Esse software captura pacotes de dados transmitidos em uma rede local, permitindo
assim que administradores de rede analisem e resolvam problemas de comunicação ou
identifiquem possíveis ameaças à segurança.
Também conhecido como sniffers, esses analisadores de protocolo conseguem capturar
a maioria dos pacotes de dados utilizados em uma rede, além de fornecer vários
recursos para filtragem e para visualização dos dados capturados.
O Wireshark ajuda na identificação e resolução de problemas de comunicação,
congestionamento e latência, permitindo que os administradores de rede analisem o
tráfego em tempo real e identifiquem a origem dos problemas.
2.4.2 DESENVOLVIMENTO
Para a realização desta experiência foi utilizado o WireShark 4.4.3.
• Exploração dos menus e execução do roteiro da prática.
Abertura do aplicativo que mostra todas as interfaces de redes disponíveis no sistema.
O objetivo deste programa é capturar e analisar o tráfego que viaja em uma rede, é
possível guardar os dados de captura em um arquivo, para acesso futuro.
Mas, a peculiaridade consiste na possibilidade de criar filtros ou usar filtros pré-
configurados e selecionar os pacotes e os protocolos de comunicação que nos
interessam, em tempo real ou sobre uma captura feita anteriormente. Para tal fim
devemos selecionar a rede que deve ser analisada.
No menu principal, será apresentada uma caixa listando as interfaces de rede. Selecione
a interface e clique em Start.
Esta atividade é chamada de farejamento, pois em inglês este processo é chamado de
sniffing, porque é assim que conseguimos "sentir" e individuar os dados interessantes.
Construtor de Filtros
A caixa de diálogo de construção de filtros é um recurso que torna mais fácil a utilização
do Wireshark pelos usuários para capturar e criar filtros de exibição.
Para acessar esta caixa de diálogo:
1 - Clique no menu Analyze;
2 - Opção Display Filter Expression.
3- Na janela de seleção dos filtros pré-configurados é possível colocar chaves
específicas de busca colocando, por exemplo, o nome de um disposto e visualizar os
pacotes que incluam aquela palavra, ou excluam a mesma dos resultados.
2.4.3 CONCLUSÃO
Em resumo, o Wireshark é uma ferramenta indispensável para análise e monitoramento
de redes. Sua capacidade de capturar pacotes de dados em tempo real e fornecer uma
análise detalhada faz dele uma escolha popular entre profissionais de TI e entusiastas.
Com filtros avançados, suporte a centenas de protocolos e uma interface gráfica
amigável, o Wireshark ajuda a resolver problemas de rede, garantir a segurança e
entender o tráfego de dados em profundidade.
REFERÊNCIAS
TANENBAUM, A. S.; VAN STEEN, M. Sistemas Distribuídos: Princípios e Paradigmas. Pearson.
DOCKER INC. Docker Documentation. Disponível em: [Link]
ORACLE. VirtualBox Documentation. Disponível em: [Link]
WIRESHARK FOUNDATION. Wireshark User’s Guide. Disponível em:
[Link]
[Link]. Projeto [Link]. Disponível em: [Link]