Bastien Louche

Systèmes – Réseaux – Sécurité – Web | Tutoriels | CV
  • Accueil
  • CV
  • Contactez-moi

[Tutoriels] Benchmarker un serveur web Apache 2 avec Apachebench

Bastien Louche | 11/05/2010 | 10:52

Aujourd’hui on va voir comment utiliser un outil qui permet de benchmarker un serveur web Apache 2.

Pour le tutoriel on utilisera 2 serveurs, un avec Apache 2, et un avec Apachebench. Comme d’habitude, le système de base est Debian Lenny.

On installe Apachebench via un apt-get :

apt-get install apache2-utils

La commande « ab » est maintenant disponible, elle possède 2 principales options qui sont :

-n : Nombre total de requêtes à exécuter

-c : Nombre de requêtes exécuté en parallèle

On lance la commande suivante pour tester, mais vous pouvez adapter les valeurs des options à votre convenance :

ab -n 30000 -c 30 http://178.32.127.50/

On obtiens donc le résultat suivant :

This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking 178.32.127.50 (be patient)
Completed 3000 requests
Completed 6000 requests
Completed 9000 requests
Completed 12000 requests
Completed 15000 requests
Completed 18000 requests
Completed 21000 requests
Completed 24000 requests
Completed 27000 requests
Completed 30000 requests
Finished 30000 requests

Server Software:        Apache/2.2.9
Server Hostname:        178.32.127.50
Server Port:            80

Document Path:          /
Document Length:        45 bytes

Concurrency Level:      30
Time taken for tests:   3.277 seconds
Complete requests:      30000
Failed requests:        0
Write errors:           0
Total transferred:      9570000 bytes
HTML transferred:       1350000 bytes
Requests per second:    9154.42 [#/sec] (mean)
Time per request:       3.277 [ms] (mean)
Time per request:       0.109 [ms] (mean, across all concurrent requests)
Transfer rate:          2851.82 [Kbytes/sec] received

Connection Times (ms)
min  mean[+/-sd] median   max
Connect:        0    1   0.4      1       6
Processing:     0    2   1.3      2      19
Waiting:        0    2   1.0      2      16
Total:          1    3   1.4      3      19

Percentage of the requests served within a certain time (ms)
50%      3
66%      3
75%      4
80%      4
90%      5
95%      5
98%      6
99%      8
100%     19 (longest request)

Vous pouvez maintenant analyser votre résultat pour améliorer vos performances en optimisant votre serveur web Apache 2.

Il existe d’autres solutions pour benchmarker un serveur Apache 2, et notamment Siege (Vous trouverez un tutoriel pour cette application sur Tux-planet), mais aussi httperf ou http_load.

Sources et Informations supplémentaires : [1] [2]

Commentaires
Pas de Commentaires »
Catégories
Tutoriels
Tags
Apache, Apachebench, Serveur, Web
Flux rss des commentaires Flux rss des commentaires
Trackback Trackback

[Tutoriels] Configuration d’un cluster Apache 2 avec HAProxy

Bastien Louche | 03/05/2010 | 14:41

J’ai décidé d’utiliser les machines virtuelles offertes par OVH pendant la phase de test de son offre Cloud Computing, pour vous faire un tutoriel sur la configuration d’un cluster Apache 2 avec HAProxy pour la partie équilibrage de charges.

Il faut donc 3 serveurs, 1 pour HAProxy, et minimum 2 pour le cluster Apache 2, on utilisera un système vierge sous Debian Lenny.

Voici donc un rapide schéma de la mise en place :

Les adresses IP utilisées sont des IP publiques appartenant au Cloud Computing d’OVH, il faudra donc les modifier pendant vos configurations personnelles.

Dans un premier temps on va configurer les serveurs Apache 2 (web1-cloud et web2-cloud) :

apt-get install apache2

Ensuite on créer le fichier qui sera testé par HAProxy pour vérifier que le serveur Apache 2 est opérationnel :

touch /var/www/haproxytest.txt

On va alors modifier légérement la configuration de : 

nano /etc/apache2/sites-available/default

Pour ajouter une nouvelle ligne et remplacer le CustomLog afin d’éviter que les logs d’Apache 2contiennent les checks de HAProxy :

SetEnvIf Request_URI « ^/haproxytest\.txt$ » dontlog
CustomLog /var/log/apache2/access.log combined env=!dontlog

On peut maintenant redémarrer Apache 2, les serveurs du cluster sont configurés :

/etc/init.d/apache2 restart

On se connecte sur le serveur qui va s’occuper de HAProxy :

apt-get install haproxy

On supprime la configuration par défaut de HAProxy et on re-créer le fichier pour éditer notre configuration :

rm -f /etc/haproxy/haproxy.cfg
nano /etc/haproxy/haproxy.cfg

global
        log 127.0.0.1   local0
        log 127.0.0.1   local1 notice
        #log loghost    local0 info
        maxconn 4096
        #debug
        #quiet
        user haproxy
        group haproxy

defaults
        log     global
        mode    http
        option  httplog
        option  dontlognull
        retries 3
        redispatch
        maxconn 2000
        contimeout      5000
        clitimeout      50000
        srvtimeout      50000

listen blweb 178.32.121.84:80
       mode http
       stats enable
       stats auth user:password
       balance roundrobin
       cookie SERVID prefix
       option httpclose
       option forwardfor
       option httpchk HEAD /haproxytest.txt HTTP/1.0
       server web1-cloud 178.32.114.13:80 cookie A check
       server web2-cloud 178.32.121.231:80 cookie B check

On peut maintenant lancer HAProxy :

/etc/init.d/haproxy start

Vous pouvez maintenant vous rendre sur l’adresse IP de votre serveur HAProxy via le navigateur de votre choix pour admirer le résultat !

Une petite astuce consiste à modifier le fichier /var/www/index.html pour mieux visualiser quel serveur a répondu à chaque rafraichissement de la page.

A noter que dans notre configuration nous utilisons le paramètre stats enable qui permet à l’aide des identifiants de stats auth de se connecter via http://IP-HAProxy/haproxy?stats à une interface web présentant les statistiques d’utilisation de HAProxy et des différents serveurs Apache 2.

Sources et Informations supplémentaires : [1] [2]

Commentaires
26 Commentaires »
Catégories
Tutoriels
Tags
Apache, Debian, HAProxy, Linux, Serveur, Web
Flux rss des commentaires Flux rss des commentaires
Trackback Trackback

[Tutoriels] Configuration de Nginx en reverse proxy

Bastien Louche | 31/03/2010 | 17:31

Dans le but d’optimiser un serveur web qui tourne sous Apache, on va configurer Nginx en reverse proxy, c’est d’ailleurs la configuration mise en place sur le serveur de www.bastien-louche.fr qui fonctionne très bien depuis début Janvier. Je vous passe les détails sur la définition d’un reverse proxy ou sur Nginx, Wikipédia fait cela beaucoup mieux que moi !

Dans notre cas vous possédez déjà Apache, PHP, MySQL sur votre serveur et vous souhaitez seulement ajouter Nginx en guise de reverse proxy.

On installe Nginx via une simple commande usuelle :

apt-get install nginx

On ajoute le paquet suivant pour permettre à Apache de bien loguer les IP des connexions :

apt-get install libapache2-mod-rpaf

On va ensuite pouvoir créer le fichier de configuration de Nginx pour l’utiliser en mode reverse proxy :

nano /etc/nginx/conf.d/proxy.conf

On y écris les lignes suivantes :

proxy_redirect          off;
proxy_set_header        Host            $host;
proxy_set_header        X-Real-IP       $remote_addr;
proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size    10m;
client_body_buffer_size 128k;
client_header_buffer_size 64k;
proxy_connect_timeout   90;
proxy_send_timeout      90;
proxy_read_timeout      90;
proxy_buffer_size   16k;
proxy_buffers       32   16k;
proxy_busy_buffers_size 64k;

On peut alors configurer le fichier /etc/nginx/sites-available/default pour activer le mode reverse proxy, dans notre configuration Nginx écoutera sur le port 80 et Apache sur le port 8080 (Les lignes à ajouter sont en gras) :

server {
listen   80;
server_name  localhost;

access_log  /var/log/nginx/localhost.access.log;

location / {
proxy_pass
http://127.0.0.1:8080/;
}

}

On modifie ensuite le fichier de configuration du port d’écoute de Apache :

nano /etc/apache2/ports.conf

NameVirtualHost *
Listen 127.0.0.1:8080

On peut maintenant redémarrer les services :

/etc/init.d/apache2 start
/etc/init.d/nginx start

L’installation est terminée et opérationnelle comme on peut le constater grâce au module Domain Details pour Firefox :

Pour rendre votre Nginx moins verbeux vous pouvez ajouter une ligne dans le fichier /etc/nginx/nginx.conf :

http {
[...]
server_tokens off;
}

Sources et Informations supplémentaires : [1] [2]

Commentaires
Pas de Commentaires »
Catégories
Tutoriels
Tags
Apache, Debian, Nginx, Systèmes, Web
Flux rss des commentaires Flux rss des commentaires
Trackback Trackback

Recherche

Réseaux sociaux

CV Bastien Louche

Scoop.it – WordPress

Pages

  • CV
  • Contactez-moi

Catégories

  • Annonces (6)
  • Tutoriels (8)

Commentaires récents

  • Bastien Louche dans [Tutoriels] Installation de Snort + Basic Analysis and Security Engine
  • Ben dans [Tutoriels] Installation de Snort + Basic Analysis and Security Engine
  • Jig dans [Tutoriels] Installation de Snort + Basic Analysis and Security Engine
  • Bastien Louche dans [Tutoriels] Installation de Snort + Basic Analysis and Security Engine
  • Jig dans [Tutoriels] Installation de Snort + Basic Analysis and Security Engine

Mots-clefs

Apache Apachebench Blog Cherokee Debian DNS DNSSEC Gandi HAProxy IDS IP iPhone Linux Logiciels Libres Nginx Réseaux Serveur Snort Systèmes Sécurité VPS Web Whois Windows WordPress YOURLS

Twitter

  • Le flux RSS de ce compte twitter ne semble pas disponible pour le moment.

Suivre @bastienlouche sur Twitter.


Promouvoir et soutenir le logiciel libre