sexta-feira, 27 de junho de 2008

Instalando o Debian via rede com boot remoto

Artigo escrito por Alisson Baracho - alisson@usinet.com.br
*O sofreu pequenas modificações permitidas pelo autor.

A fim de resolver o problema de instalação do linux através de medias removíveis, ou mesmo agilizar a instalação em múltiplas máquinas, surge necessidade de instalação por meios alternativos, e a instalação via rede com boot remoto se torna uma excelente solução.

O artigo foi feito baseado na distribuição Debian, mas com as modificações apropriadas se aplica a qualquer distribuição.

Alguns conceitos antes de iniciar o artigo.

PXE (Ambiente de execução Pré-Boot)
Permite o boot usando a interface de rede independente de dispositivo de armazenamento disponível (como por exemplo, disco rígido) ou sistemas operacionais instalados.

DHCPd (Protocolo de configuração dinamica de host)
Daemon para o Protocolo de serviço TCP/IP que oferece configuração dinâmica de terminais, com concessão de endereços IP de host e outros parâmetros de configuração para clientes de rede.

TFTP (Protocolo Trival de Transferencia de Arquivos)
Protocolo simples para transferencia de arquivos, com funcionalidades básicas de FTP.


Para começar, instala-se os daemons requeridos.

#apt-get install pxe atftpd dhcp3-server

Edite o /etc/dhcp3/dhcpd.conf alterando os endereços ips para os da sua rede

#----------------BOF---------------------
allow booting;
allow bootp;
ddns-update-style none;
#Seu dominio
option domain-name "linuxadm.com.br";
# Mascara da Rede
option subnet-mask 255.255.255.0;
# Endereço de broadcast da rede
option broadcast-address 192.168.0.255;
# Endereço do gateway padrao para os hosts
option routers 192.168.0.1;
subnet 192.168.0.0 netmask 255.255.255.0 {
range 12.168.0.100 192.168.0.150;
}
group {
filename "pxelinux.0";
host pxemachine {
#Endereço MAC da maquina cliente
hardware ethernet 00:e0:4c:92:fd:51;
#Endereço do servior tftpd e diretório de boot)
option root-path "192.168.0.1:/tftpboot/";
}
}
#----------------EOF---------------------

Agora edite o /etc/pxe.conf

#----------------BOF---------------------
#Interface a ser usada no servidor
interface=eth0
#Endereço do servidor
default_address=192.168.0.1
#Endereço de multicast a escutar
multicast_address=192.168.0.255

# mtftp info
mtftp_address=192.168.0.1
mtftp_client_port=1758
mtftp_server_port=1759

#Porta de escuta
listen_port=4011
#Habiliar Multicast
use_multicast=1
#Habilitar Broadcast
use_broadcast=1
#Mensagem de boot
prompt=Press F8 to view menu.
#Tempo de espera da mensagem
prompt_timeout=10

# Quais serviços serão disponibilizados, e ordem de prioridade
service=X86PC,0,0,local,Local boot
service=X86PC,0,0,pxelinux,PXELinux

#Diretório Base do tftpd
tftpdbase=/tftpboot
#Nome do domínio
domain=linuxadm.com.br
#----------------EOF---------------------

Lembre-se que o diretório /tftpboot deve ter permissao de leitura e execucao.

Por fim, edite o arquivo /etc/default/atftpd

#----------------BOF---------------------
USE_INETD=false
OPTIONS="--daemon --port 69 --tftpd-timeout 300 --retry-timeout 5 --mcast-port 1758 --mcast-addr 192.168.0.0-255 --mcast-ttl 1 --maxthread 100 -- verbose=5 /tftpboot"
#----------------EOF---------------------

obs. Verifique se a linha não está quebrada, o parametro options deve estar em uma única linha.

A configuração dos daemons terminou, baixe os arquivos da distribuição (No nosso caso, Debian Etch)

# mkdir -p /tftpboot
# cd /tftpboot
# wget http.us.debian.org/debian/dists/etch/main/installer-i386/current/images/netboot/mini.iso
# wget http.us.debian.org/debian/dists/etch/main/installer-i386/current/images/netboot/netboot.tar.gz
# wget http.us.debian.org/debian/dists/etch/main/installer-i386/current/images/netboot/pxelinux.0


Descompacte o boot do Debian Netinstall na pasta /tftpboot

# tar zxvf netboot.tar.gz
# chmod 755 /tftpboot -R


Pronto, agora reiniciando os daemons.

# invoke-rc.d atftpd restart
# invoke-rc.d dhcp3-server restart
# invoke-rc.d pxe restart


Agora, basta entrar no setup da maquina que será instalada e definir o boot pela lan, reinicie o computador e a tela da instalação do debian aparecerá.

Agradeço ao Alisson que gentilmente ofereceu esse excelente tutorial para ser publicado em nosso blog.

Fonte: http://en.wikipedia.org/wiki/Preboot_Execution_Environment
Fonte: http://en.wikipedia.org/wiki/Trivial_File_Transfer_Protocol

Fonte: http://pt.wikipedia.org/wiki/DHCP

*Outras fontes foram consultadas mas não foram referenciadas pelo autor.

segunda-feira, 16 de junho de 2008

DNS Robusto e fácil com PowerDNS e MySQL

O PowerDNS é um dos muitos softwares de DNS, ele é muito poderoso, pode fazer milhares de resoluções por segundo, e o que mais me chamou atenção, pode-se comunicar com vários backends, includindo MySQL, PostgreSQL, LDAP, Oracle e outros.

Para se ter uma idéia, existem grandes implementações feitas com ele, incluindo register.com e tucows.com, e, segundo o site oficial, existem aproximadamente 4000 servidores em serviços secundários ativos na internet, que servem aproximadamente 10 milhões de zonas e um imenso núumero de domínios. Testes no primeiro nível do domínios .EU demonstraram que o PowerDNs pode prover 50.000 resoluções por segundo num único servidor, com um hardware simples. No GOOGLE encontrei relatos de testes feitos inclusive pelo registro.br para utilização do mesmo.

A única desvantagem evidente é que o PowerDNS ainda não prevê uma implementação completa do DNSSEC. (O que pra muitos é irrelevante, visto que poucos são aqueles que implementaram DNSSEC em seus servidores)

Utilizar o PowerDNS inclusive como cache de DNS é uma ótima pedida devido a sua excelente performance.

Já tenho usado o PowerDNS há pelo menos 2 anos como servidor secundário e a pouco menos de 1 ano como servidor primário. Utilizo-o bastante também como caching de DNS, ele é extremamente rápido.

Estarei descrevendo abaixo os passos para instalação do PowerDNS no Debian, mas com um pouco de conhecimento pode ser instalado em qualquer distribuição através do código fonte.

---------------------------------------------------------------------------

1º Ambiente - Somente recursão de nomes (DNS cache, caching)

#apt-get install pdns-recursor

Edite o arquivo /etc/powerdns/recursor.conf:

Descomente a linha allow-from e insira os endereços ou classes ips autorizadas a fazer a recursão de nomes.

allow-from=127.0.0.0/8, 10.0.0.0/8, 192.168.0.0/16, 172.16.0.0/12, ::1/128, fe80::/10

Para evitar que vejam a exibição da versão do PowerDNS.

version-string=DENIED

Edite o arquivo /etc/resolv.conf e altere a linha nameserver para 127.0.0.1 (Isso fará com que a pesquisa de DNS seja feita no servidor local)

Pronto, você já está apto a fazer consultas de dns através do seu dns caching.

---------------------------------------------------------------------------

2º Ambiente - Servidor de nomes e recursão

Considerando que o mysql já está instalado no servidor.

Instale o PowerDNS com suporte a Mysql

#apt-get install pdns-backend-mysql

Entre no MySQL e execute os comandos abaixo para criar o usuário, senha, banco e setar as permissões pertinentes.

#mysql

#------- Recortar Aqui
CREATE USER 'pdns'@ '%' IDENTIFIED BY 'sua-senha';
GRANT USAGE ON * . * TO 'pdns'@ '%' IDENTIFIED BY 'sua-senha' WITH \
MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 \ MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;
CREATE DATABASE `pdns` ;
GRANT ALL PRIVILEGES ON `pdns` . * TO 'pdns'@ '%';
#-------
Agora vamos criar as tabelas conforme o modelo do PowerDNS.

#mysql -u pdns -psua-senha -D pdns < /usr/share/doc/pdns-backend-mysql/mysql.sql
Então vamos copiar o arquivo padrão de configurações do backend para o diretório de configuração.

#cp /usr/share/doc/pdns-backend-mysql/examples/pdns.local.gmysql /etc/powerdns/pdns.d/

Edite o arquivo /etc/powerdns/pdns.d/pdns.local.gmysql

Altere o arquivo conforme suas preferencias.

gmysql-host=localhost
gmysql-port=3306
gmysql-dbname=pdns
gmysql-user=pdns
gmysql-password=sua-senha

Como seu servidor de DNS também fará a recursão de nomes, é importante limitar a recursividade do seu servidor de nomes aos IP's de sua(s) rede(s), isso impede o conhecido OPEN DNS.

Edite o arquivo /etc/powerdns/pdns.conf.

Descomente a linha allow-recursion e insira os endereços dos quais os servidor de nomes vai servir.

allow-recursion=127.0.0.0/8, 10.0.0.0/8, 192.168.0.0/16, 172.16.0.0/12, ::1/128, fe80::/10

Descomente a linha launch e insira os backends a serem carregados

launch=bind,gmysql

Se você irá replicar as Zonas, precisa inserir os endereços ips dos servidores dos quais irá fazer transferência de Zonas.

allow-axfr-ips=200.200.200.200
(onde 200.200.200.200 é o endereço ip do seu servidor de dns que será replicado)

Precisa também permitir as transferências de zonas.

disable-axfr=no

Altere a porta do recursor para uma porta diferente do servidor de nomes, para isso edite o arquivo /etc/powerdns/recursor.conf

local-port=2525

Agora vamos inserir o recursor no servidor de nomes, para quem ele faça recursão caso não encontre no servidor de nomes local. Para isso edite o arquivo edite o arquivo /etc/powerdns/pdns.conf.

recursor=127.0.0.1:2525

É isso, seu servidor de nomes já está ativo e com suporte a recursão.
Para testar o servidor de nomes local, vamos inserir um registro de exemplo.

# mysql

#------- Recortar Aqui
insert into domains (name,type) values ('teste.com.br','NATIVE');
insert into records (content,type,domain_id,name) values ('127.0.0.1','A','1','www.teste.com.br')
#-------

Teste o a resolução de seu domínio.
Lembre-se que para fazer o teste, vc deve ter o endereço local de seu servidor no arquivo /etc/resolv.conf

Aproveite! =)

---------------------------------------------------------------------------

3º Ambiente - Servidor de nomes e sem recursão

Repita o procedimento do ambiente 2, apenas não instalando o Recursor.

---------------------------------------------------------------------------

Abaixo três interfaces gráficas para gerenciamento do PowerDNS

PowerAdmin - http://www.poweradmin.org/ (O Mais completo)
proFTPd Administrator - proftpd-adm.sourceforge.net
ZoneAdmin - http://open.megabit.net/index.php?section=pro_home&project=ZoneAdmin

Fonte: http://www.powerdns.com/

sábado, 14 de junho de 2008

Squid Tuning - Mais dicas, aumentando a performance de disco.

Procurando mais informações a respeito do Squid, me deparei na seguinte página. http://wiki.squid-cache.org/BestOsForSquid e descobri duas dicas a mais para melhorar o acesso a disco e consequentemente a resposta dos arquivos em cache.

Esse artigo deve ser considerado uma continuação do anterior "Otimizando o Squid - Versão 2008", disponível em http://linuxadm.blogspot.com/2008/02/otimizando-o-squid-verso-2008.html

1ª Dica - noatime option

O Linux salva em cada arquivo a informação de data e hora de ultimo acesso além de ultima modificação, e como o Squid utiliza seu timestamp próprio, é inutil contar com o timestamp do filesystem. Para melhorar o acesso aos arquivos de cache setamos então o diretório de cache com o parâmetro "noatime".

Como fazer? Simples.
Se o seu diretório de cache está numa partição em separado (o que a propósito é uma excelente idéia) basta adicionar o parâmetro noatime no seu fstab.

Exemplo:
/dev/sda3 /var/spool/squid reiserfs defaults,noatime 0 2

obs.. Recomendo adicionar o noatime somente nas partições do cache, não em partiçoes do sistema, tal como /

Se você já possui um particionamento, e não deseja reparticionar seu disco, pode fazer através do comando chattr (change attribute)

Exemplo:
#chattr -R +A /var/spool/squid
(Onde o -R é para recursividade, e o +A para especificar o noatime)

Para usar o chattr com ReiserFS é necessário ativar o suporte no Kernel.

[*] ReiserFS extended attributes
[*] ReiserFS POSIX Access Control Lists
[*] ReiserFS Security Labels

Para visualizar os atributos do arquivo utilize o lsattr.

Exemplo:
#lsattr
------------- ./radius.sql (Arquivo sem nenhum atributo ativo)

2ª Dica - Espaço Livre (free space)
Sempre deixe acima de 20% de espaço livre no filesystem contendo seu cache dir, geralmente a performance do filesystem degrada dramaticamente se o espaço usado excede 80%.

3º Dica - Desativar o Store.log (Enviada por YellowBR)
Como dito anteriormente, quanto melhor otimizarmos o acesso a disco mais rapido será nosso proxy, uma forma de melhorar a performance de disco é reduzir a escrita desnecessária.
O store.log exibe quais arquivos foram removidos do cache, quais objetos estão salvos, e o tempo que estão no cache, entretanto, não existe uma utilidade real para esses dados, portanto é recomendável desativar essa flag.
Exemplo:
cache_store_log none

Fonte: http://www.visolve.com/squid/squid24s1/logfiles.php

Dica Extra (E extremamente útil) - notail option
Se você usa ReiserFs (o que é indicado para cache do squid) é interessante o uso da opção notail ao montar o sistema de arquivos. O "tail packing" é uma característica do ReiserFS para melhor uso de espaço, que permite 5% a menos de perda de espaço em disco se comparado ao ext2 ou ext3, a grosso modo ele faz um agrupamento de arquivos menores que um bloco do filesystem (4k), por isso a excelente performance do ReiserFS com arquivos menores.

Fonte: http://www.funtoo.org/en/articles/linux/ffg/2/

Portanto se você está disposto a sacrificar 5% do estaço em disco para um incremento de performance, ative a opção notail no seu fstab.

/dev/sda3 /var/spool/squid reiserfs defaults,noatime,notail 0 2

Se você não quiser reiniciar seu linux, basta apenas remontar a partição com o parâmetro notail.

#mount -o remount /var/spool/squid

As últimas duas dicas não referem-se apenas ao Squid, mas ao uso do sistema operacional em sí, procure manter o mesmo procedimento para sua partição primária.

Outras dica óbvia, e não menos importante, é procurar disco com velocidades maiores, por exemplo discos de 15k RPM.

Estarei adicionando essas dicas no arquivo original, mas manterei esse post em separado para que os antigos leitores vejam que houveram incremento de informações no tutorial.

Abraços.

sexta-feira, 13 de junho de 2008

Aviso aos Visitantes

Caro Visitante.

O formulário do blogger infelizmente não fornece campo de email, por isso peço que coloque seu email junto ao comentário caso queira resposta.

Respondendo a pergunta do visitante Standart, o porque o seu proxy não apresenta muitos HIT.

Somente a política LRU apresenta uma resposta rápida, pois ela armazena os arquivos acessados recentemente. As outras políticas GDSF e LFUDA, utilizam lógicas de armazenamento baseadas em popularidade e tamanho, e precisam de tempo ter uma boa base de dados (arquivos armazenados no squid).

Portanto, é necessário que o seu cache esteja com bastante registros afim de obter melhor HIT ratio.

Veja os resultados do meu proxy depois de 1 mês de utilização.






Agradeço a todos que comentam.