20
Implementação de um balanceador de carga utilizando o Linux Virtual Server Caciano Machado Everton Foscarini Fernando Macedo

Implementação de um balanceador de carga utilizando … · o Linux Virtual Server Caciano Machado ... Probes avançados e personalizáveis (Perl) ... Standby assume serviços ao

  • Upload
    vudiep

  • View
    258

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Implementação de um balanceador de carga utilizando … · o Linux Virtual Server Caciano Machado ... Probes avançados e personalizáveis (Perl) ... Standby assume serviços ao

Implementação de um balanceador de carga utilizando

o Linux Virtual Server

Caciano MachadoEverton FoscariniFernando Macedo

Page 2: Implementação de um balanceador de carga utilizando … · o Linux Virtual Server Caciano Machado ... Probes avançados e personalizáveis (Perl) ... Standby assume serviços ao

Roteiro● Conceitos básicos● Problemas/Motivações● Alternativas estudadas● Arquitetura da Solução● Topologia da Rede● Failover automático● Resultados● Conclusões

Page 3: Implementação de um balanceador de carga utilizando … · o Linux Virtual Server Caciano Machado ... Probes avançados e personalizáveis (Perl) ... Standby assume serviços ao

Conceitos básicos

Balanceador de Carga● Clientes vêem apenas 1

servidor● permite redundância e

escalabilidade

● VIP - IP virtual - IP do serviço● Realserver - Servidor real -

destino do balanceamento

realservers

Clientes

Page 4: Implementação de um balanceador de carga utilizando … · o Linux Virtual Server Caciano Machado ... Probes avançados e personalizáveis (Perl) ... Standby assume serviços ao

Problemas/Motivações● Entre 2004 e 2012 foi utilizada funcionalidade do

roteador principal da Universidade○ Enterasys ALB○ Cisco SLB

● Roteador não tem hardware dedicado para balanceamento

● Implementado através de NAT

● Comprometimento do roteador em picos de carga / DoS

● Cisco SLB não tem suporte ao IPv6

Page 5: Implementação de um balanceador de carga utilizando … · o Linux Virtual Server Caciano Machado ... Probes avançados e personalizáveis (Perl) ... Standby assume serviços ao

Problemas/Motivações● Divulgação do Vestibular 2012 (Janeiro)

Page 6: Implementação de um balanceador de carga utilizando … · o Linux Virtual Server Caciano Machado ... Probes avançados e personalizáveis (Perl) ... Standby assume serviços ao

Alternativas estudadas● Cisco Content Switching Module

○ Módulo do roteador Cisco utilizado na UFRGS● Prós:

○ Hardware dedicado○ Configurações semelhantes (familiaridade

para equipe)○ Contrato de suporte, consultoria para

configurações● Contras:

○ Ponto único de falha○ Não suporta IPv6○ Aprisionamento tecnológico○ Custo de aquisição

Page 7: Implementação de um balanceador de carga utilizando … · o Linux Virtual Server Caciano Machado ... Probes avançados e personalizáveis (Perl) ... Standby assume serviços ao

Alternativas estudadas● Linux Virtual Server

○ Balanceador TCP/UDP implementado no Kernel Linux

● Prós:○ Suporta IPv6○ Custo zero○ Permite redundância○ 7 algoritmos de escalonamento○ Probes avançados e personalizáveis (Perl)

● Contras:○ Solução precisa ser customizada○ Custo operacional de desenvolvimento

Page 8: Implementação de um balanceador de carga utilizando … · o Linux Virtual Server Caciano Machado ... Probes avançados e personalizáveis (Perl) ... Standby assume serviços ao

Algoritmos de escalonamento● Round-Robin Scheduling● Weighted Round-Robin Scheduling● Least-Connection Scheduling● Weighted Least-Connection Scheduling● Locality-Based Least-Connection Scheduling● Locality-Based Least-Connection with Replication Scheduling● Destination Hashing Scheduling● Source Hashing Scheduling● Shortest Expected Delay Scheduling● Never Queue Scheduling

Page 9: Implementação de um balanceador de carga utilizando … · o Linux Virtual Server Caciano Machado ... Probes avançados e personalizáveis (Perl) ... Standby assume serviços ao

Arquitetura da Solução● LVS Primário + LVS Standby

○ Elimina ponto único de falha

● Replicação de estado○ Failover transparente para

clientes, conexões mantidas

● Monitoramento entre LVS○ Standby assume serviços

ao detectar falha do primário

Page 10: Implementação de um balanceador de carga utilizando … · o Linux Virtual Server Caciano Machado ... Probes avançados e personalizáveis (Perl) ... Standby assume serviços ao

Topologia da rede● Topologia LVS-DR (Direct Routing)

● 2 segmentos de rede (VLANs)○ Roteador -> LVS○ LVS -> Realserver -> Roteador

● Pacote IP endereçado ao VIP○ Balanceamento feito em nível 2

● VIP está na interface loopback do LVS e de todos os RealServers

● Tráfego de retorno não passa pelo LVS

Page 11: Implementação de um balanceador de carga utilizando … · o Linux Virtual Server Caciano Machado ... Probes avançados e personalizáveis (Perl) ... Standby assume serviços ao

Failover Automático● Implementado através de

SLA/Track○ Escolhido pela simplicidade

da implementação e menor acoplamento

● Roteador tem rotas para VIP com pesos diferentes

● LVS Standby muda rotaao subir interface eth0:0

● Outras soluções○ Heartbeat○ OSPF

Page 12: Implementação de um balanceador de carga utilizando … · o Linux Virtual Server Caciano Machado ... Probes avançados e personalizáveis (Perl) ... Standby assume serviços ao

Serviços em produção

● www.ufrgs.br (3 realservers)● smtp.ufrgs.br (2)● radius (2)● LDAP (4)● matricula.ufrgs.br (3)

Próximos serviços● Intranet● proxy● webmail

Page 13: Implementação de um balanceador de carga utilizando … · o Linux Virtual Server Caciano Machado ... Probes avançados e personalizáveis (Perl) ... Standby assume serviços ao

Especificações● Máquinas virtuais em hosts Citrix XenServer

○ 2 vCPUs com 512MB de RAM○ 2 interfaces de rede

● CentOS Linux 6

● ipvsadm (similar a iptables)

● ldirectord (probes, ativação e desativação de RealServer)

● Implementação de failover in-house

Page 14: Implementação de um balanceador de carga utilizando … · o Linux Virtual Server Caciano Machado ... Probes avançados e personalizáveis (Perl) ... Standby assume serviços ao

Resultados

Teste de cargaLVS

Vestibular 2012Cisco SLB

Page 15: Implementação de um balanceador de carga utilizando … · o Linux Virtual Server Caciano Machado ... Probes avançados e personalizáveis (Perl) ... Standby assume serviços ao

Resultados

Monitoramento do servidor LVS durante teste de carga

Page 16: Implementação de um balanceador de carga utilizando … · o Linux Virtual Server Caciano Machado ... Probes avançados e personalizáveis (Perl) ... Standby assume serviços ao

Resultados

Tráfego de rede do serviço testado

Page 17: Implementação de um balanceador de carga utilizando … · o Linux Virtual Server Caciano Machado ... Probes avançados e personalizáveis (Perl) ... Standby assume serviços ao

Resultados

Vestibular 2013

Page 18: Implementação de um balanceador de carga utilizando … · o Linux Virtual Server Caciano Machado ... Probes avançados e personalizáveis (Perl) ... Standby assume serviços ao

Conclusões

● Aumento de 4 vezes no número de conexões por segundo

● Atingimos limite do pool de servidores web

● Nenhum impacto no desempenho dos equipamentos de rede

● Serviço web teve throughput de 1.5Gbit (2 servidores)

Page 19: Implementação de um balanceador de carga utilizando … · o Linux Virtual Server Caciano Machado ... Probes avançados e personalizáveis (Perl) ... Standby assume serviços ao

Conclusões● LVSs redundantes permitem manutenções em

horário comercial

● Independência de hardware

● Controle total da solução

● Troubleshooting requer apenas conhecimento de TCP/IP e Linux

Page 20: Implementação de um balanceador de carga utilizando … · o Linux Virtual Server Caciano Machado ... Probes avançados e personalizáveis (Perl) ... Standby assume serviços ao

Dúvidas

Caciano Machado - [email protected]

Everton Foscarini - [email protected]

Fernando Macedo - [email protected]

http://www.ufrgs.br/viiwticifes/