Mudanças entre as edições de "Gerência de Redes (diário 2011-2)"

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar
Linha 207: Linha 207:
  
 
====Cron====
 
====Cron====
Esse termo, comumente usado noAgendamento de Tarefass sistemas Windows, serve para abranger todos os serviços que programam a execução de aplicações em horários predefinidos, permitindo inclusive executá-los periodicamente. Nos sistemas baseados em UNIX (homenagem a [http://spectrum.ieee.org/tech-talk/computing/software/dennis-ritchie-1941-2011 Dennis Ritchie]), essa tarefa fica a cargo do serviço cron.
+
Esse termo, comumente usado nos sistemas Windows, serve para abranger todos os serviços que programam a execução de aplicações em horários predefinidos, permitindo inclusive executá-los periodicamente. Nos sistemas baseados em UNIX (homenagem a [http://spectrum.ieee.org/tech-talk/computing/software/dennis-ritchie-1941-2011 Dennis Ritchie]), essa tarefa fica a cargo do serviço cron.
  
 
<center>
 
<center>

Edição das 02h14min de 14 de outubro de 2011

Endereço encurtadi: http://bit.ly/ger20112

Planejamento

01/08

Discussão e montagem coletiva do plano de ensino deste semestre.

05/08

Visão histórica dos sistemas operacionais, linguagens de programação e redes de computadores.

Revisão e Integração das Disciplinas

Sistema Operacional

08/08

Paralisação das atividades docentes.

12/08

Aula de sistemas operacionais baseados em UNIX, em particular GNU/Linux. Revisão dos conceitos originários do UNIX[1] e que podem ser utilizados na administração de sistemas até hoje, como por exemplo no Linux[2].

<graphviz>

graph SO {

Usuário
"Memória principal"
"Dispositivo(s) de armazenamento"
subgraph clusterSO
{
 label="S.O."
 Usuários [shape=plaintext]
 Processos [shape=plaintext]
 Dados [shape=plaintext]
 Kernel [shape=circle]
}
Usuário -- Usuários [label=Interação,fontcolor=red,color=red]
"Memória principal" -- Processos [label=Processamento,fontcolor=red,color=red]
"Dispositivo(s) de armazenamento" -- Dados [label="Sistema(s) de arquivos",fontcolor=red,color=red]
Usuários -- Processos [color=lightgray]
Processos -- Dados [color=lightgray]
Kernel -- Usuários [color=blue]
Kernel -- Processos [color=blue,fontcolor=blue,label="Chamadas de sistema"]
Kernel -- Dados [color=blue]

}

</graphviz>

15/08

Visão do início do sistema (initialization) em PC, do POST à seleção do nível de execução.

Software básico

19/08

Do código-fonte, passando pela compilação e código final, ao empacotamento. Como exemplo, foi utilizado o Asterisk para compreensão do processo de compilação de software (bibliotecas, dependências, ativação de funcionalidades e outros). No Ubuntu 10.04 - já de posse do código no diretório corrente - foram necessários os comandos para uma instalação básica:

aptitude update
aptitude install buid-essential
aptitude install libxml2-dev
aptitude install libsqlite3-dev
aptitude install libncurses-dev
./configure
make
make install
make samples
asterisk -c

Nota-se, nos comandos acima, os comandos aptitude para instalar via pacote as bibliotecas necessárias a compilação.

Rede

22/08

26/08

Não haverá aula devido a greve dos servidores públicos federais.

Controle de versão

29/09

Utilizado o material publicado para a disciplina de TCC I, uma vez que vários alunos fazem as duas matérias neste semestre.

03/10

Apresentação dos alunos sobre o NetKit, o qual será utilizado como ferramenta de apoio, junto ao controle de versão, para o projeto da disciplina.

A proposta de rede, até o final do semestre, é esta:

<graphviz> graph Projeto {

 rankdir=LR
 Internet [shape=circle]
 Servidor_F [label=Servidor,shape=Mrecord]
 Firewall_M [label=Firewall,shape=Mrecord]
 Servidor_DMZ [label=Servidor,shape=Mrecord]
 Servidor_LAN [label=Servidor,shape=Mrecord]
 Switch_F [label=Switch,shape=record]
 Switch_LAN [label=Switch,shape=record]
 Cliente1_F [label="Cliente 1",shape=plaintext]
 Cliente2_F [label="Cliente 2",shape=plaintext]
 Cliente1_LAN [label="Cliente 1",shape=plaintext]
 Cliente2_LAN [label="Cliente 2",shape=plaintext]
 Cliente3_LAN [label="Cliente 3",shape=plaintext]
 Internet -- Servidor_F
 Internet -- Firewall_M
 subgraph clusterFilial
 {
   label=Filial
   Servidor_F -- Switch_F
   Switch_F -- Cliente1_F
   Switch_F -- Cliente2_F
 }
 subgraph clusterMatriz
 {
   label=Matriz
   subgraph clusterDMZ
   {
     label=DMZ
     Firewall_M -- Servidor_DMZ
   }
   subgraph clusterLAN
   {
     label=LAN
     Firewall_M -- Switch_LAN
     Switch_LAN -- Servidor_LAN
     Switch_LAN -- Cliente1_LAN
     Switch_LAN -- Cliente2_LAN
     Switch_LAN -- Cliente3_LAN
   }
 }

} </graphviz>

Em relação ao NetKit, trabalharemos com uma versão oficial congelada para uso neste semestre de 2011-2, onde haverá três níveis de arquivo:

  • Configuração da rede: o arquivo lab.conf define os componentes da rede. Baixa taxa de modificação.
  • Modelo do sistema de arquivos: arquivo modelo a ser usado por toda máquina do cenário. Sem qualquer modificação ao longo do projeto.
  • Configuração dos computadores: cada máquina terá, além do modelo, arquivos adicionais de configuração dos serviços prestados (DHCP, DNS, HTTP e outros). Alta taxa de modificação.

Como serão duas redes distintas, unidas pela "nuvem Internet", haverá dois diretórios com os arquivos mutáveis: configuração da rede (arquivo lab.conf) e configuração das máquinas correspondentes.

  • Diretório raiz
    • Matriz
      • lab.conf
      • Firewall
        • Arquivo 1
        • Arquivo 2
        • Arquivo 3
        • ...
      • Servidor-DMZ
        • Arquivo 1
        • Arquivo 2
        • Arquivo 3
        • ...
      • Servidor-LAN
        • Arquivo 1
        • Arquivo 2
        • Arquivo 3
        • ...
    • Filial
      • lab.conf
      • Servidor
        • Arquivo 1
        • Arquivo 2
        • Arquivo 3
        • ...

Assim, poderemos controlar a versão de todos os arquivos mutáveis do projeto: configuração da rede e dos computadores. Para fazer isso, é preciso preparar o ambiente. A sequência dos passos está descrita no blog de Tele, a qual explicamos abaixo para o usuário etorresini:

cd $HOME
wget http://tele.sj.ifsc.edu.br/arquivos/publicos/.gitconfig
vi .gitconfig
wget http://tele.sj.ifsc.edu.br/arquivos/publicos/.netrc
vi .netrc
git clone https://tele.sj.ifsc.edu.br/projetos/ger-etorresini
cd ger-etorresini
mkdir Matriz
vi Matriz/lab.conf
git add Matriz/lab.conf
mkdir Filial
vi Filial/lab.conf
git add Filial/lab.conf
git commit -a -m "Arquivos de configuração do NetKit: redes Matriz e Filial."
git push origin master

Esse processo, acima descrito, deve ser executado apenas na primeira vez. Nas demais ocasiões, é interessante sincronizar a base remota com a local (pull), editar o(s) arquivo(s), registrar a versão localmente (commit) e sincronizar a base local com a remota (push). Segue o exemplo abaixo:

cd $HOME/ger-etorresini
git pull
vi <nome do arquivo>
vi <nome do outro arquivo>
...
git add <arquivo novo, se houver>
git add <outro arquivo novo, se houver>
git commit -a -m "<mensagem do commit>"
git push

O professor acompanhará as atividades pela interface Web comum a todos os projetos. Os alunos poderão utilizar ferramentas CLI ou gráficas para ler os repositórios local e remoto(s), bem como material de apoio disponível na Internet [3].

Serviços

A tabela abaixo se refere a sistemas baseados em Debian, como Ubuntu e o próprio NetKit.

Tipo Serviço Porta Executável Configuração
Facilitadores cron - /usr/sbin/cron /etc/crontab
syslog 514/UDP /usr/sbin/rsyslogd /etc/rsyslog.conf
ntp 123/UDP /usr/sbin/ntpd /etc/ntp.conf

Facilitadores

07/10

Vistos os serviços locais de sistema operacional cron e syslog, que tratam do agendamento de tarefas e registro de eventos respectivamente.

Cron

Esse termo, comumente usado nos sistemas Windows, serve para abranger todos os serviços que programam a execução de aplicações em horários predefinidos, permitindo inclusive executá-los periodicamente. Nos sistemas baseados em UNIX (homenagem a Dennis Ritchie), essa tarefa fica a cargo do serviço cron.

<graphviz> digraph Serviços {

 Cron [shape=Mrecord]

} </graphviz>


O cron possui arquivos de configuração para:

  • Sistema: /etc/crontab, que pode incluir outros arquivos.
  • Usuário: armazenado em /var/spool/cron/crontabs/<usuário>, porém com edição facilitada pelo aplicativo crontab.

Syslog

Termo também emprestado do mundo Windows, significam os serviços responsáveis por armazenar eventos importantes do sistema, como por exemplo detecção de novo hardware USB ou tentativa frustrada de autenticação de usuário.

O serviço syslog, da família UNIX, organiza os registros, ou logs, segundo a sua origem (facility) e gravidade (priority). Assim, todo log será identificado com a hora da ação, facility e priority. De acordo com o arquivo de configuração do serviço, tal log será guardado em um ou mais arquivos - geralmente em /var/log. (Lembre-se: ler log é uma arte...)

10/10

NTP

Ambos os serviços mencionados na aula anterior dependem fortemente do sistema operando com a hora certa. O histórico protocolo NTP permite a sincronização da hora dos sistemas em rede. No Brasil, está disponível um pool de servidores: pool.ntp.br.

<graphviz> digraph Serviços {

 Cron [shape=Mrecord]
 Syslog [shape=Mrecord]
 NTP [shape=Mrecord]
 Cron -> NTP
 Syslog -> NTP

} </graphviz>

A instalação e configuração do serviço é bastante simples (baseado no guia do NTP.br):

apt-get install ntp

E adicionar o pool brasileiro, mantendo apenas essa linha (e removendo as demais):

server pool.ntp.br

e reiniciar o serviço:

/etc/init.d/ntp restart

Obs.: por questões de S.O., o serviço não alterará o relógio quando a diferença for maior que 128ms. Assim, nesses casos é preciso um ajuste diferenciado:

/etc/init.d/ntp stop
ntpd -q -g 
/etc/init.d/ntp start

Diretórios e Bancos de Dados

Compartilhamento

Comunicação

Gerência

29/08 02/09 05/09 09/09 12/09 16/09 19/09 23/09 26/09 30/09

03/10 07/10 10/10 14/10 17/10 21/10 24/10 31/10 04/11 07/11 11/11

     18/11

21/11 25/11 28/11 02/12 05/12 09/12 12/12 16/12 19/12

Referências

  1. RITCHIE, D. M. e THOMPSON, K. The UNIX Time-Sharing System. The Bell System Technical Journal. no. 57 parte 2. 1978.
  2. NEMETH, E. et al. UNIX and Linux System Administration Handbook. 4 ed. 2010. ISBN 0131480057.
  3. CHACO, S. Pro Git. Apress. 2009.



Voltar para página principal da disciplina