13.07.2015 Views

A Fault-Injector Tool to Evaluate Failure Detectors in ... - CiteSeerX

A Fault-Injector Tool to Evaluate Failure Detectors in ... - CiteSeerX

A Fault-Injector Tool to Evaluate Failure Detectors in ... - CiteSeerX

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

A <strong>Fault</strong>-<strong>Injec<strong>to</strong>r</strong> <strong>Tool</strong> <strong>to</strong> <strong>Evaluate</strong> <strong>Failure</strong> Detec<strong>to</strong>rs <strong>in</strong>Grid-ServicesNuno Rodrigues 1 , Décio Sousa 1 , Luís Silva 1 , Artur Andrzejak 21 CISUC - Centre for Informatics and Systems of the University of CoimbraPolo II - P<strong>in</strong>hal de Marrocos3030-290 Coimbra, Portugalluis@dei.uc.pt2 Zuse-Institute Berl<strong>in</strong>Takustr. 7, 14195 Berl<strong>in</strong>, Germanyandrzejak@zib.de_____________________________________________________________________CoreGRID Technical ReportNumber TR-0098September 17, 2007Institute on Architectural issues: scalability,dependability, adaptability (SA)CoreGRID - Network of ExcellenceURL: http://www.coregrid.netCoreGRID is a Network of Excellence funded by the European Commission under the Sixth Framework ProgrammeProject no. FP6-00426


A <strong>Fault</strong>-<strong>Injec<strong>to</strong>r</strong> <strong>Tool</strong> <strong>to</strong> <strong>Evaluate</strong> <strong>Failure</strong> Detec<strong>to</strong>rs <strong>in</strong>Grid-ServicesNuno Rodrigues 1 , Décio Sousa 1 , Luís Silva 1 , Artur Andrzejak 21 CISUC - Centre for Informatics and Systems of the University of CoimbraPolo II - P<strong>in</strong>hal de Marrocos3030-290 Coimbra, Portugalluis@dei.uc.pt2 Zuse-Institute Berl<strong>in</strong>Takustr. 7, 14195 Berl<strong>in</strong>, Germanyandrzejak@zib.deCoreGRID TR-0098 *September 17, 2007AbstractIn this paper we present a fault-<strong>in</strong>jec<strong>to</strong>r <strong>to</strong>ol, named JAFL (Java <strong>Fault</strong> Loader), which wasdeveloped with the target of test<strong>in</strong>g the fault-<strong>to</strong>lerance mechanisms of Grid and Web applications.Along with the JAFL <strong>in</strong>ternals description, we will present some results collected from syntheticexperiments where we used both our <strong>in</strong>jec<strong>to</strong>r and fault detection mechanisms. With these results weexpect <strong>to</strong> prove that our fault <strong>in</strong>jection <strong>to</strong>ol can be actively used <strong>to</strong> evaluate fault detection mechanisms.* This research work is carried out under the FP6 Network of Excellence CoreGRID funded by the EuropeanCommission (Contract IST-2002-004265).CoreGRID TR-0099 2


CPU Consumption: By us<strong>in</strong>g various threads <strong>to</strong> do some hard calculations, this sub-module can <strong>in</strong>creasesubstantially the CPU Load.Thread Consumption: With this fault we are able <strong>to</strong> create various threads along the time and wait <strong>to</strong> see how thesystem responds.Disk S<strong>to</strong>rage Consumption: We can use this k<strong>in</strong>d of fault <strong>to</strong> see how the system handles the lack of disk space. Ifwe don't def<strong>in</strong>e an end po<strong>in</strong>t it will consume all the disk space.I/O Consumption: This sub-module is responsible for do<strong>in</strong>g read/write operations on our system. If we want <strong>to</strong>burst our system we can check our maximum read/write speed and configure the fault for those values.Database Connections Consumption: With this fault we can consume various database connections and checkwhether our applications behave with the connection pool be<strong>in</strong>g filled up.File Handler Consumption: By us<strong>in</strong>g this fault we can consume the file descrip<strong>to</strong>rs which are available for theuser runn<strong>in</strong>g the Java application.Exception Throw<strong>in</strong>g: This sub-module is able <strong>to</strong> throw some exceptions. We implemented this sub-modulebecause after the occurrence of an exception the application can change its behavior.Database Table Lock: With this sub-module we can emulate some database lock problems that occur, most of thetimes, dur<strong>in</strong>g ma<strong>in</strong>tenance operations.Database Table Deletion: This fault simulates a very common opera<strong>to</strong>r error which normally occurs when anerroneous backup is used <strong>to</strong> res<strong>to</strong>re a database.Figure 1 - JAFL Architecture2.2 UsageAs JAFL is written <strong>in</strong> Java, it can be used <strong>in</strong> the follow<strong>in</strong>g ways:• Deployed <strong>in</strong> a Web/Grid conta<strong>in</strong>er us<strong>in</strong>g the Java Technology• Integrated with standalone applications• Run as a standalone applicationCoreGRID TR-0099 4


In Figure 2 we can see a sample scenario where JAFL can be used <strong>in</strong> the 3 ways. In the frontend server, JAFLis used <strong>to</strong> actively consume the Web/Grid conta<strong>in</strong>er resources; <strong>in</strong> "node b" it is used <strong>to</strong> perturb a simple applicationrunn<strong>in</strong>g on that node and <strong>in</strong> "node e" it is runn<strong>in</strong>g as a standalone application with the goal of consum<strong>in</strong>g operat<strong>in</strong>gsystem resources. This sample scenario shows that JAFL can be very helpful <strong>to</strong> test the reliability of a Web/Gridapplication.3 Detec<strong>to</strong>rsFigure 2 - JAFL Usage ScenarioIn the previous section we presented our fault <strong>in</strong>jec<strong>to</strong>r <strong>to</strong>ol. In this section we will present the failure detectionmechanisms that we have chosen <strong>to</strong> detect the faults produced by the JAFL <strong>to</strong>ol.<strong>Fault</strong>-detection mechanisms are the responsible for measur<strong>in</strong>g the health of an application. If they are accurateenough they can help the system opera<strong>to</strong>rs <strong>to</strong> keep the system up and runn<strong>in</strong>g. Otherwise, if they are not able <strong>to</strong> detecta failure and trigger an alarm, the system can become unavailable and probably nobody will notice that.To guarantee good detection coverage we have chosen four types of failure detec<strong>to</strong>rs:• System and Application Moni<strong>to</strong>r<strong>in</strong>g and <strong>Failure</strong> Detection <strong>Tool</strong>s• Component analyzers• Log analyzers• External Moni<strong>to</strong>r<strong>in</strong>gS<strong>in</strong>ce each of these mechanisms has its own advantages and drawbacks, we will now describe them <strong>in</strong> detail.3.1 System and Application <strong>Failure</strong> Detec<strong>to</strong>rsThis is the most common type of failure detec<strong>to</strong>rs. They are able <strong>to</strong> moni<strong>to</strong>r the operat<strong>in</strong>g system resources(memory, CPU, etc), network <strong>in</strong>terfaces, system services and others. With an accurate configuration they are also able<strong>to</strong> moni<strong>to</strong>r applications and check the resources that they are consum<strong>in</strong>g, their availability etc.In the field of commercial solutions we have names such as HP Openview [18] or IBM Tivoli [19] <strong>to</strong> accomplishthis task. Otherwise, if we prefer public doma<strong>in</strong> solutions we can choose Zabbix [20], Nagios [21], Big Sister [22]and others.In our study we adopted Zabbix, which is one of the powerful and easiest platforms <strong>to</strong> work with. It is very easy <strong>to</strong>deploy and <strong>to</strong> configure, provides a wide variety of features and s<strong>to</strong>res all the data <strong>in</strong> a database, allow<strong>in</strong>g externalprograms <strong>to</strong> collect data from there. It is composed by a Zabbix Server and Zabbix Agent. The Agent is deployed <strong>in</strong>the moni<strong>to</strong>red host and sends all the <strong>in</strong>formation <strong>to</strong> the Server. The Server is then responsible for all the data analysisand alarm trigger<strong>in</strong>g.CoreGRID TR-0099 5


3.2 Component AnalyzersOne of the mostly known projects regard<strong>in</strong>g component analysis is P<strong>in</strong>po<strong>in</strong>t [16]. P<strong>in</strong>po<strong>in</strong>t, developed <strong>in</strong> theUniversity of Stanford, is a project which aim is <strong>to</strong> detect application-level failures <strong>in</strong> Web Applications by us<strong>in</strong>gpath-analysis [17] and component <strong>in</strong>teraction mechanisms. Hav<strong>in</strong>g this project <strong>in</strong> m<strong>in</strong>d, we <strong>in</strong>strumented a syntheticapplication (which will be used <strong>in</strong> our experiments) and we added a new detection layer <strong>to</strong> it. This detection layer wasresponsible for analyz<strong>in</strong>g the components and detect the occurrence of Exceptions or high variations on thecomponents execution latency. If any of these problems is detected, this detection layer will trigger an alarm and s<strong>to</strong>rea description of the problem on a specific database along with the respective timestamp.The major drawback of our implementation is that it is application specific.3.3 Log analyzersLog analyzers are applications that parse log files and extract <strong>in</strong>formation from them.Two of the mostly known standalone rule-based log analyzers are Swatch [23] and Logsurfer [24]. These loganalyzers are commonly used <strong>to</strong> do real-time analysis of the log files and check if certa<strong>in</strong> regular expressions arefound there. If a certa<strong>in</strong> regular expression, (e.g. an error message) is found, the <strong>to</strong>ols will throw output events thatcan be converted <strong>in</strong> alarms.In our experiments we decided <strong>to</strong> use a <strong>to</strong>ol developed by ourselves but with the same design as the ones presentedbefore. We developed a <strong>to</strong>ol that simply sweeps the log files and tries <strong>to</strong> locate keywords that can <strong>in</strong>dicate any k<strong>in</strong>d oferror.If the <strong>to</strong>ol detects keywords such as "Exception", "Error" or "OutOfMemory" an alarm is triggered and thedescription of the problem is s<strong>to</strong>red <strong>in</strong> an external database with the respective timestamp.3.4 Remote Moni<strong>to</strong>r<strong>in</strong>g <strong>Tool</strong>sThe external moni<strong>to</strong>rs are agents that run outside of the Grid platform and that are able <strong>to</strong> behave like real users.They can visit webpages, do shopp<strong>in</strong>g and use services.These external agents are able <strong>to</strong> detect DNS problems, TCP problems, HTTP errors, content match<strong>in</strong>g errors andhigh response times. If any of these problems is detected, the agent will s<strong>to</strong>re the timestamp and all the available<strong>in</strong>formation about the problem <strong>in</strong> a database.Once aga<strong>in</strong>, this was an implementation from ourselves which was based on external moni<strong>to</strong>r<strong>in</strong>g <strong>to</strong>ols such as [29]and [30].4 Experimental ResultsIn this section, we will present two of the many results collected from experiments run <strong>in</strong> the CISUC cluster <strong>in</strong>Coimbra. We used eight nodes of the Cluster and they were divided by: Ma<strong>in</strong> Server, Zabbix Server, External Agentand normal clients.Our ma<strong>in</strong> server was configured <strong>to</strong> expose TPC-W <strong>in</strong> Java [25]. TPC-W is a synthetic application written <strong>in</strong> Javawhich is composed by a set of Servlets that simulate an e-bus<strong>in</strong>ess like Amazon.com. We deployed TPC-W overApache Tomcat (with 1024 MB JVM) [26] and we used MySQL [27] for data s<strong>to</strong>rage. As we have said before, weadded a failure detection layer <strong>to</strong> the TPC-W application with the goal of detect<strong>in</strong>g component failures. In the samemach<strong>in</strong>e we configured our log analyzer <strong>to</strong>ol, which was constantly analyz<strong>in</strong>g the Apache Tomcat logs and weconfigured the Zabbix Agent which was responsible for analyz<strong>in</strong>g the operat<strong>in</strong>g system resources and moni<strong>to</strong>r theTomcat conta<strong>in</strong>er activity.In another node we deployed the Zabbix Server and a MySQL database. This database was very useful <strong>to</strong>synchronize all the failure detection times s<strong>in</strong>ce all the detection mechanism s<strong>to</strong>re the <strong>in</strong>formation about the failures<strong>in</strong> this database.The other s<strong>in</strong>gle node was configured as an external moni<strong>to</strong>r<strong>in</strong>g agent. This agent executes transactions <strong>in</strong> theTPC-W Web application and checks if errors appear dur<strong>in</strong>g those transactions.The rema<strong>in</strong><strong>in</strong>g nodes were used <strong>to</strong> <strong>in</strong>ject workload <strong>in</strong> the application. This workload consists <strong>in</strong> varioustransactions accord<strong>in</strong>g <strong>to</strong> the TPC distribution.CoreGRID TR-0099 6


All the <strong>in</strong>ternal detec<strong>to</strong>rs (Zabbix, Component, and Log) were configured with a 15 seconds poll<strong>in</strong>g <strong>in</strong>terval whilethe external agent was configured with 1 m<strong>in</strong>ute between each transaction.After configur<strong>in</strong>g our experimental framework we started our experiments. We configured our fault <strong>in</strong>jec<strong>to</strong>r <strong>to</strong><strong>in</strong>ject failures <strong>in</strong> the Tomcat conta<strong>in</strong>er and we obta<strong>in</strong>ed very <strong>in</strong>terest<strong>in</strong>g results.4.1 Memory ConsumptionIn this experiment we used our fault <strong>in</strong>jec<strong>to</strong>r <strong>to</strong> simulate memory leaks <strong>in</strong> the Tomcat conta<strong>in</strong>er. To achieve this,we configured our fault <strong>in</strong>jec<strong>to</strong>r <strong>to</strong> consume 1 MB of memory per second, we def<strong>in</strong>ed 120 seconds as our ramp-uptime and we did not def<strong>in</strong>ed any s<strong>to</strong>ppage time. In Figure 3 we can see the detec<strong>to</strong>rs reaction <strong>to</strong> the fault.Figure 3 - Memory ConumptionBy look<strong>in</strong>g carefully at the Figure 3 we can see that the red l<strong>in</strong>e represents the <strong>in</strong>jection period, the dark blue dotsrepresent the mechanism that detected the failure and the light blue dots represent the activated trigger.If we check the detection po<strong>in</strong>ts along the time we can see that the Zabbix Agent spotted the problem at 540seconds. S<strong>in</strong>ce Zabbix was configured <strong>to</strong> trigger an alarm when the JVM reaches 90$\%$ of its maximum heap space,this was as expected result. At this po<strong>in</strong>t, the JVM Memory is almost full and the application starts gett<strong>in</strong>g unstable.This <strong>in</strong>stability is immediately noticed by the components when they understand that the request latencies are gett<strong>in</strong>gvery high. After the components, also the external moni<strong>to</strong>rs detected the problem when they caught some HTTPtimeout errors. By last, the Log analyzer <strong>to</strong>ol detected an error <strong>in</strong> the log file. Therefore, we can say that the errorsdetected <strong>in</strong> the log files were OutOfMemory errors.S<strong>in</strong>ce here, the service gets completely unavailable and only the external agents are able <strong>to</strong> detect the HTTPtimeouts.With this experiment we were able <strong>to</strong> test the capabilities of both our fault <strong>in</strong>jec<strong>to</strong>r and our four detectionmechanisms. Figure 3 can prove that both of them produced the expected results.4.2 Table DeletionCoreGRID TR-0099 7


With this experiment we have seen how the system handles a table deletion opera<strong>to</strong>r error and what detec<strong>to</strong>rs areable <strong>to</strong> detect this k<strong>in</strong>d of problem. S<strong>in</strong>ce TPC-W uses various database tables, we configured our fault <strong>in</strong>jec<strong>to</strong>r <strong>to</strong>delete each one of those tables from 10 <strong>to</strong> 10 seconds. The objective of this table deletion fault is <strong>to</strong> simulate anerroneous database backup.Figure 4 - Table DeletionIf we look at Figure 4 we can see that the component detec<strong>to</strong>r was the quickest <strong>to</strong> spot the failure. This time,<strong>in</strong>stead of detect<strong>in</strong>g high latency <strong>in</strong> the components execution, it has detected an exception at component level. S<strong>in</strong>ceTomcat logs exceptions <strong>to</strong> log files, the Log Analyzer <strong>to</strong>ol was also able <strong>to</strong> catch these exceptions; but lately.Besides the component and log analyzers, also the external agents were able <strong>to</strong> catch this failure. They unders<strong>to</strong>odthat the content of the page that they were request<strong>in</strong>g was different from the expected one. By analys<strong>in</strong>g the content,they have seen that the exceptionOnce aga<strong>in</strong> our <strong>in</strong>jec<strong>to</strong>r was able <strong>to</strong> accomplish its objective: trigger<strong>in</strong>g the detection systems.5 Conclusions and Future WorkUs<strong>in</strong>g fault <strong>in</strong>jec<strong>to</strong>rs <strong>to</strong> test the robustness of an application is one of the most common practices <strong>in</strong> the process ofdevelopment. In this paper we presented a new fault <strong>in</strong>jection <strong>to</strong>ol, named JAFL, which is slightly different from thecommon <strong>in</strong>jec<strong>to</strong>rs. JAFL was developed <strong>to</strong> consume operat<strong>in</strong>g system resources and simulate opera<strong>to</strong>r errors. Afterchoos<strong>in</strong>g some detection mechanisms, we have run various experiments where we used JAFL <strong>to</strong> <strong>in</strong>ject failures <strong>in</strong> asynthetic application and we observed that most of those failures were detected by our detection mechanisms. This isa very positive result s<strong>in</strong>ce our objective was <strong>to</strong> develop a <strong>to</strong>ol capable of trigger<strong>in</strong>g the various fault detectionmechanisms used <strong>in</strong> Web/Grid services. In the future we want <strong>to</strong> add more features <strong>to</strong> the JAFL <strong>to</strong>ol and turn itavailable <strong>to</strong> the community. Our objective is <strong>to</strong> allow the community <strong>to</strong> use JAFL <strong>in</strong> their own applications.CoreGRID TR-0099 8


References[1] H. Ammar, B. Cukic, C. Fuhrman, and A. Mili. A Comparative Analysis of Hardware and Software <strong>Fault</strong>Tolerance. Annals of Software Eng<strong>in</strong>eer<strong>in</strong>g, 10:103 - 150, 2000.[2] Aidemark, J.; V<strong>in</strong>ter, J; Folkesson, P.; Karlsson, J. "GOOFI - A Generic <strong>Fault</strong> Injection <strong>Tool</strong>". Proc DSN'01,Gothenburg, Sewden, 2001, pp. 83-88[3] Avresky, D.R.; Tapadiya P.K; "A method for Develop<strong>in</strong>g a Software-Based <strong>Fault</strong> Injection <strong>Tool</strong>"[4] Eliane Mart<strong>in</strong>s, Cecilia M.F. Rubira, Nelson G.M Leme, "Jaca: A reflective fault <strong>in</strong>jection <strong>to</strong>ol based on patterns".Proc DSN'02[5] Mart<strong>in</strong>s, E.; Rosa, A. "A <strong>Fault</strong> Injection Approach Based on Reflective Programm<strong>in</strong>g". Proc DSN'00[6] Soila Pertet and Priya Narasimhan. Causes of <strong>Failure</strong> <strong>in</strong> Web Applications. December 2005[7] David Openheimer, Archana Ganapathi and David A. Paterson. Why do Internet services fail, and what can bedone about it? In 4th USENIX Symposium on Internet Technologies and Systems, 2003[8] G. Avarez and F. Cristian, "Centralized failure for distributed, fault-<strong>to</strong>lerant pro<strong>to</strong>col test<strong>in</strong>g," <strong>in</strong> Proceed<strong>in</strong>gs ofthe 17th IEEE Internationnal Conference on Distributed Comput<strong>in</strong>g Systems (ICDCS'97) May 1997.[9] S. Han, K. Sh<strong>in</strong>, and H. Rosenberg. "Doc<strong>to</strong>r: An <strong>in</strong>tegrated software fault <strong>in</strong>jection environment for distributedreal-time systems", Proc. Computer Performance and Dependability Symposium, Erlangen, Germany, 1995.[10] S. Dawson, F. Jahanian, and T. Mit<strong>to</strong>n. Orchestra: A fault <strong>in</strong>jection environment for distributed systems. Proc.26th International Symposium on <strong>Fault</strong>-Tolerant Comput<strong>in</strong>g (FTCS), pages 404-414, Sendai, Japan, June 1996.[11] D.T. S<strong>to</strong>tt and al. Nftape: a framework for assess<strong>in</strong>g dependability <strong>in</strong> distributed systems with lightweight fault<strong>in</strong>jec<strong>to</strong>rs. In Proceed<strong>in</strong>gs of the IEEE International Computer Performance and Dependability Symposium, pages 91-100, March 2000.[12] R. Chandra, R. M. Lefever, M. Cukier, and W. H. Sanders. Loki: A state-driven fault <strong>in</strong>jec<strong>to</strong>r for distributedsystems. In In Proc. of the Int.Conf. on Dependable Systems and Networks, June 2000.[13] X. Li, R. Mart<strong>in</strong>, K. Nagaraja, T. Nguyen, B.Zhang. "Mendosus: A SAN-based <strong>Fault</strong>-Injection Test-Bed for theConstruction of Highly Network Services", Proc. 1st Workshop on Novel Use of System Area Networks (SAN-1),2002[14] William Hoarau, and Sbastien Tixeuil. "A language-driven <strong>to</strong>ol for fault <strong>in</strong>jection <strong>in</strong> distributed applications". InProceed<strong>in</strong>gs of the IEEE/ACMWorkshop GRID 2005, page <strong>to</strong> appear, Seattle, USA, November 2005.[15] N. Looker, J.Xu. "Assess<strong>in</strong>g the Dependability of OGSA Middleware by <strong>Fault</strong>-Injection", Proc. 22nd Int.Symposium on Reliable Distributed Systems, SRDS, 2003[16] E. Kiciman and A. Fox. Detect<strong>in</strong>g Application-Level <strong>Failure</strong>s <strong>in</strong> Component-based Internet Services. IEEETransactions on Neural Networks, Vol. 16, Issue 5, 2005[17] M.Y. Chen, A. Accardi, E. Kiciman, D. Patterson, A. Fox and E. Brewer. Path-based failure and evolutionmanagement. In The 1st USENIX/ACM Symposium on Networked Systems Design and Implementation (NSDI '04),San Francisco, CA, March 2004[18] HP Openview - www.managementsoftware.hp.com/,[19] Tivoli - http://www-306.ibm.com/software/tivoli/products/moni<strong>to</strong>r/[20] Zabbix - http://www.zabbix.org/[21] Nagios - http://nagios.org/[22] Big Sister - http:// bigsister.graeff.com[23] Swatch - http://swatch.sourceforge.net[24] Logsurfer - http://www.dfn-cert.de/eng/logsurf/<strong>in</strong>dex.html[25] TPC-W <strong>in</strong> Java - http://www.ece.wisc.edu/~pharm/tpcw.shtml[26] Apache Tomcat - http://<strong>to</strong>mcat.apache.org/[27] MySQL - http://www.mysql.com/[28] Quake Benchmark<strong>in</strong>g <strong>to</strong>ol - Presented <strong>in</strong> the CoreGRID Industrial Conference, CIC’2006[29] Site24x7 - http://site24x7.com[30] Gomez - http://www.gomez.comCoreGRID TR-0099 9

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!