Slack Zine 16

Embed Size (px)

Citation preview

  • 8/6/2019 Slack Zine 16

    1/20

    Usando DNS Externo/InternoSem View 3

    Divertindo-se com Awk 4Livro: Optimizing Linux Performance 7

    A Magia do init 8Clusters de Balanceamento

    de Carga em Linux 11Construindo um Cluster de

    OpenMosix com o Slackware 11.0 15

    Nmero #16 - 29 de Janeiro de 2007

  • 8/6/2019 Slack Zine 16

    2/20

    2 SlackwareZine http://www.slackwarezine.com.br

    Mais um ano de SlackwareZine! Ea terceira edio seguida que

    sai na data certa! Para comemorar,uma diagramao completamentenova e duas matrias especiais sobreclusters (hmmm... talvez fosse maisinteressante conseguir trs matriaspara comemorar trs anos).

    Claro que trs anos, dezesseis ediesnormais, diversas edies especiais edois eventos no so coisas que sefazem sozinhas; por isso o grupoeditorial do zine agradece todos os

    que mandaram e-mails de incentivo,artigos e deram aquela fora para queo projeto continuasse, e continuassecom qualidade.

    Com a diagramao nova tambmtrouxemos algumas idias que semprepassam pela cabea mas nohavamos tido oportunidade decolocar em prtica. Uma a seocom anlise de livros, todo mundosabe que livro no custa barato e

    (garanto) muita gente j tevepssimas experincias gastando umafbula em um livro e no gostando docontedo; com essa seo, possvelter pelo menos uma avaliao do livroantes de comprar, o que pode ajudarbastante.

    Outra novidade uma pgina comdicas. Dicas so pequenos conselhosteis, com uma seo assim a genteincentiva a participao (afinalescrever uma dica interessante maisrpido que um artigo completo) e

    acaba aumentando a produtividade efacilitando a vida de bastante gente.

    Acho que so essas as novidades eespero que todos gostem. Continuemlendo, recomendando e mandandoartigos para o slackwarezine, arevista tcnica de tcnicos paratcnicos.

    Piter PUNK

    Editorial

  • 8/6/2019 Slack Zine 16

    3/20

    3SlackwareZinehttp://www.slackwarezine.com.br

    REDES

    Creio que todo mundo j teve essa necessidade, umarede de servidores quando comea a passar de 3 jcomea a encher o saco ficar digitando o ip :P, ento omelhor mesmo usar nomes, alguns usam nomes dedeuses gregos, outros nomes astros do rock,whatever, o problema comea quando uma maquinatem que ter um nome para fora ( leia-se internet) eum nome para dentro ( leia-se intranet )

    Quando eu precisei fazer isso, dei uma pesquisada nainternet/amigos e a concluso foi "use views" legal, l

    fui eu no dns master e configurei, funcionou \o/, parafora ele resolvia com o ip 200.200.200.200 paradentro ele resolvia com o ip 192.168.0.10.

    Legal, agora s falta sincronizar com o dnssecundario, adivinha com qual zona o dns secundariosincronizava? exatamente com a zona interna :( aquando alguem consultava o dns secundario elerespondia com ip's tipo, 192.168.0.x . Triste edesanimado com a tal das views foi quando eulembrei que eu trabalhei em uma empresa que usavaisso, s que no usava view! foi quando eu conheci o$ORIGIN :) que ser melhor explicado agora.

    No named.conf no muda nada:

    zone "dominio.com.br" IN {type master;file "dominio.com.br";allow-transfer {

    192.168.0.15;}; // IP do dns secundario

    };

    No arquivo de zona, mudam algumas coisas, comopode-se ver no Quadro 1. Com essa configurao se

    voc resolver um nome dominio.com.br ele retorna

    um ip valido na internet, se voc tenta resolver umintra.dominio.com.br ele retorna um ip invalido192.168.x , e a sincronizao master x secondaryfunciona que uma beleza :)

    Ah, no se esquea de adicionar no resolv.conf dasmaquinas internas isso:

    domain intra.dominio.com.brnameserver 192.168.0.1

    Nem s de View vive um DNS :) isso funciona muitobem, nunca tive problemas, e mais facil de fazer que

    View.

    Lindolfo Rodrigues

    Quadro 1: Arquivo de Zona

    $ORIGIN dominio.com.br. ; o segredo toda est nessa variavel $ORIGIN$TTL 1200@ IN SOA thor.dominio.com.br. hostmaster.dominio.com.br (

    2007120101 ; serial7200 ; refresh 1 day3600 ; retry 1 hour1200 ; expire 1 week1200 ) ; minimum 1 day

    ; dominio.com.br (address, mail exchange e nameservers):IN MX 5 srv3-sao.sao.terraempresas.com.br.IN MX 10 mx-sec.terraempresas.com.br.

    IN NS thor.dominio.com.br.IN NS odin.dominio.com.br.

    thor IN A 200.200.200.200odin IN A 200.200.200.201hercules IN A 200.200.200.202

    $ORIGIN intra.dominio.com.br.thor IN A 192.168.0.3

    odin IN A 192.168.0.1hercules IN A 192.168.0.2

    Usando DNS

    Externo/Interno Sem View

    Faa com que as mquinas de suarede possam ter nomes diferentespara redes diferentes

  • 8/6/2019 Slack Zine 16

    4/20

  • 8/6/2019 Slack Zine 16

    5/20

    5SlackwareZinehttp://www.slackwarezine.com.br

    Parecido com o NF, o Awk tem uma segunda varivelchamada NR: Nmero de Registro. Comonormalmente um registro uma linha, pode-se usaresse NR para indicar em qual linha o Awk estprocessando:

    $ awk '{ if (NR==1) print $0 }' /etc/group

    root::0:root

    Usamos o comando "if" (se) e comparamos o nmerode registro, se for igual a 1, imprimimos a linha. Comisso conseguimos imprimir uma linha arbitrriaqualquer. Com um pouco de imaginao, podemosfazer uma verso tosca do "head":

    $ awk '{ if (NR END {> for (i=NR-9;i print TEXT[i]> }> }' /etc/grouppop::90:popscanner::93:nobody::98:nobody

    nogroup::99:users::100:console::101:_ntp::82:_ntppostdrop:x:104:haldaemon:x:61:messagebus:x:60:

    A primeira linha do nosso programa Awk realiza umaao especfica para todas as linhas encontradas:armazena o contedo da linha dentro da varivelTEXT[NR] e, a gente lembra que NR o nmero dalinha. A segunda parte do programa a mais"complicada". Nela a gente utiliza um padro especial

    "END", que sempre "casa" com o final do arquivo (nonosso caso, quando todas as linhas foram lidas) utiliza

    um padro especial "END", que sempre "casa" com ofinal do arquivo (no nosso caso, quando todas aslinhas foram lidas); quando chegamos no final doarquivo, fazemos um lao de repetio:

    for (i=NR-9;i

  • 8/6/2019 Slack Zine 16

    6/20

    6 SlackwareZine http://www.slackwarezine.com.br

    imprimimos a varivel CHAR. S tem um probleminhasoma na varivel CHAR todos os caracteres que temna linha corrente. E, no final, imprimimos a varivelCHAR. S tem um probleminha... o nmero esterrado! O wc informa 794 caracteres e o Awk informas 782. O que acontece? A resposta simples, o wcconta os caracteres de "salto de linha" (vulgo, o enter)

    e o Awk no. Para resolver essa disparidade, podemossomar no final a quantidade de saltos de linha quetem no arquivo:

    $ awk '{ CHAR+=length($0) }> END { print CHAR+NR }' /etc/fstab794

    E assim fica correto -:) Para finalizar, vamos colocarpara imprimir todas as informaes juntas, como o wc:

    $ awk '{ CHAR+=length($0) ; WORD+=NF }> END { print NR,WORD,CHAR+NR }' /etc/fstab12 72 794

    Pronto! Mais um comando substitudo com sucesso!

    Claro que o wc, o tail e o head ficaram muito maioresque os originais; mas serviram para mostrar vriosrecursos do Awk e a ensinar como us-los. J asubstituio de grep+cut por Awk bem interessante,alm de ser extremamente mais verstil.

    Umas ltimas brincadeiras antes de fechar o artigo:

    $ awk -F: '{ if ($3>=1000)> { print $1 } }' /etc/passwd

    punkmarinatoledogarototamirisinfomediaslackshow

    Isso mostra todos os usurios que no so do sistemana mquina. A novidade o -F:, o -F determina qual

    vai ser o separador de campo, no caso, ns trocamoso espao/tab pelo dois pontos, que o caracterutilizado para separar as informaes no /etc/passwd.Depois s comparar o terceiro campo (UID) e

    verificar se maior ou igual a 1000 (no slackware osusurios comeam no 1000) e imprimir o primeiro -;).

    Outro exemplo bom:

    # ps aux | \awk '/^usuario/ { system("kill -9 "$2) }'

    Esse serve para derrubar um usurio (e todos osprogramas dele que estiverem sendo executados). Anovidade a utilizar a instruo "system", com elapodemos executar um comando do sistema (no nossocaso o "kill -9") fcil adaptar para ao invs de matarpor um determinado usurio, matar pelo nome do

    programa (sim... para matar aqueles programas maleducados).

    Esse interessante para imprimir s o nome dospacotes instalados, sem a verso e arquitetura:

    $ ls -1 /var/log/packages/ | \> awk 'BEGIN { FS="-" ; OFS="-" }> { NF=NF-3 ; print $0 }'a2ps

    aaa_baseaaa_elflibs...x11-fonts-miscx11-fonts-scalex11-xdmx...ytalkzlibzsh

    Utilizamos nesse comando o "BEGIN", que executado antes de processar o arquivo. Como ele"casa" antes de qualquer linha de entrada serprocessada, o lugar ideal para colocar inicializaode variveis. E, no nosso caso ns iniciamos duasdelas: FS, que indica o separador de campo (identico ao -F) e o OFS que o separador de campopara sada; sem o OFS o nome do "x11-xdmx" sairia"x11 xdmx" que no o que queremos. J na outralinha vem um macete... os nomes dos pacotes doslackware so assim:

    nome-versao-arquitetura-versao_do_pacote

    E "nome" pode ter qualquer tamanho, separado porhfens. O que ns sabemos que depois do nome,

    existem apenas trs outros campos. A vem o truque.Para cada linha ns dizemos que ela possui trscampos a menos (NF=NF-3) e depois s imprimir alinha completa -;).

    Bom, e com essas ltimas dicas terminamos o artigo -:). Espero que tenha sido til.

    Piter PUNK

    PROGRAMAO

  • 8/6/2019 Slack Zine 16

    7/20

    7SlackwareZinehttp://www.slackwarezine.com.br

    ANLISE DE LIVRO

    Optimizing Linux

    PerformanceUm guia para maximizar o desempenho de aplicaes para LinuxOk, no propriamente um artigo tcnico; mascobre um livro eminentemente tcnico e sobreum assunto que acredito ser do interesse de vriosadministradores de sistemas e desenvolvedores:anlise de performance. E o livro bom.

    O prprio autor do livro

    oferece a motivao para aleitura do mesmo:

    ". Um sistema bem afinadopode fazer mais trabalhocom menos recursos;. Uma aplicao bemafinada pode rodar emhardware mais antigo;. Um desktop bem afinadopode economizar o tempodos usurios e;. Um servidor bem afinadopode disponibilizar um

    servio de maior qualidadepara mais usurios."

    E, para conseguir umsistema "bem afinado" preciso primeiro saber oque est acontecendo, ondeest o problema e comoarrum-lo.

    Pode-se dizer que o livro vaimuito bem na parte deidentificao do problema,mostrando diversasferramentas e o que cadauma delas indica; mas falhana hora do "como arrum-lo". Como alguns comandosdo estatsticas dediferentes reas do sistema,eles so revisitados vrias

    vezes durante o livro (e semrepetir informaes); assim,o comando ps apresentado tanto na parte de anlisede CPU, como na de memria e na de uso de disco. O

    vmstat e o oprofile tambm so presenas recorrentes.

    Onde o livro deixa a desejar na parte de comocorrigir os problemas encontrados. Para quem temcomo pblico-alvo "administradores de sistemas,

    desevolvedores de software e usurios finais" osexemplos de anlise de performance e soluo dadosno final do livro no so muito animadores: Umproblema em um filtro de imagem no GIMP,Problemas de Latncia na Nautilus e Lentides

    Peridicas devido aoPre-Link.

    Administradores voficar deprimidos ao verque nenhum dosexemplos cobreservidores de arquivos,web ou banco de dadosque so os maiorespepinos que caem nocolo dos sysadmins. E...bom, apesar dosexemplos serem deaplicaes para ousurio final, noimagino muitos

    usurios editando ocdigo dos filtros,rodando oprofile paraidentificar a linha decdigo com problema...alis, no imagino o queum usurio final fariacom um livro de anlisede performance.

    Mesmo com essaressalva, o livro umaboa compra e vale apena. Apresenta umasrie de boasferramentas e de comous-las. Apesar daescolha infeliz dosexemplos (ou feliz se

    voc for umdesenvolvedor) visvelo conhecimento doautor na rea de anlise

    de performance e otimizao. E ele consegue ser bemdidtico e passar parte desse conhecimento para oleitor, o que uma qualidade rara.

    Piter PUNK

    Optimizing Linux PerformancePhillip G. EzoltPrentice-Hall/HP Books384 pginas

  • 8/6/2019 Slack Zine 16

    8/20

    8 SlackwareZine http://www.slackwarezine.com.br

    Neste artigo vamos ver o porque do init ser toimportante e suas vrias utilidades, desde aexecuo dos scripts de inicializao at o restartautomtico daquele servio importantssimo quenunca pode estar parado.O init ou pai de todos os processos - como maisconhecido - responsvel pela inicializao dosprimeiros processos do sistema operacional. Esta

    fama devido ao fato de ser o primeiro processoentrar em execuo, nada mais digno de ser o donodo primeiro pid, o PID 1.

    Vamos ver como o fluxograma de execuo do init:

    Esse processo ir ficando mais claro conforme aleitura do artigo.

    Definies do /etc/inittab

    Toda a configurao do init feita atravs do arquivo/etc/inittab seguindo a sintaxe:

    id:runlevels:actions:process

    Como vocs podem ver, cada campo separado por

    dois pontos. Vamos entender o que significa cada umdesses campos:

    id Apenas uma identificao para diferenciar achamada para o init. possvel utilizar at 4caracteres nesse campo.

    runlevels Aqui colocamos o nmero do runlevel queser executada a chamada. De 0-6, s ou S.

    actions Para este campo temos 15 opes: respawn,wait, once, boot, bootwait, off, ondemand,initdefault, sysinit, powerwait, powerfailtnow,crtlaltdel e kbrequest.

    process O processo em si que queremos que sejaexecutado.

    Agora vamos analisar um inittab deverdade!

    Para analisarmos, vou pegar como exemplo o arquivode configurao /etc/inittab do Slackware 11.0,modificado pelo Patrick.

    Quadro 1: Lista de "actions"

    respawn Usado para iniciar e reinicializar oprocesso se o mesmo finalizar.

    wait Usado para iniciar o processo. O init ficaaguardando at que o processo sejafinalizado.

    once Usado para inicar o processo relacionado

    ao runlevel em especfico.boot O processo ser executado durante oboot. (Para este campo, o runlevel ignorado.)

    bootwait O processo ser executado durante oboot. Porm, o init espera pelo seutermino para seguir a diante. (Para estecampo, o runlevel tambm ignorado.)

    off Para desabilitar o processo. ( possvelfazer isto tambm comentando a linha.)

    ondemand Serve para iniciar servios quando iniciado o runlevel A, B ou C. Que sorunlevels especiais e quando iniciados nomudam o nvel de execuo da mquina.

    initdefault Diz ao init qual o initdefault utilizado.(O campo process ignorado).sysinit Processo a ser executado ainda no Kernel

    Boot.powerwait Processo que ser executado ao ter

    uma falha de energia eltrica. O init ficaaguardando at que o processo sejafinalizado.

    powerfail Igualmente para o de cima, apenas oinit no espera o trmino do seu processo.

    powerokwait Processo a ser executado quando aenergia eltrica estiver estabilizada.

    powerfailnowProcesso a ser executado quandoas baterias do no-breaks (se existir)

    estiverem vazias.ctrlaltdel Processo a ser executado quando

    pressionarmos as teclas Ctrl+Alt+Del.kbrequest Processo a ser executado quando o

    init receber um SIGNAL do teclado a serdefinido.

    ADMINISTRAO

    A Magia do initO init o primeiro processo chamado pelo kernel e, alm de coordenar a

    inicializao do sistema, chamando os scripts de inicializao apropriados;tambm o pai de todos os outros processos da mquina

  • 8/6/2019 Slack Zine 16

    9/20

    9SlackwareZinehttp://www.slackwarezine.com.br

    # Default runlevel. (Do not set to 0 or 6)id:3:initdefault:

    Como vimos no fluxograma, o init procura peloinitdefault no /etc/inittab para saber qual runlevelpadro ir executar.

    Vamos fazer uma pausa e ver os runlevel's:

    No /etc/inittab que estamos analisando, depois doscrditos e copyright, temos uma tabela comentada.(Habitue-se a ler scripts, arquivos de configuraoantes de sair alterando. Muitos desenvolvedorescolocam muita informao til nos comentrios,principalmente o Patrick ;)).

    # These are the default runlevels in \Slackware:

    # 0 = halt

    # 1 = single user mode# 2 = unused (but configured the same \as runlevel 3)

    # 3 = multiuser mode (default Slackware \runlevel)

    # 4 = X11 with KDM/GDM/XDM (session \managers)

    # 5 = unused (but configured the same as \runlevel 3)

    # 6 = reboot

    O Patrick fez essa tabela e padronizou os runlevels 2,3, 4 e 5. Na verdade, esses so os runlevels quepodemos modificar. Os runlevels 0, 1 e 6 so

    reservados. Ou seja, no importa qual distribuioesteja, init 6 sempre rebootar seu sistema, j os inits3 ou 4 podem ser que tenham comportamentosdiferentes.

    Em qualquer momento podemos mudar de runlevelapenas digitando init X. Onde X o nmero dorunlevel, de 0-6 e ainda podemos utilizar S ou s parasingle user mode.

    Voltando a primeira linha (descomentada) do inittab,ela diz ao init que o nosso runlevel padro o 3(multiuser mode).

    # System initialization (runs when system \boots).

    si:S:sysinit:/etc/rc.d/rc.S

    Este script ser executado ainda em System boot. O Sno campo runlevel no diz nada, pois os campossysinit, boot e bootwait ignoram o campo runlevel.

    # Script to run when going single user \(runlevel 1).

    su:1S:wait:/etc/rc.d/rc.K

    Este script ser rodado apenas quando o runlevel forSingle user. (O init ir esperar sua execuo finalizar

    para pular para o prximo processo.)

    Reproduo do material contido nesta revista permitida desde que se incluam os crditos aosautores e a frase:

    "Reproduzida da Slackware Zine #16

    www.slackwarezine.com.br"

    com fonte igual ou maior do corpo do texto eem local visvel

    EditoresClayton Eduardo dos SantosDeives MichellisLeandro ToledoLindolfo RodriguesPiter PunkTiago Machado Costa

    Artigos nessa edio

    Clayton Eduardo dos SantosLeandro ToledoLindolfo RodriguesPiter PunkSulamita Garcia

    DicasLindolfo RodriguesPiter PunkTiago Machado Costa

    Imagem de CapaGuaxinim(baseado em ilustruo de Piter Punk)

  • 8/6/2019 Slack Zine 16

    10/20

    10 SlackwareZine http://www.slackwarezine.com.br

    # Script to run when going multi user.rc:2345:wait:/etc/rc.d/rc.M

    Script executado nos runlevels de 2 a 5, Multi user. (Oinit ir esperar sua execuo finalizar para pular parao prximo processo.)

    # What to do at the "Three Finger Salute".ca::ctrlaltdel:/sbin/shutdown -t5 -r now

    Esta linha diz que ao apertarmos a combinaoCtrl+Alt+Del, nosso sistema ir reinicializar em 5segundos. (Podemos alterar esta combinao deteclas para o processo que desejarmos.)

    # Runlevel 0 halts the system.l0:0:wait:/etc/rc.d/rc.0

    Ao entrar no runlevel 0, executar o script paradesligar o sistema.

    # Runlevel 6 reboots the system.l6:6:wait:/etc/rc.d/rc.6

    Ao entrar no runlevel 6, executar o script dereinicilizar o sistema.

    # What to do when power fails.pf::powerfail:/sbin/genpowerfail start

    Para aquelas pessoas que tem aqueles super powerultra no-breaks, esta opo pode ser muitointeressante. O no-break avisa que a uma falha deenergia eltrica, o init detecta e executa o

    genpowerfail, que desliga automaticamente ocomputador.

    # If power is back, cancel the running \shutdown.

    pg::powerokwait:/sbin/genpowerfail stop

    Assim como a opo de cima, se a energia eltricaestabilizar, este script cancela o desligamento docomputador.

    # These are the standard console login# getties in multiuser mode:c1:1235:respawn:/sbin/agetty 38400 tty1 linux

    c2:1235:respawn:/sbin/agetty 38400 tty2 linuxc3:1235:respawn:/sbin/agetty 38400 tty3 linux

    ADMINISTRAO

    c4:1235:respawn:/sbin/agetty 38400 tty4 linuxc5:1235:respawn:/sbin/agetty 38400 tty5 linuxc6:12345:respawn:/sbin/agetty 38400 tty6 linux

    Os id's de c1 a c5 so responsveis de executar o/sbin/agetty, consoles para podermos logar no sistema(os famosos Alt+F1, Alt+F2, ..., Alt+F6). O id c6

    tambm, porm tem o diferencial de ser inicializadono runlevel 4 (ambiente grfico). O action _respawn_diz ao sistema para reiniciliz-lo caso ele caia.

    # Runlevel 4 used to be for an X window \only system, until we discovered

    # that it throws init into a loop that keeps \your load avg at least 1 all

    # the time. Thus, there is now one getty \opened on tty6. Hopefully no one

    # will notice. ;^)# It might not be bad to have one text \

    console anyway, in case something# happens to X.x1:4:respawn:/etc/rc.d/rc.4

    Esta linha diz ao sistema para executar o scriptresponsvel pelo login grfico, apenas no runlevel 4(ambiente grfico). O action _respawn_ diz ao sistemapara reiniciliz-lo caso ele caia.

    Servios Automticos

    Com o init, podemos colocar qualquer processo paraser inicializado e reinicializado automaticamente,caso ele morra. O action _respawn_ responsvel porisso. Vamos ver um exemplo:

    AP:3:respawn:/etc/rc.d/rc.httpd restart

    Colocamos o apache para ser monitorado ereinicializado caso ele caia. Chamei o id de AP e essaao valida apenas para o runlevel 3.

    # init q

    O comando init q ir reler o /etc/inittab com a novaconfigurao. E o apache ser reiniciado sempre quecair (e iniciado no boot).

    Leandro Toledo

    slackware

    to the real nerds

  • 8/6/2019 Slack Zine 16

    11/20

    11SlackwareZinehttp://www.slackwarezine.com.br

    C luster um termo largamente utilizado pararepresentar um conjunto de computadorescombinados em um nico sistema unificado, atravsde software e rede. Em termos mais simplificados,quando dois ou mais computadores so utilizados

    juntos para resolver um problema, isto consideradoum cluster. Clusters so tipicamente utilizados para

    Alta Disponibilidade (HA - High Availability) paramaior confiabilidade, ou Computao de AltaPerformance (HPC - High Performance Computing)para fornecer maior poder computacional do que umnico computador pode fornecer."[1]

    Um outro tipo de cluster o cluster de balanceamentode carga(LB - Load Balance). Este cluster utiliza

    vrias mquinas para atenderem as requisies dedeterminado servio, agindo como um grandecomputador com capacidade para muitas requisiesparalelas. Este conceito acaba proporcionando, demaneira indireta, HA e HPC, por combinar vriasmquinas em um ambiente que pode processar maisrequisies do que uma nica mquina, e poraumentar a confiabilidade de um sistema.

    Os componentes de um ambiente de LB so dispostosem nodo(s) diretor(es) - o(s) director(s) ou load

    balancer - e os servidores reais. O papel do director receber as requisies dos clientes e repassar para osservidores reais, de acordo com algumas regrasestabelecidas. A quantidade de conexes repassadapara um dos servidores reais pode seguir vriosmtodos - desde o algoritmo mais simples, onde cadamquina recebe uma conexo por vez, ate acombinao de medidas e prioridades, atribuindo umpeso a cada servidor real.

    No Linux, o projeto mais completo para ambientes deload balance o LVS - Linux Virtual Server. O LVS um modulo inserido no kernel (Linux KernelConfiguration -> Networking -> Networking Options -

    > IP: Virtual Server Configuration), e controladoatravs do lvsadmin, um comando define as regraspara montar o ambiente: quem so os servidores

    reais, que servios eles atendem e qual a carga deconexes para cada um. O prprio node director podeatender estas requisies ou no, depende daconfigurao.

    Estes ambientes so facilmente escalveis. Umamquina pode ser inserida no ambiente sem impactarnos servios e mquinas j includos. E se umamquina deixa de responder no ambiente, o director acoloca de "quarentena", removendo-a da lista deservidores reais e checando periodicamente se ela

    voltou ao ambiente. Enquanto ela no responder, odirector no envia mais requisies a esta mquina. A

    alta disponibilidade ento conseguida desta forma,mesmo que uma mquina deixe de responder, asoutras continuaro atendendo o servio. Precisamosento nos preocupar com a alta disponibilidade donodo director, pois se ele deixar de responder, todo oambiente pra.

    Persistncia

    Muitas questes precisam ser avaliadas quandopretendemos montar um ambiente de cluster. Alm,claro, da capacidade das mquinas para processar o

    volume de dados em tempo satisfatrio, precisamos

    pensar no fluxo das informaes. Por exemplo, oambiente de load balance parece perfeito paramelhorar a vida dos usurios, porm algumassituaes ele pode no agir da forma esperada.

    Geralmente, quando falamos de LB, estamospensando em conexes isoladas. Desta formaqualquer servidor real pode atender a qualquerconexo que estiver chegando, sem se preocupar deonde a conexo est vindo ou para onde ela vai.Porm para alguns servios e situaes isto no sempre verdade. Consideremos por exemplo oprotocolo FTP.

    Quando um cliente estabelece uma conexo FTP,existe uma conexo de controle (que segue pela porta

    Clusters de

    Balanceamentode Carga em LinuxO que fazer quando um servidor no agenta mais executar as tarefas quedeveria? A soluo tradicional comprar outra mquina mais poderosamas nem sempre essa mquina existe ou cabe no oramento; essa a

    hora de pensar em balanceamento de carga e distribuir tarefas.

    ESPECIAL

  • 8/6/2019 Slack Zine 16

    12/20

    12 SlackwareZine http://www.slackwarezine.com.br

    21) para enviar comandos e a conexo dos dadospropriamente ditos (que seguem pela porta 20).Quando a conexo ativa, o cliente informa aoservidor qual porta que atende conexo de dadospara transfer-los. Porm para uma conexo passiva, oservidor informa ao cliente a porta que ele estatendendo, e ento o cliente inicia uma conexo para

    aquela porta. Para ambientes em VS/TUN e VS/DR, odirector atua apenas na conexo cliente-servidor, nono caminho inverso, ento impossvel para odirector capturar a porta do pacote que vaidiretamente ao cliente.

    Para resolver isto, precisamos ativar a persistnciaentre as conexes. Desta forma, o LVS ir manter umatabela com o registro desta conexo em uma tabelahash, contendo os dados do IP e porta da origem, IP eporta do destino virtual, IP e porta do destino noservidor real. Para FTP, o valor das portas 0, entoqualquer conexo vinda do cliente redirecionadapara o mesmo servidor real e associados mesmaconexo, de acordo com a entrada salva na tabela.Para outros servios, as portas de destino somantidas porm a do cliente pode variar que o LVS

    vai manter a persistncia para o mesmo servidor real.

    Porm as vezes nem isto suficiente. Por exemplo,existem grupos de proxys para acessos emdeterminados sites, para diminuir a carga. S quepara o cliente, ele pediu uma requisio para umservidor e outro atendeu. Ento um outro tipo depersistncia seria de um range de rede, que mantido para saber que conexes para aqueles ipsprecisam ser persistentes.

    Como o LVS redireciona as conexes

    O LVS pode redirecionar as conexes vindas dosclientes, para os servidores reais, atravs de NAT,tnel IP ou roteamento direto (Direct Routing). Nocaso de tnel IP ou DR, existe um efeito colateral queprecisamos estar atentos.

    Pelo NAT, quando o director recebe uma conexo paraum servio que est configurado, ele escolhe umservidor real de acordo com as regras, modifica o IPde destino com o IP do servidor real escolhido ereenvia. Ao receber a resposta, o director volta opacote para o cliente, contendo o IP original comoorigem da resposta. Isto geralmente usado em redeslocais, e o mascaramento geralmente ocorre dodirector com IP vlido para a Internet e uma redelocal de IPs invlidos, por exemplo.

    Pelo tnel IP, o director adiciona outroencapsulamento IP sem modificar o cabealhooriginal. Isto perfeito para redes geogrficamentedistribudas, onde os servidores reais no temnecessariamente o mesmo endereo de rede. Istoporm exige que os servidores reais tenham suporte aencapsulamento IP.

    No DR, o director redireciona os pacotes diretamenteao servidor real. A partir disso a comunicao com o

    cliente fica a cargo do servidor real, e o director noatua mais nesta conexo. Para fazer isto, o directormodifica o cabealho do pacote, adicionando o MACdo servidor real como endereo fsico para o IP dedestino, e o retransmite pela rede. Isto pode causaralguns problemas.

    Nos clusters de DR e tunelamento IP, o IP de servio compartilhado entre o director e os servidores reais.Todos tem uma interface configurada com este IP. Emalgumas configuraes que os servidores reais estona mesma rede que o director, e os servidores reaisresponderem uma requisio ARP, havero problemas.Os pacotes sero respondidos hora pelo director, horapor um servidor real, hora por outro, e o clusterinteiro no vai funcionar direito. Por isto, nestesclusters, precisamos garantir que apenas o directorir responder as requisies ARP para o IP de servio.

    Existem algumas formas como isto pode serconfigurado, e explic-las assunto suficiente paraoutro artigo. Caso queira saber mais sobre isto,consulte [2].

    Algoritmos

    O LVS pode distribuir as conexes baseado em vriostipos de algoritmos: Round-Robin, por peso, peloservidor que tem menos conexes e outros. Todos temsuas vantagens e desvantagens, devendo oadministrador escolher de acordo com o poder deprocessamento dos servidores reais, com aquantidade de conexes recebidas e com o tipo decarga destas conexes. Os mais comuns so estes:

    Round-Robin: Seqencial, cada servidor recebe umaconexo por vez. Desta forma, em um cluster de trsservidores reais, a primeira conexo ser enviadapara o servidor real 1, a segunda para o servidor real2, a terceira para o servidor real 3, a quarta para oservidor 1 e assim por diante. Este algoritmos tratatodos os servidores reais igualmente, sem levar emconta o nmero de conexes recebidas ou o tempo deresposta que cada servidor fornece.

    Round-Robin com Pesos: Cada servidor recebe umpeso e o director ir distribuir as conexes com basenestes pesos. Assim, um servidor real com peso 4 irreceber 2 vezes mais conexes que um servidor realcom peso 2, que ir receber 2 vezes mais conexesque um servidor real com peso 1. um algoritmosmelhor estruturado para ambientes em que osservidores reais com diferentes velocidades. Porm seas conexes forem de cargas variadas, o servidor realcom maior prioridade pode acabar recebendo asconexes de maior peso e acabar sobrecarregado,enquanto outros servidores de menor prioridadepermanecem desocupados.

    Menos conexes: as conexes so redirecionadas parao servidor real com menos conexes ativas. Este um

    algoritmo dinmico, pois precisa checar quantasconexes esto ativas em determinado instante. umbom algoritmo para quando a quantidade de conexes

    ESPECIAL

  • 8/6/2019 Slack Zine 16

    13/20

    13SlackwareZinehttp://www.slackwarezine.com.br

    recebidas varia bastante.

    Menos conexes com pesos: combina a busca peloservidor real com menos conexes, porm atribuindopesos a estes. Um servidor real com capacidade duas

    vezes maior que um outro terminar de processarsuas conexes e ficar ocioso, enquanto outros podem

    ficar sobrecarregados. Combinando estes dois tipos, oalgoritmo dinamicamente descobrir qual o servidorpode atender melhor em determinado momento.

    Existe tambm outros algoritmos como o hash[3] - oservidor monta uma tabela hash e redireciona asconexes para os servidores por esta tabela, com ousem pesos -, e o de "sem filas" - buscando sempre umservidor idle ou com menor tempo de resposta.

    Configuraes

    Finalmente, vamos colocar a

    mo na massa. Para quemquer saber como funciona abase de tudo, o ipvsadm. Osoftware pode serencontrado em [4], caso suadistribuio no tenha opacote pronto. Alis, casono tenha, envie comosugesto para o mantenedor;)

    Aps a receita padro -make && make install - vocter instalado o ipvsadm,

    ipvsadm-save e ipvsadm-restore. Voc pode pensarno ipvsadm como similar aoiptables - ele iradicionando as regras ebusc-las na ordem que

    voc especificar. Vamosdetalhar melhor comexemplos. Para o protocoloFTP, lembrando de ativar apersistncia:

    ipvsadm -A -t virtual.domain.org:ftp -p 540ipvsadm -a -t virtual.domain.org:ftp -r192.168.1.2 -mipvsadm -a -t virtual.domain.org:ftp -r192.168.1.3 -m

    A primeira linha adiciona um servio nas regras com aopo -A, dizendo que para isto o protocolo usado otcp (-t), e que vai responder pelo endereo

    virtual.domain.org(poderia ser um IP, geralmente o IPde servio) no servio de ftp. Ativamos a persistnciacom -p, e neste caso configuramos o timeout para 540segundos(poderia no ser especificado e o ipvsadmassumiria o valor padro de 300 segundos).

    As linhas seguintes adicionam servidores reais com aopo -a ao servio especificado aps o -t, dizendoque o endereo do servidor real o IP que segue a

    opo -r e usando o mtodo de mascaramento porNAT(-m).

    A partir da, podemos adicionar vrios servios comalgoritmos diferentes, e servidores reais distintos.Porm o ldirectord agrupa esta configurao toda emum nico arquivo, se encarregando de carregar as

    regras e controlar os servidores reais.

    Ultramonkey, LVS e ldirectord

    O Ultramonkey um projeto que combina o LVS,gerenciado atravs do ldirectord, e o heartbeat paragerenciar as regras e servios no director. Oheartbeat ira fazer a alta disponibilidade do director,e a alta disponibilidade dos servidores reais intrnseco ao LVS. Ele permite vrias combinaes eopes para melhor adaptao a diferentes ambientese necessidades.

    Alm de gerenciar as regras do LVS, o ldirectordtambm checa periodicamente se os serviosoferecidos pelos servidores reais esto funcionandocorretamente. Ele possui suporte a servidores HTTP,HTTPS, FTP, IMAP, POP, SMTP, LDAP, NNTP e MySQL.De acordo com o servio configurado, ele estabeleceuma conexo apropriada com o servio e checa seest tudo funcionando. Os software pode serencontrado em [5]. O arquivo de configurao oldirectord.conf, geralmente instalado no /etc. Vamos

    ver algumas opes do arquivo de configurao.

    Para o servio apresentado no Quadro 1, o director irse conectar nos servidores reais e buscar a pginaindex.html. Se algum erro acontecer, ele remover o

    servidor real da sua lista.No Quadro 2 o servio FTP, algumas opes

    Quadro 1: Servidor HTTP

    # Virtual Server for HTTPvirtual=192.168.6.240:80

    fallback=127.0.0.1:80

    real=192.168.7.4:80 masq

    real=192.168.7.5:80 masq

    service=httprequest="index.html"

    receive="Test Page"

    scheduler=rr

    #persistent=600

    protocol=tcpchecktype=negotiate

    IP Virtual (de servio)Se nenhum servidor realresponder, quem respondeServidor real, IP, porta emodo de conexoServidor real, IP, porta emodo de conexoQual o servioQue pgina buscar(opo

    para servios http)

    Qual o escalonador(algoritmo) - RoundRobinneste casoPersistncia (desabilitadaneste caso)Protocolo

  • 8/6/2019 Slack Zine 16

    14/20

    14 SlackwareZine http://www.slackwarezine.com.br

    mudaram, para incluindousurio e senha para checarno apenas se a porta estouvindo, mas se o servioest executando a contento.

    Como este servio o

    MySQL, adicionamos qualbanco de dados e qual queryenviar para checar o servio.

    Caso estejam curiosos de oque o checktype, ele oparmetro que define como

    vai ser a checagem. Elepode ser negotiate, connect,N, off ou on. Connect irapenas tentar fazer umaconexo TCP/IP, ento noprecisamos das opesrequest e receive. Se estconfigurado para negotiate,o ldirector ir enviar umarequisio conforme

    especificada em request, e na resposta procurar astring definida em receive. Se a opo for configurada

    com um nmero N, ento a cada N conexes oldirectord ir efetuar uma checagem. Off desliga achecagem, e on serve mais para ativar a checagemcaso voc tenha parado momentaneamente.

    Embora extenso, este artigo tem um apanhado geralde um assunto com muitas mais possibilidades:otimizao, sincronizao, defesas contra DoS.

    Sulamita Garcia

    Referncias:

    http://www.austintek.com/LVS/LVS-HOWTO/\mini-HOWTO/LVS-mini-HOWTO-pt.htmlhttp://listas.linuxchix.org.br/mailman/\

    listinfo/linux-ha[1] http://www.beowulf.org/overview/index.html[2] http://www.linuxvirtualserver.org/\

    docs/arp.html[3] http://pt.wikipedia.org/wiki/\

    Tabela_hash[4] http://www.linuxvirtualserver.org/\

    software/ipvs.html[5] http://www.ultramonkey.org/download/3/

    Quadro 2: Servidor FTP

    virtual=192.168.6.240:21fallback=127.0.0.1:21

    real=192.168.7.4:21 masq

    real=192.168.7.5:21 masq

    service=ftprequest="welcome.msg"receive="Welcome"login="anonymous"passwd="[email protected]"scheduler=rr

    #persistent=600

    protocol=tcpchecktype=negotiate

    IP Virtual(de servio)Se nenhum servidor realresponder, quem respondeServidor real, IP, porta emodo de conexoServidor real, IP, porta emodo de conexoQual o servioQue arquivo requisitar

    Com qual usurioCom qual senhaQual o escalonador(algoritmo) - RoundRobinneste casoPersistncia (desabilitadaneste caso)

    Protocolo

    Quadro 3: Servidor MySQL

    Virtual = 192.168.6.240:3306fallback=127.0.0.1:3306 masq

    real=192.168.7.4:3306 masq

    real=192.168.7.5:3306 masq

    login = "readuser"passwd = "genericpassword"database = "portal"request = "SELECT * FROM link"scheduler = wrr

    checktype = negotiate

    IP Virtual (de servio)Se nenhum servidor realresponder, quem respondeServidor real, IP, porta e modode conexoServidor real, IP, porta e modo

    de conexoCom qual usurioCom qual senhaQual BD checarQual a queryQual o escalonador (algoritmo):RoundRobin com pesos neste caso

    ESPECIAL

  • 8/6/2019 Slack Zine 16

    15/20

    15SlackwareZinehttp://www.slackwarezine.com.br

    Introduo

    desnecessrio destacar a importncia que oscomputadores possuem nos dias atuais. Tambm desnecessrio dizer que existe um "lobby" muitogrande entre "alguns" fabricantes de hardware esoftware que insistem em dizer ao usurio que eleprecisa de uma mquina Dual-Core com 1 ou 2gigabytes de memria RAM para navegar na internet,

    ler seus e-mails e escrever documentos de texto comqualidade grfica satisfatria, o que, na prtica,caracteriza uma venda casada "disfarada". Noentanto, ao contrrio dos exemplos anteriores, importante dizer que algumas aplicaes so de fato,extremamente dependentes de recursoscomputacionais, como por exemplo, a renderizao deanimaes 3D complexas e softwares de modelagem esimulao especficos empregados em aplicaescientficas.

    Havia um tempo em que se pensava que aplicaescomo essas s poderiam ser concludas maisrapidamente caso novos hardwares fossem

    adquiridos, com processadores mais velozes e maiorquantidade de memria RAM. evidente que essa uma soluo, no entanto, dependendo da aplicaoutilizada, ela no a nica e tampouco a mais

    vantajosa.

    Com o surgimento da computao distribuda, autilizao de recursos de processamento, memria earmazenamento de computadores distintos aplicadosna execuo de um objetivo comun tornou-se possvel,dando incio a uma nova realidade que possui comoprincipais benefcios a possibilidade real de variaodo fator escalabilidade e uma maior viabilidade doponto de vista econmico.

    Atualmente existem vrias aplicaes fantsticas que

    fazem uso desse tipo de tecnologia de maneiraextremamente eficiente. As grandes "vedetes" so osclusters e os servidores de terminais grficos, quepermitem a utilizao de hardware anteriormenteconsiderado obsoleto mas que, quando utilizado dessaforma, ainda possuem uma sobrevida considervel.

    Como o assunto em questo so os clusters, voutentar dar uma viso geral do assunto, ainda que

    breve, mas espero que suficientemente esclarecedora.Existem basicamente trs tipos principais de cluster:

    Clusters de alta disponibilidade: Consistem de umconjunto de duas ou mais mquinas comservios "redundantes" e interligadas entre si.O motivo da existncia de uma conexoexclusiva entre essas mquinas "redundantes" a frequente monitorao dos serviosfornecidos pela mquina mestre realizadapelas mquinas escravas, atravs demensagens do tipo "keep alive", por exemplo.Se uma das mquinas escravas ousecundrias, detectar que o servio provido

    pela mquina mestre no est operacional poralgum motivo, esta assume o controle doservio no lugar da mquina primria.

    Clusters de balanceamento de carga: Esse tipo decluster tem como finalidade distribuirrequisies de servio originadas de mquinasclientes entre um conjunto de servidoresidnticos da melhor forma possvel,considerando como mtrica a disponibilidadede recursos destes, minimizando dessa forma,a ocorrncia de eventos de indiponibilidade deservios, por exemplo. A medida que ademanda de acesso ao servio aumenta, basta

    que o administrador adicione novos ns aocluster de servidores.

    Construindo um

    Cluster deOpenMosix com oSlackware 11.0Nesse artigo, iremos implementar um cluster openMosix baseado emkernel 2.4.26 utilizando como base, o bom e velho slackware. :)

    ESPECIAL

  • 8/6/2019 Slack Zine 16

    16/20

    16 SlackwareZine http://www.slackwarezine.com.br

    Clusters voltados para computao de altodesempenho: nessa categoria que o clusteropenMosix (entre outros) se enquadra. Afinalidade desse tipo de cluster distribuirprocessos entre as mquinas que compoem ocluster. Cada uma dessas mquinas tambmchamada de n. A mtrica utilizada para aeleio da mquina ideal a disponibilidadede recursos de memria e cpu de cada um dosns no momento em que o processo deve serexportado. Desse modo, mquinas ociosas queestejam executando processos consideradossimples so fortes candidatas a receberemprocessos remotos de outros ns do cluster.

    O openMosix diferencia-se de outros tipos de cluster,por no exigir mudanas no cdigo fonte dasaplicaes nele utilizadas. Quando aplicado ao kernelLinux, ele se encarregada de exportar os processos

    entre os ns do cluster e receber os resultados devolta. Outros tipos de cluster populares, como oBeowulf, por exemplo, utilizam bibliotecas especficas(PVM e MPI) que realizam essa tarefa, mas exigemque a aplicao seja escrita considerando aspectos deparalelismo, o que, de certo modo, limitaconsideravelmente sua utilizao.

    Instalao

    A implementao do cluster openMosix relativamente simples, afinal, trata-se na prtica, deapenas um patch de kernel. No entanto, algunspontos da documentao oficial esto desatualizadose podem causar alguma confuso. O sistema dearquivos nativo do openMosix, o oMFS, por exemplo,foi retirado a partir da verso 2.4.26-1 por questesde segurana. Um outro "problema" ocorre durante oprocesso de compilao do kernel, em funo da

    verso do gcc utilizado no slackware 11. Desse modo,teremos tambm que trabalhar com uma versoanterior do compilador para que o cdigo compilesem problemas. Mos a obra:

    Durante todo o processo de instalao/configurao,por questes de praticidade, estou considerando quetodos os downloads esto sendo armazenados no

    diretrio /root e que "root" seja o usurio corrente.Baixando os arquivos necessrios:

    # wget http://www.if-usp.lkams.kernel\.org/pub/linux/kernel/v2.4/\linux-2.4.26.tar.bz2

    # wget http://ufpr.dl.sourceforge.net/\sourceforge/openmosix/\openMosix-2.4.26-1.bz2

    # wget http://ufpr.dl.sourceforge.net/\sourceforge/openmosix/\openmosix-tools-0.3.6-2.tar.gz

    Resolvendo o problema de compatibilidade do gcc:

    # wget http://ftp.belnet.be/packages/\

    slackware/slackware-9.1/\slackware/d/\gcc-3.2.3-i486-2.tgz

    # removepkg gcc-3.4.6-i486-1.tgz# installpkg gcc-3.2.3-i486-2.tgz

    O primeiro passo consiste em instalar o kernel

    correspondente verso mais recente do openMosix eem seguida aplicar o patch sobre ele. Nesse caso,estamos falando do kernel 2.4.26, cujo download foirealizado na seo anterior. Vamos ao trabalho:

    # cd /usr/src# cp /root/linux-2.4.26.tar.bz2 .# tar -xvjf linux-2.4.26.tar.bz2# cd linux-2.4.26# cp /root/openMosix-2.4.26-1.bz2 .# bunzip2 openMosix-2.4.26-1.bz2# patch -Np1 < openMosix-2.4.26-1# cp config .config# make menuconfig# make dep# make bzImage# make modules# make modules_install

    Em seguida, aps algumas xcaras de caf, vamosadicionar uma entrada referente ao kernel recm-compilado ao lilo:

    # cd arch/i386/boot# cp bzImage /boot/vmlinuz-2.4.26# vim /etc/lilo.conf

    Adicione uma entrada no seu menu de boot apontantopara /boot/vmlinuz-2.4.26, semelhante ao exemplo aseguir:

    # LILO configuration file# generated by 'liloconfig'## Start LILO global sectionboot = /dev/hdaprompttimeout = 500# VESA framebuffer console \

    @ 1024x768x256vga = 773

    # Linux bootable partition config\begins

    image = /boot/vmlinuzroot = /dev/hda1label = Slackwareread-only # Non-UMSDOS filesystems\

    should be mounted read-only for\checking

    # Linux bootable partition config ends# Sua entrada referente ao openMosix\

    comea aqui# openMosix bootable partition config\

    beginsimage = /boot/vmlinuz-2.4.26

    root = /dev/hda1label = openMosix

    ESPECIAL

  • 8/6/2019 Slack Zine 16

    17/20

    17SlackwareZinehttp://www.slackwarezine.com.br

    read-only # Non-UMSDOS filesystems\should be mounted read-only for\checking

    # openMosix bootable partition config\ends

    ### E termina aqui... :) ###

    Atualize o Lilo:

    # lilo

    Se tudo der certo, voc deve ver algo do tipo:

    Added Slackware *Added openMosix

    Ateno: importante ter certeza que os parmetros"prompt" e "timeout" estejam presentes em seulilo.conf, para que voc possa optar pelo bootutilizando o kernel openMosix.

    O prximo passo instalar algumas ferramentas degerenciamento do cluster openMosix.Inicialmente, vamos criar um link simbliconecessrio durante o processo de compilao dasferramentas que sero utilizadas no cluster:

    # ln -s /usr/src/linux-2.4.26 /usr/src/\linux-openmosix

    Agora, vamos instalar as ferramentas:

    # cd /root# tar -xvzf openmosix-tools-0.3.6-2.tar\

    .gz# cd openmosix-tools-0.3.6-2.tar.gz# ./configure# make && checkinstall# installpkg openmosix-tools-0.3.6-2-\

    i386-1.tgz

    Agora iremos editar alguns arquivos de configuraonecessrios para o funcionamento do cluster:

    # vim /etc/openmosix.map

    # Static openMosix configuration# ==============================

    ## Each line in this file should contain\

    3 fields, statically mapping# IP addresses to openMosix node-numbers:## 1) The first openMosix node-number in\

    this range.# 2) The IP address of the above node\

    (or node-name from /etc/hosts).# 3) The number of nodes in this range.## Note: If you don't create a valid IP\

    node-number mapping, the\# autodiscovery daemon will be\

    started, automatically assigning# node-numbers to all visible\

    openMosix machines.##Example: 10 machines with IP addresses\

    192.168.1.50 - 192.168.1.59# which will have openMosix\

    node-numbers 1-10:#

    # 1 192.168.1.50 10## MOSIX-# IP number-of-nodes# ============================1 192.168.20.15 12 192.168.20.16 13 192.168.20.17 14 192.168.20.18 1

    Essa uma maneira de se especificar os ns docluster, ou seja, do lado esquerdo identificar o nmerodo n, no centro especificar o ip do n e no finalespecificar quantos ns devem ser considerados apartir do ip especificado. Desse modo, a seguintesintaxe tambm seria vlida, considerando que orange de ips que compoem o cluster aquiexemplificado so sequenciais:

    # MOSIX-# IP number-of-nodes# ============================# Essa instruo equivalente anterior1 192.168.20.15 4

    O ltimo passo consiste em adicionar a instruoresponsvel pela inicializao do n do cluster em umscript executado aps o boot:

    # vim /etc/rc.d/rc.local# Starting openMosix node/usr/local/sbin/setpe -w -f /etc/\

    openmosix.map

    Agora vamos reinstalar o gcc "original", disponvel emseu CD/DVD de instalao do slackware11 e removero release instalado no incio do processo:

    # removepkg gcc-3.2.3-i486-2.tgz# installpkg gcc-3.4.6-i486-1.tgz

    Por fim, vamos reiniciar a mquina e bootar com okernel do openMosix:

    # init 6

    Adicionando mais ns ao seu cluster

    Adicionar novos ns ao seu cluster uma operaosimples se voc j chegou at aqui. Basta repetir osprocedimentos anteriores em cada um dos ns emanter o arquivo /etc/openmosix.map com o mesmocontedo dos outros ns, sempre verificando se todosos ns que iro compor o cluster esto especificadosnesse arquivo. Em nosso exemplo, o cluster constitudo de quatro ns, que atendem nos ips

    192.168.20.15, 192.168.20.16, 192.168.20.17 e192.168.20.18.

  • 8/6/2019 Slack Zine 16

    18/20

    18 SlackwareZine http://www.slackwarezine.com.br

    Testando o cluster

    Agora iremos testar a funcionalidade do cluster,escrevendo e depois executando um pequeno scriptsugerido na prpria documentao do openMosixi [1]:

    # vim script_cluster.sh

    awk 'BEGIN{for(i=0;i

  • 8/6/2019 Slack Zine 16

    19/20

    19SlackwareZinehttp://www.slackwarezine.com.br

    DICAS

    Testando a Autenticao SMTP no Console

    Todo mundo que j fez um servidor de SMTP autenticado fica com um problema em mos na hora detestar. Nem sempre existe um leitor de e-mail que suporte autenticao mo. Como perl vem instaladoem vrios servidores, essa dica pode ser bastante til.

    perl -MMIME::Base64 -e 'print encode_base64("\000user\@lala.com.br\000senha")'

    Lembre de substituir "user" pelo nome de um usurio para testes, o "lala.com.br" pelo domnio correto e a"senha" pela senha (d).

    Depois usar a sada desse comando na hora da negociao com o servidor SMTP.

    AUTH PLAIN saidadocomando

    "Desentupindo" a fila de e-mailsno Postfix

    Sabe quando seu sistema de email t lerdo, evoc no sabe porque? vai ver o "queue" de e-mail, e tem mais de 300 emails, que estoerrados ou que deram erro na hora da entrega eo MTA cisma em ficar tentando mandar? apagueesse emails da fila com isso:

    mailq | awk '/MAILER/ {ID = substr($1,0,10)system("postsuper -d "ID)

    }

    Convertendo Nmeros de UmaBase para Outra

    comum utilizar o bc para fazer contas rpidas(e algumas no to rpidas assim). Mas o bc

    bem mais que isso, e com ele possvel tambmconverter nmeros entre base decimais, vejacomo simples:

    Decimal->Binario:echo "obase=2 ; numero" | bc

    Binario->Decimal:echo "ibase=2 ; numero" | bc

    Hexa->Binario:echo "ibase=16 ; obase=2 ; numero" | bc

    obase base de sada (o "o" de output) e ibase

    a base de entrada (o "i" de input). A base 10 o"padro" do bc, ento no precisa ser indicada.

    Convertendo Datas de EPOCH para um FormatoHumanamente Legvel

    Internamente os sistemas Unix-Like (e provavelmente outros) contam o tempoem segundos a partir da zero hora do dia primeiro de janeiro de 1970. A maiorparte dos programas so legais e convertem um nmero com mais de umdezena de algarismos para um formato humano. Outros programas (algumfalou squid?) gostam de escrever direto na quantidade de segundos, o quedificulta um pouco a leitura de logs.

    Se isso acontecer, um jeito fcil de descobrir uma data usando:

    date --date='1970-01-01 SEGUNDOS sec GMT'

    Onde SEGUNDOS a quantidade de segundos que o programa apresenta paravoc.

  • 8/6/2019 Slack Zine 16

    20/20

    Clayton Eduardo dos Santos, Linux desde 2003 ecom Slackware desde 2004. Atualmentedesenvolve seu projeto de pesquisa de

    Doutorado no Departamento de EngenhariaEltrica na USP de So Carlos. tambmentusiasta da era MSX e um dos editores doSlackwareZine.

    Leandro Toledo, Iniciou com computadores em1993 e Linux em 1998, usando Slackware3.4 kernel 2.0.30. Atualmente trabalha noramo financeiro, multinacional Fidelity BPO,como Analista de Projetos utilizandosolues livres. Seu principal projeto oSlackwareZine.

    Lindolfo Rodrigues aka Lorn, usurio de Linux

    desde 2000, comeou com slackware 8.0atualmente trabalha na Uplexis Tecnonlogia,como Programador Perl, um Monge Perlfantico ;) est no ltimo semestre de BCCda FASP

    Piter PUNK aka Roberto Freires Batista,trabalha com Linux desde 1996. Atualmente

    consultor na rea de sistemas operacionasna NTUX Informtica. o principaldesenvolvedor do slackpkg e contribuiativamente no desenvolvimento doSlackware Linux. Tambm editor doSlackwareZine e publicou diversos artigosem revistas e sites da rea.

    Sulamita Garcia, Especialista Unix na EDS, eresponsvel pelo Linuxchix Brasil. autorade diversos artigos e palestras sobreSlackware, Alta Disponibilidade e Linux emgeral.

    Autores