Cloud Lasttest mit JMeter und Amazon
27. Oktober 2011Wir hatten die Aufgabe für eine Webseite Lasttests zu erstellen. Die zu erzeugende Last sollte sehr real sein. Da man mit einen einzigen Rechner nicht so eine hohe Last erzeugen kann haben wir uns für die Amazon Cloud entschieden. Dort kann man für einen kurzen Zeitraum eine hohe Zahl an Rechnern verwenden und das mit sehr geringen Kosten.
Als Lasttest Tool wird JMeter verwendet. Mit JMeter kann man sehr granulare Testpläne erstellen und damit ein relativ gutes Abbild der realen Last simulieren.
http://jakarta.apache.org/jmeter/
JMeter ist in der Lage die Tests über verteilte Rechner auszuführen. Dadurch kann man eine sehr große Last erzeugen.
http://jakarta.apache.org/jmeter/usermanual/remote-test.html
JMeter ist in der Lage alle Anfragen über einen Proxy laufen zu lassen. So kann man IP geschützte Seiten testen indem man die IP vom Proxy freischaltet. In unseren Fall verwenden wir den Squid Proxy mit einer geschützten Authentifizierung.
Vorbereitung
Proxy Server AMI erstellen
In der Amazon Cloud gibt es sogenannte AMI (Amazon Machine Images). Das sind Abbildungen von Systemen die man erstellen kann um diese immer wieder zu verwenden.
AMI erstellen
AWS Management Console https://console.aws.amazon.com/ec2/ auf den Reiter ec2 wechseln und eine Instanz starten. Den Rechner nach eigenen Wünschen anpassen und dann über das Menü „Instance Action“ eine AMI erstellen. Amazon erstellt dann von dem aktuellen System ein Abbild das man wiederverwenden kann.
Squid Proxy in der Cloud installieren:
http://home.engineering.iastate.edu/~hawklan/squidProxy/squidProxy.html
Dieser Proxy muss natürlich abgesichert werden, da er sonst missbraucht werden könnte.
Passwort Authentifizierung einrichten
In der Squid Konforgurations Datei (/etc/squid/squid.conf) muss als erstes das Authentifizierungs Programm eingestellt werden. Es gibt diverse Möglichkeiten. ncsa_auth ist wahrscheinlich die einfachste. Man erzeugt mit htpasswd eine Passwort Datei (/etc/squid/squid_user) und gibt diese in der Konfiguration an.
acl jmeter proxy_auth REQUIREDhttp_access allow jmeter |
Der Proxy lässt sich damit nur noch mittels Usernamen und Passwort aufrufen.
Caching auschalten
Squid speichert die Anfragen normalerweise. Das würde aber das Ergebniss verfälschen. Deshalb muss man noch das Caching ausschalten. Dazu genügt es folgende Zeile in die Squid Konforgurations Datei (/etc/squid/squid.conf) einzufügen.
cache deny all
Proxy automatisch starten
Damit der Proxy automatisch mit dem Starten der Instanz mit gestartet wird kann man in der Datei /etc/rc.local diesen Befehl eintragen /etc/init.d/squid start .
Proxy starten
In der AWS Management Console starten wir die vorgefertigte AMI.
JMeter Master Server
Für den JMeter Master Server verwenden wir einen vorgefertigte Windows AMI bei der JMeter vorinstalliert ist. Dieser Rechner kann dann über Remote Desktop bedient werden.
Auf den Master Server muss dann der Testplan kopiert werden.
Auf dem Master Server wird die Testausführung gesteuert.
JMeter Slaves
Die JMeter Slaves sind beliebig viele Linux Rechner auf denen der JMeter im Server Modus gestartet ist. Dafür benötigt man eine AMI auf der JMeter vorhanden ist und dieser Befehl Autostart (/etc/rc.local) ist
|
Dafür steht auch die öffentliche AMI zur Verfügung: ami-823f0df6
Die Adressen der Slave Rechner müssen in die JMeter Properties Datei auf den Master Server eingetragen werden. So das dieser seine Remote Maschinen kennt.
jmeter.properties
|
Starten der Tests
Wenn die Slaves hochgefahren sind kann der Testplan auf den Remote Servern gestartet werden.
Tags:cloud, test
Veröffentlicht in Test | Kommentare deaktiviert




