Alta disponibilidademneto@argo.net.brTwitter: bicatuhttp://www.bicatu.com.br
Alta disponibilidadeNo ambienteatualtemosumadependência de recursoscomputacionaisparaquasetodas as atividades.Somando-se a isso o alcance global e tráfegovariávelchegamosnumaequaçãoondedisponibilidade (e escalabilidade) sãofatoresfundamentais.
Alta disponibilidadeAlta disponibilidade != EscalabilidadeApesar de andaremfrequentemente juntas as soluçõesparaaltadisponibilidadepossuemobjetivose estratégiasdiferentes
Alta disponibilidadeAlta disponibilidade = capacidade de estardisponívelporgrandesperíodos de tempoEscalabilidade = capacidade de oferecerserviços com qualidadeaceitávelmesmo com o crescimento do uso
Alta disponibilidadeAs paralisações do serviço (outages) podem ser divididasemduascategorias:Nãoplanejadas (falhas)São resultado de falhasaleatórias (imprevisíveis) dos sistemasassociadas a componentes de hardware ou software
Alta disponibilidadeb) Planejadas (manutenções)Associadas a paralizações agendas para a atualização de hardware ou software.Costumamoferecermenorimpactoaonegócio
Alta disponibilidadeQual o impacto de umaparalisação?Ex. Um servidordemora 5 minutosparareiniciar (reboot)Se ele é responsávelporatender a 100 requisiçõesporsegundoissosignifica5 x 60 x 100 = 30.000 requisiçõesnãoatendidas!
Alta disponibilidadeAtingir 100% de disponibilidadenão é possível e pode ser proibitivamentecaro.O comum é definir um nível de disponibilidadeaceitável
Alta disponibilidadeClasses de disponibilidadeDowtimeno ano (minutos) = (1 – razão de uptime) x 365 x 24 x 60
Alta disponibilidadeDisponibilidade (%)             Downtime no ano       99                                        3.65 dias       99.9                                  8.76 horas       99.99                                52.6 minutos       99.999                              5.26 minutos       99.9999                              30  segundos
Alta disponibilidadeAlta disponibilidade é comumenteassociada a sistemastolerantes a falhas. Nesses sistemas a falha de um componentenãoafeta a operaçãopois é compensadaporoutro de maneiratransparente e (normalmente) automática
Alta disponibilidadeAs soluçõesusuaisparaobtersistemastolerantesenvolvemsoluçõesproprietárias de hardware (e software) taiscomo:cpusredundantessubsistemas de memóriadisco,fornecimento de energiarefrigeração
Alta disponibilidadeSoluçõesparasistemastolerantes a falhascostumamtercustoelevado e normalmentesãoproprietárias
Alta disponibilidadeO quefazer?É possívelteralternativasparaatingirmos HA em um ambienteaberto?
Alta disponibilidadeIPVSHeartbeatLinux HADRBDBalanceNGVirtualizaçãoGFS
Alta disponibilidadeNo ambiente Linux existe um projeto (Linux HA) que desde 1999 oferece soluções para prover níveis de alta disponibilidade open source.Para atingir a alta disponibilidade teremos que usar vários componentes, de acordo com o nível de disponibilidade desejada.
Alta disponibilidade
Alta disponibilidadeSolução 1 : rsyncperiódico
Alta disponibilidade
Alta disponibilidadePrós: simples.  Funciona em muitos ambientes e requer pouca / nenhuma modificação do ambiente atualCons: a sincronização é periódica.  O que aconteceu entre um intervalo de sincronização e outro é perdido. A configuração é manual (para, por exemplo trocar o IP e reiniciar os serviços)
Alta disponibilidadeSolução 2: drbd + heartbeat
Alta disponibilidade
Alta disponibilidadePrós: atua de maneira automática e síncronaProvê um meio síncrono de replicar + migrar os dados serviços de forma automáticaCons: alterações na configuraçãoRequer uma configuração mais específica e possui um overhead maior de rede
Alta disponibilidadeAnatomiadasolução
Alta disponibilidadeUm servidor (primário) com duas interfaces de redeUm servidor (secondário) com duas interfaces de rede
Alta disponibilidadeA interface interna é usada para sincronização dos dados com uma faixa interna de IpsA interface externa de cada um possui um IP público.O servidor primário fica com os recursos (serviços) ativos
Alta disponibilidadeSoftware necessário:SO Linux Heartbeat (para detectar status e notificar mudanças)DRBD (sincronização física)
Alta disponibilidadeEtapa 1 : Configuração básicaIP A / IPi A172.16.117.162 / 192.168.0.2IP B / IPi B172.16.117.163 / 192.168.0.3IP C Serviço172.16.117.160Apache instalado nos dois (mas desligado)
Alta disponibilidadeEtapa 2: Criar os devicesdrbdEmcada um dos servidorester o /etc/drbd.confconformeabaixo:resource apache{protocol C;  startup { wfc-timeout 0; degr-wfc-timeout     120; }  disk { on-io-errordetach; }  net {  cram-hmac-alg "sha1"; shared-secret “senha"; }syncer { rate 10M; }
Alta disponibilidadeonnode0 {device /dev/drbd0;    disk /dev/sdb;address 192.168.0.2:7788;    meta-disk internal;  }
Alta disponibilidadeonnode1 {device /dev/drbd0;    disk /dev/sdb;address 192.168.0.3:7788;    meta-disk internal;  }}
Alta disponibilidadeEmcada um dos servidores#drbdadm create-md apacheO apache é o nome do resource especificado no drbd.conf
Alta disponibilidadeEleirásolicitarautorização e inicializará o processov08 Magic number not foundv07 Magic number not foundAbout to create a new drbd meta data block on /dev/sdb. . ==> This might destroy existing data! <==Do you want to proceed? [need to type 'yes' to confirm] yesCreating meta data... initialising activity log NOT initialized bitmap (256 KB) New drbd meta data block sucessfully created.
Alta disponibilidadeVocêdeveiniciar o serviço#service drbd startEleiráindicarque ambos osservidoresestãoemmodosecundáriocat /proc/drbdversion: 8.0.4 (api:86/proto:86) SVN Revision: 2947 build bybuildsvn@c5-i386-build, 2007-07-31 19:17:18 . 0: cs:Connectedst:Secondary/Secondaryds:Inconsistent/Inconsistent C r---  . ns:0 nr:0 dw:0 dr:0 al:0 bm:0 lo:0 pe:0 ua:0 ap:0   . resync: used:0/31 hits:0 misses:0 starving:0 dirty:0 changed:0 act_log: used:0/257 hits:0 misses:0 starving:0 dirty:0 changed:0
Alta disponibilidadeApenas no nóqueseráconsideradoprimáriodrbdadm -- --overwrite-data-of-peerprimary apacheEleiniciará a inicialização. 0: cs:SyncTargetst:Primary/Secondaryds:Inconsistent/Inconsistent C r---  . ns:0 nr:68608 dw:68608 dr:0 al:0 bm:4 lo:0 pe:0 ua:0 ap:0   . [>...................] sync'ed:  0.9% (8124/8191)M finish: 0:12:05 speed: 11,432 (11,432) K/secresync: used:0/31 hits:4283 misses:5 starving:0 dirty:0 changed:5 act_log: used:0/257 hits:0 misses:0 starving:0 dirty:0 changed:0
Alta disponibilidadeQuandoeleestiverem 100% vocêpodeformatar a partiçãocomofaznormalmente#mkfs.ext3 /dev/drbd0E usarnormalmente#mkdir /mnt/apache#mount /dev/drbd0 /mnt/apache
Alta disponibilidadeVocêdeve agora configurar o heartbeat parafazer o monitoramento e trocaautomática dos recursosNo /etc/ha.d/authkeysauth11 sha1 senha-do-heartbeatOnde1 é um númeroigual entre ospontos
Alta disponibilidade/etc/ha.d/ha.cfkeepalive 1deadtime 10warntime 5initdead 120udpport 694ping172.16.117.2bcast eth1auto_failback offnode172.16.117.162node172.16.117.163
Alta disponibilidadeDefinição do quefazerquando um nó for up ou down/etc/ha.d/haresourcesnode0IPaddr::172.16.117.160/24 drbddisk::apache \Filesystem::/dev/drbd0::/mnt/apache::ext3::defaults httpd
Alta disponibilidadeDemonstração
Alta disponibilidadeObrigadoEstaapresentaçãoestarádisponível no slideshare

Alta disponibilidade em ambiente GNU/Linux

Notas do Editor

  • #7 Reboots, upgrades de disco, memória, processador, versões de software