Departamento de Eletrônica – Escola Politécnica Programa de Engenharia Elétrica – COPPE Using Virtualization to Improve Software Rejuvenation Rafael dos Santos Alves http://www.gta.ufrj.br Informações • Autores • Luis Moura Silva • Javier Alonso • Paulo Silva • Jordi Torres • Artur Andrzejak • Publicação • Sixth IEEE International Symposium on Network Computing And Applications (NCA 2007) Introdução • Exigência de disponibilidade dos servidores • 100 mil a 6 milhões de dólares por hora offline • Técnicas • Redundância de servidores • Balanceamento de carga • Recuperação de falhas • Auto-cura Software Rejuvenation • Definição • “Software rejuvenation is the concept of gracefully terminating an application and immediately restarting it at a clean internal state” • Motivação • Software aging • Degradação da aplicação • Ex.: vazamento de memória Software Rejuvenation • Soluções • Baseadas em temporização • Pró-ativas • Micro-rebooting • Redução do tempo de reparo • Reinício de partes da aplicação • Exige alteração do código • Proposta • Virtualização Requisitos da Proposta • • • • • • • Aplicável a qualquer aplicativo inalterado Redução do tempo de reparo Ausência de requisições perdidas Auto-cura Baixa sobrecarga do sistema Aplicável a qualquer hardware Facilidade de implementação e manutenção VM-Rejuv Figura 1: Arquitetura VM-Rejuv VM-Rejuv • Procedimento geral • VM3 em espera e VM2 ativa • VM-LB (VM1) procura por potenciais anomalias • VM3 é iniciado • Passa a receber as novas requisições • Estado de VM2 é migrado para VM3 • VM2 conclui todas as operações em andamento • VM2 é reiniciado Módulos • Load -balancer • Interceptação de todas as requisições • Implementação: LVS (Linux Virtual Server) • Watchdog • Monitoramento de parâmetros • CPU, uso de memória, espaço em disco etc • Implementação: Ganglia • Data-collector • Aplicação de filtros em parâmetros Módulos • Aging-detector • Análise • Parâmetros de sistema • Erros em protocolos de comunicação • Códigos de erro em logs • Sensores específicos de aplicações • Métricas de desempenho • Implementação • Análise de vazão Módulos • Anomaly-detector • Complemento ao aging-detector • Análise • Anomalias a nível de aplicação • Erros em protocolos • Violação de limiares • Implementação • Em desenvolvimento Módulos • SRA-Coord • Coordena os SRA-Agents • SRA-Agent • Responsável pela operação de rejuvenation • S-Probe • Sonda geral • P-Probe • Análise de métricas específicas • LogProbe Ambiente de Análises Servidores: Katrina, Wilma Servidores: Tania, Nelma Clientes CPU Dual AMD64 Opteron (2000MHz) Dual Core AMD64 Opteron 165 (1800MHz) Intel Celeron (1000MHz) Memória 4GB 2GB 512MB Disco Rígido 160GB(SATA2) 160GB(SATA2) Espaço para Swap 8GB 4GB 1024MB Sistema Operacional Linux 2.6.16.21-0.25smp Linux 2.6.16.21-0.25smp Linux 2.6.15-p3Netboot Java JDK 1.5.0_06, 64-bit Server VM 1.5.0_06, 64-bit Server 1.5.0_06-b05 VM Standard Edition Tomcat JVM tamanho heap 512MB 512MB Outros softwares Apache Tomcat 5.5.20, Axis 1.3, MySQL 5.0.18 Apache Tomcat 5.5.20, Axis 1.3 Resultados - Sobrecarga 12% Figura 2: Tomcat/Axis 14% Resultados - Efetividade Figura 3: Tomcat/Axis Resultados - Efetividade Figura 4: TPC-W Resultados - Indisponibilidade Figura 5: Tomcat/Axis Resultados - Indisponibilidade VM-Rejuv Reinício do Tomcat Reinício do XEN-VM Reinício da máquina Vazão média (req/s) 143,8 134,7 128,8 97,3 Total de Requisições 86313 80847 77292 58401 Requisições perdidas 0 476 536 1902 Requisições lentas 0 10 0 0 Indisponibilidade (ms) 0 12490 56143 200722 Resultados – Sobrecarga (2) 107301 requisições / 15 erros de sessão 117750 requisições / 0 erros de sessão Figura 6: Tomcat/Axis Resultados – Aplicabilidade em Clusters Figura 7: Tomcat/Axis Resultados – Aplicabilidade em Clusters SLA=75 Figura 8: Tomcat/Axis Resultados – clean resart vs blind restart Figura 9: Tomcat/Axis