Universidade de São Paulo / IPT
Escola Politécnica - Engenharia de Sistemas Eletrônicos
Pervasive and Distributed Computing Group
PROGRAMA DE PÓS GRADUAÇÃO
PAD / LSI
Projeto E-Gov
IPT / CIAM
Cluster de Servidores Web do IPT
Antonio Amorim
2005
PAD / LSI
USP / POLI
IPT / CIAM
Antonio Amorim
Cluster LVS para Servidores Web
Sumário
• Introdução
• Visão geral
• IPVS
• Arquiteturas
• LVS no IPT
• Conclusões
PAD / LSI
USP / POLI
IPT / CIAM
Antonio Amorim
Cluster LVS para Servidores Web
Introdução
• Projeto E-Gov / IPT
– Servidores de e-mail em cluster
• Alta escalabilidade: até 700.000 usuários (8.000.000?)
• Alta Disponibilidade
• Melhor relação custo-benefício
– Colaboração Informal
• Inicialmente: IPT / LSI / Metrô / Prodesp
• Atualmente: IPT / LSI
PAD / LSI
USP / POLI
IPT / CIAM
Antonio Amorim
–
–
–
–
Prof. Takeo e colegas
Antonio Amorim : Doutorando
Vidal Zapparoli : Mestrando
Antonio Rigo / Cláudio Marte : planejamento e gestão
Cluster LVS para Servidores Web
Introdução
• Infra-estrutura
– Sala de aula do IPT/Cenatec
• Modificações inesperadas na rede
• Modificações inesperadas nos computadores
• Agenda parcialmente previsível
– Servidores baratos de arquitetura PC
• Pentium 2, 233 MHz, 128 Mb Ram, 40 GB HD
• Boa configuração para servidores a 10 anos atrás
• Uniformidade do hardware facilita o desenvolvimento
– Rede ethernet a 10 Mbps
PAD / LSI
USP / POLI
IPT / CIAM
Antonio Amorim
• Vários segmentos
• Abaixo da velocidade recomendada para o LVS
Cluster LVS para Servidores Web
Software Livre
• Todos Servidores
– S.O. -> Debian Linux 3.0 (Woody)
– Debian Sarge em fase de testes internos
• Servidores de entrada do cluster
– Balanceamento de carga -> LVS
– Alta Disponibilidade -> Heartbeat
• Servidores Web
– protocolos SMTP, POP3 e IMAP4 -> Qmail e Courier IMAP
– WebServer e Webmail -> Apache e Squirrel Mail
– AntiSpam e Antivírus -> SpamAssassin e ClamAV
PAD / LSI
USP / POLI
IPT / CIAM
Antonio Amorim
Cluster LVS para Servidores Web
Software Livre
• Servidores Auxiliares
–
–
–
–
Serviço de diretório -> Bind DNS, Open LDAP
Firewall e IDS (não implementado) -> IP Tables ? SNORT ?
Gerenciamento (não implementado) -> MRTG ?
Armazenamento -> NFS e ReiserFS (provisório)
PAD / LSI
USP / POLI
IPT / CIAM
Antonio Amorim
Cluster LVS para Servidores Web
Sistema Operacional
• Debian Linux 3.0 (Woody)
• Confiável, estável e seguro
• Comunidade grande e organizada
• Utilizado na IPTNet e na USPNet
– Conhecido pelas equipes do IPT
• Utilizado como base de distribuições populares
– Kurumin, Kalango, Knoppix
– Familiar para muitos profissionais e usuários
• Atualizado
– A versão Sarge já se tornou estável
– As próximas implementações do cluster utilizarão a versão Sarge
PAD / LSI
USP / POLI
IPT / CIAM
Antonio Amorim
• Kernel com LVS e outras modificações pode ser “empacotado” com
dpkg e torna-se facilmente instalável (sem compilação)
Cluster LVS para Servidores Web
Serviços Web
• Serviços de E-Mail
– Qmail
• POP3, SMTP
• Alto desempenho, seguro, escalável
• Utilizado por grandes provedores
– IG, Yahoo ...
• Integrável com LDAP
– Courier IMAP
• Necessário para o uso de Webmail
• Integrável com Qmail
• Integrável com Squirrel Mail
PAD / LSI
USP / POLI
IPT / CIAM
Antonio Amorim
Cluster LVS para Servidores Web
Serviços Web
• WebServer
–
–
–
–
Apache
Estável e confiável
Usado em quase 70% dos servidores da internet
Comumente usado no IPT
• Webmail
–
–
–
–
Squirrel Mail
Baseado em IMAP (Courier)
Usado pelo Governo do Estado, Prodesp e Metrô
Integrável com QMail
PAD / LSI
USP / POLI
IPT / CIAM
Antonio Amorim
Cluster LVS para Servidores Web
Serviços de Diretório
• Bind DNS
– Resolução de nomes
– Não é essencial para a rede interna
• Open LDAP
–
–
–
–
–
Banco de dados hierárquico otimizado para leitura
Não substitui BDs relacionais, apenas os complementa
Permite coerência na segurança de diferentes aplicativos
Cadastro de usuários único (single-sign-on)
Autenticação
» Nome, senha, permissões de acesso
– Direcionamento
» localização da caixa postal e arquivos do usuário
PAD / LSI
USP / POLI
IPT / CIAM
Antonio Amorim
Cluster LVS para Servidores Web
Serviços de Diretório
• Open LDAP
– Flexibilidade: permite várias opções de configuração
» Servidor Local: cadastro de usuários na própria máquina
» Servidor externo: cadastro de usuários em servidor remoto
» Centralizado: cadastro de usuários único fica em um servidor que é
acessado por vários clientes
» Distribuído: cada cliente possui localmente seu próprio cadastro de
usuários, parcial e diferente dos demais
» Hierárquico: cada cliente possui localmente seu próprio cadastro de
usuários, que é uma cópia completa ou parcial de um cadastro único
localizado em um servidor externo. As cópias devem ser sincronizadas
periodicamente ou disparadas por um evento
PAD / LSI
USP / POLI
IPT / CIAM
Antonio Amorim
Cluster LVS para Servidores Web
Serviços de Diretório
• Open LDAP
– No projeto E-Gov pode ser adotada a configuração hierárquica ou
centralizada, dependendo dos resultados dos testes de desempenho
• O uso do LDAP permitiu a integração de diversos aplicativos:
– Qmail: SMTP e POP3
– Courier IMAP
– Squirrrel Mail
• O LDAP também facilita a integração futura com novos aplicativos e até com o
sistema operacional (single-sign-on)
– Linux pode usar o LDAP p/ autenticação em rede
– Aplicativos de gerenciamento, groupware, ERP, podem apontar p/ o LDAP
evitando a replicação do cadastro de usuários em seus próprios bancos de
dados
PAD / LSI
USP / POLI
IPT / CIAM
Antonio Amorim
Cluster LVS para Servidores Web
Serviços de Diretório
• Open LDAP
– Atributos usados na integração Qmail+Courier+Squirrel:
PAD / LSI
USP / POLI
IPT / CIAM
Antonio Amorim
Cluster LVS para Servidores Web
Segurança
●
Antivírus
ClamAV
O módulo Qmail-Scanner integra o Clamav a fila do Qmail
Detecção de até 38000 viroses, worms e trojans
Pode bloquear anexos por tipo de arquivo. Suporte para RAR (2.0),
Zip, Gzip, Bzip2, Tar, MS OLE2, MS Cabinet files, MS CHM, MS
SZDD
Integrável com vários servidores de e-mail
Verifica assinaturas de vírus em um banco de dados que deve ser
mantido atualizado
E-Mails com vírus são gravados em um diretório de quarentena
●
•
•
•
•
•
•
PAD / LSI
USP / POLI
IPT / CIAM
Antonio Amorim
Cluster LVS para Servidores Web
Segurança
• AntiSpam
•SpamAssassin
–Várias regras para determinar se um e-mail é spam ou não
• "Fuzzy logic": cada regra tem uma pontuação associada ,
baseada em sua precisão e nível de acerto. A pontuação pode
ser negativa ou positiva
• As regras são combinadas para calcular uma pontuação total
para cada mensagem
• Se o limite definido pelo usuário é ultrapassado, o e-mail é
considerado como spam
• Nenhuma regra individualmente pode decidir se um e-mail é
spam
PAD / LSI
USP / POLI
IPT / CIAM
Antonio Amorim
Cluster LVS para Servidores Web
Segurança
• SpamAssassin +Qmail+Squirrel
•O módulo Qmail-Scanner integra o SpamAssassin a fila do Qmail
•O campo “Subject” da mensagem é marcado com a string “S P A M”,
antes do usuário receber a mensagem
•Uma pasta p/ spam pode ser criada na caixa postal do usuário
•Uma regra configurada no Squirrel pode filtrar as mensagens
marcadas e encaminha-las para a pasta de spam antes de
apresentá-las ao usuário
•O usuário periodicamente deve verificar a pasta, para identificar
falsos positivos e limpá-la
•O usuário pode eventualmente ajustar o limite de pontuação total
PAD / LSI
USP / POLI
IPT / CIAM
Antonio Amorim
Cluster LVS para Servidores Web
Balanceamento de carga
• Balanceamento de carga
– LVS: Linux Virtual Server [4]
– Múltiplos protocolos: HTTP, POP, SMTP, IMAP, FTP, DNS ...
– IP Virtual: um cluster se servidores aparece como um servidor
único, com um único IP
– Alta disponibilidade: servidores que falham são detectados e
retirados do cluster dinâmicamente (módulo IPFAIL)
– Arquitetura em três camadas
• Balanceador de carga
• Conjunto de servidores
• Storage compartilhado
PAD / LSI
USP / POLI
IPT / CIAM
Antonio Amorim
Cluster LVS para Servidores Web
Balanceamento de carga
PAD / LSI
USP / POLI
IPT / CIAM
Antonio Amorim
Cluster LVS para Servidores Web
Balanceamento de carga
• LVS: Linux Virtual Server
– Balanceador de carga: LVS-Director: Servidor que faz a frente de
entrada do cluster, recebe as requisições do usuário e as distribui
– Conjunto de Servidores: real-servers: Servidores que recebem as
requisições encaminhadas pelo LVS-director, precessa e devolve a
resposta (Qmail, Apache...)
– Storage Compartilhado: Garante a consistência de dados entre os
real-servers. É necessário somente para algumas aplicações
– Rede de alta velocidade para conectar os componentes
• 100 Mbps ou 1 Gbps
• Evita gargalos
PAD / LSI
USP / POLI
IPT / CIAM
Antonio Amorim
Cluster LVS para Servidores Web
Balanceamento de carga
• IPVS: Internet Protocol Virtual Server
– Módulo IPVS é o coração do sistema, fazendo o agendamento e
controle das requisições
– Necessário somente no lvs-director
– Kernel do Linux até a versão 2.4.25 precisa ser modificado p/
suportar IPVS
– A partir da versão 2.4.26 o IPVS só precisa ser habilitado
– Intercepta o kernal em dois pontos para pergar os pacotes IP e
reescreve-los para suportar balanceamento de carga
– O IPVS também trata os pacotes ICMP, para facilitar o teste do
cluster
PAD / LSI
USP / POLI
IPT / CIAM
Antonio Amorim
Cluster LVS para Servidores Web
– Balanceamento de carga
IPVS
PAD / LSI
USP / POLI
IPT / CIAM
Antonio Amorim
Cluster LVS para Servidores Web
Balanceamento de carga
• IPVS: Internet Protocol Virtual Server
– Duas tabelas tipo Hash Tables são mantidas pelo IPVS
• Regras: para novas conexões
• Conexões: para as conexões estabelecidas
– Cada entrada na tabela de conexão ocupa 128 bytes. 256 MB de
memória RAM permitem dois milhões de conexões concorrentes
• Múltiplos protocolos
– IPVSADM: permite inserir entradas na tabela das regras
– cada protocolo tem várias entradas na tabela de regras:
• IP virtual e porta do protocolo
• Mapeamento do IP Virtual e porta para cada real-server
PAD / LSI
USP / POLI
IPT / CIAM
Antonio Amorim
Cluster LVS para Servidores Web
Balanceamento de carga
• IPVS: algoritmos de escalonamento
– round robin (rr) – alternância simples entre real-servers
– weighted round robin (wrr) – permite direcionar mais conexões
para máquinas mais velozes, pela atribuição de pesos.
– least connected (lc) - novas conexões são direcionadas para o
real-server com a menor quantidade de conexões
– weighted least connection (wlc) – lc com atribuição de pesos
– LBLC ,DH: apropriados para real-servers com caches Web (Proxy),
pernitem manter a coerência entre os caches dos servidores,
evitando acesso desnecessário a servidores externos
– SH: source hash: apropriado para uso com firewalls que rastreiam
PAD / LSI conexões
USP / POLI
IPT / CIAM
Antonio Amorim
Cluster LVS para Servidores Web
Arquiteturas LVS
• IP Virtual
– Deve ser configurado como alias na porta local (lo) do linux director
e dos real-servers
– Para evitar conflitos, os real-servers não devem responder à
requisições ARP para a porta local
– O LVS oferece três Arquiteturas para balanceamento de
carga, cada uma apropriada a um tipo de solução:
– LVS-NAT: Virtual server via NAT
– LVS-DR: Virtual server via Direct Routing
– LVS-TUN: Virtual server via Tunelamento
PAD / LSI
USP / POLI
IPT / CIAM
Antonio Amorim
Cluster LVS para Servidores Web
Arquiteturas LVS
• LVS-NAT: Virtual server via NAT
– Altera MAC-Address do quadro ethernet
– Recomendado para cluster pequeno e simples
– LVS-Director e real-servers devem ser conectados por um Hub ou
Switch
– LVS-Director faz a tradução de IP's
– Resposta das requisições tem que voltar pelo LVS-Director
– O LVS-Director se torna um gargalo quando o cluster cresce,
porque o tráfego fica concentrado sobre ele
PAD / LSI
USP / POLI
IPT / CIAM
Antonio Amorim
Cluster LVS para Servidores Web
Arquiteturas LVS
LVS-NAT
PAD / LSI
USP / POLI
IPT / CIAM
Antonio Amorim
Cluster LVS para Servidores Web
Arquiteturas LVS
• LVS-DR: Virtual server via Direct Routing
– Altera MAC-Address do quadro ethernet
– Recomendado para cluster grande que necessita alto desempenho
– LVS-Director e real-servers devem ser conectados a um único
seguimento físico de rede interna
– Os real-servers devem ter duas placas: uma conectada à rede
interna e outra ao gateway com a Internet
– Resposta das requisições retorna pela placa do real-server
conectada ao gateway
– Maior eficiência: alterar quadro ethernet é mais rápido que traduzir
IP's. Existem múltiplas saídas, aumentando a vasão do sistema.
PAD / LSI
USP / POLI
IPT / CIAM
Antonio Amorim
Cluster LVS para Servidores Web
Arquiteturas LVS
LVS-DR
PAD / LSI
USP / POLI
IPT / CIAM
Antonio Amorim
Cluster LVS para Servidores Web
Arquiteturas LVS
• LVS-TUN: Virtual server via Tunelamento
– Encapsula pacote IP com endereço virtual em pacote IP com
endereço dos real-servers
– Real-servers devem suportar tunelamento de IP, co dispositivo de
túnel configurado com IP virtual
– A resposta retorna ao usuário diretamente, sem passar pelo LVSDirector
– É mais eficiente que o LVS-NAT, mas menos que o LVS-DR, pois o
encapsulamento dos pacotes consome tempo de processamento
– Ideal quando existem real-servers espalahdos geograficamente,
em diferentes sites
PAD / LSI
USP / POLI
IPT / CIAM
Antonio Amorim
Cluster LVS para Servidores Web
Arquiteturas LVS
LVS-TUN
PAD / LSI
USP / POLI
IPT / CIAM
Antonio Amorim
Cluster LVS para Servidores Web
LVS no IPT
• Implementação do LVS no IPT
– Arquitetura LVS-DR
• Maior desempenho
– Escalonamento
• RR: Round-Robin
• Implementação do Heartbeat
– Existem 2 LVS-Director. O Heartbeat se encarrega de ativar o que
está em “stand-by” se o outro falhar
PAD / LSI
USP / POLI
IPT / CIAM
Antonio Amorim
Cluster LVS para Servidores Web
LVS no IPT
LVS-DR no IPT
PAD / LSI
USP / POLI
IPT / CIAM
Antonio Amorim
Cluster LVS para Servidores Web
Conclusões
• Situação Atual
– Cluster com funcionalidade básicas já testadas
– Caracterização da carga de trabalho - estatísticas / simulação
(Artigo WSCAD)
– Avaliação da escalabilidade do modelo estatístico em função da
quantidade de usuários e servidores
• Próximos Passos
–
–
–
–
Caracterização do cluster - modelagem do sistema
Refinamento e complementação do modelo, avaliação de erros
Implementação dos geradores de e-mails: Java e Java-Mail
Realização dos testes de carga, coletando os dados com SNMP
PAD / LSI
USP / POLI
IPT / CIAM
Antonio Amorim
Cluster LVS para Servidores Web
Conclusões
• Próximos Passos
– Estudar as alternativas tecnológicas para a implementação
dos softwares de simulação de carga
• Sistemas multi-agentes, Peer-to-Peer, Grades Computacionais...
– Estudar alternativas e complementos ao modelo estatístico
•
•
•
•
Teoria das filas
Análise espectral
Caos Determinístico e fractais
Wavelets
– Estudar as alternativas para simulação do sistema e o
ambiente da Internet
PAD / LSI
USP / POLI
IPT / CIAM
Antonio Amorim
Cluster LVS para Servidores Web
Dúvidas?
Antonio Amorim
[email protected]
[email protected]
PAD / LSI
USP / POLI
IPT / CIAM
Antonio Amorim
Cluster LVS para Servidores Web
Download

PROGRAMA DE PÓS GRADUAÇÃO PAD / LSI Projeto E