Vous êtes sur la page 1sur 23

Balanceamento de carga em

GNU/Linux
O que temos e o que falta?

Fernanda G Weiden

Google's mission
Toorganizetheworldsinformation
andmakeituniversally
accessibleanduseful

Introduo
Servionomundodigital
Disponibilidade
Escalabilidade
Velocidadedecrescimentosvezesnoprevisvel
Combinarmelhorcusto
benefciotambmnacompra dehardware
Downtimeparamanutenonotrazclientesfelizes

Balanceamentodecarga
Muitasmquinas(backends)efetuandoamesma tarefa
Escalabilidadesemdowntime
Possibilidadedecrescimentorpidosemnecessidadede
renovaodehardware
Melhorutilizaoderecursosdehardware
Tolernciaafalhas
Altadisponibilidade

Balanceamento de carga
LoadBalancermquina(s)querecebemedistribui
asrequisies
VirtualServercombinaodeIP:portaconfigurados
noLoadBalancer
Backendservidorreal(fsicoouno)
Clientequemrequisitaoservio
VIPoendereoIPconhecidopelocliente
RIPendereoIPdobackend(realserver)
CIPendereoIPdocliente

DNS round robin


DNSbasedloadbalancingclusterconfiguradono
servidordenomes.Maneiramaisfcildecriarum
clusterdeservidores.
www.google.com.60INA10.0.0.1
www.google.com.60INA10.0.0.2
www.google.com.60INA10.0.0.3
www.google.com.60INA10.0.0.4

GlobalServerLoadBalancing
Distribuiotrfegoentreumclustergeograficamente
distribudo,baseadonalocalizaodoclienteena
disponibilidadedoservidor/cluster
DNS based
Routing based

Dispatcherbasedloadbalancingcluster
omtodotradicionaldebalanceamentodecarga
OusuriosconheceoVIP,enotodososbackends
BaseadoemIPouaplicao
Tolernciaafalha
Grandecontrolesobasconexeseutilizaodos
backends(estado,persistncia)

Madonna-like

O que temos em GNU/Linux?


DNS round robin
Routing based GSLB
ip_vs - dispatches LB cluster

ip_vs
Layer 4 switch

half NAT
tunneling
DSR

NAT
NATmudaoendereodedestinodopacote,e
redirecionaaobackend.Aconexopassapelodirector
antesderetornaraocliente.

Tunneling
TUNTnelentreoLoadBalancereosBackend
Necessriaconfiguraoesuporteatneisemtodosos
backends.

Direct server response


DSRobackendrespondearequisiodiretoao
cliente,sempassarpelodirector(noretorno).Backends
eLBnomesmosegmentoderede. Requer non-arp
interface nos backends.

AlgoritmosparaScheduling
Define a distribuio das requisies entre os backends.
RR:RoundRobin
WRR:WeightedRoundRobin
LC:LeastConnection
WLC:WeightedLeastConnection

Persistncia
SourceIPconexesdeummesmoIPdeorigem
sodirecionadasaomesmobackend.
CookieInsertion(http)oloadbalanceradicionaum
cookienoheaderhttp,quevaiconterinformao
sobrequalbackendutilizar
SSLsessionIDpersistnciabaseadonoIDda
sesso,quefazpartedoSSLhandshake

Heartbeat
Gerenciamento de recursos entre os nodes de um cluster
de alta disponibilidade

Monitoramento de backends
ldirectord
nao tem monitoramento paralelo
instancias individuais por VIP
keepalived
nao tem instancias individuais por VIP

IPv6
mainstream no linux 2.6.28
ip_vs movido de net/ipv4/ipvs para net/netfilter/ipvs
adicionada interface netlink para comunicacao interprocesso

O que falta?
monitoramento paralelo de backends
full NAT/proxy (+ failback)
checar status atual de um VIP e seus backends
read-only mode (ipvsadm funciona somente como root)
suporte IPv6
espelhamento de configuracao entre HA nodes

nanda@localhost> sh vserver mywebserver


mywebserver (192.168.1.66:80) - ANY Type: ADDRESS
State: UP
Effective State: UP
Client Idle Timeout: 120 sec
Method: LEASTCONNECTION Mode: MAC
Persistence: NONE Backup: mybackupcluster
Connection Failover: DISABLED
1) backend1_http (192.168.1.1:80) - ANY State: UP Weight: 1
2) backend2_http (192.168.1.2:80) - ANY State: UP Weight: 1
3) backend3_http (192.168.1.3:80) - ANY State: UP Weight: 1
Done

pfrost@localhost> sh service backend1_http


backend1_http (192.168.1.1:80) - ANY
State: UP Server Name: backend1.mydomain
Max Conn: 0 Max Req: 0 Max Bandwidth: 0 kbits
Use Source IP: YES
Client Keepalive(CKA): NO
Access Down Service: NO
TCP Buffering(TCPB): NO
HTTP Compression(CMP): NO
Idle timeout: Client: 120 sec Server: 120 sec
Client IP: DISABLED
Server ID : 0 Monitor Threshold : 0
1) Monitor Name: http
State: UP Weight: 1
Probes: 1064893 Failed [Total: 2979 Current: 0]
Last response: Success - 200 OK.
2) Monitor Name: ping
State: UP Weight: 1
Probes: 2128057 Failed [Total: 637 Current: 0]
Last response: Success - TCP syn+ack received.

Perguntas?