diff --git a/doc/haproxy-en.txt b/doc/haproxy-en.txt index 335cff842..59cba6869 100644 --- a/doc/haproxy-en.txt +++ b/doc/haproxy-en.txt @@ -2,9 +2,9 @@ H A - P r o x y Reference Manual ------------------- - version 1.2.9 + version 1.2.12 willy tarreau - 2006/03/01 + 2006/04/15 ============ | Abstract | @@ -42,11 +42,14 @@ There are only a few command line options : exits with code 1 if a syntax error was found. -p asks the process to write down each of its children's pids to this file in daemon mode. + -sf specifies a list of pids to send a FINISH signal to after startup. + -st specifies a list of pids to send a TERMINATE signal to after startup. -s shows statistics (only if compiled in) -l shows even more statistics (implies '-s') -de disables use of epoll() -dp disables use of poll() - + -db disables background mode (stays in foreground, useful for debugging) + -m enforces a memory usage limit to a maximum of megabytes. The maximal number of connections per proxy is used as the default parameter for each instance for which the 'maxconn' paramter is not set in the 'listen' section. @@ -59,9 +62,24 @@ section. When the proxy runs in this mode, it dumps every connections, disconnections, timestamps, and HTTP headers to stdout. This should NEVER be used in an init script since it will prevent the system from starting up. +For debugging, the '-db' option is very useful as it temporarily disables +daemon mode and multi-process mode. The service can then be stopped by simply +pressing Ctrl-C, without having to edit the config nor run full debug. + Statistics are only available if compiled in with the 'STATTIME' option. It's only used during code optimization phases. +The '-st' and '-sf' options are used to inform previously running processes +that a configuration is being reloaded. They will receive the SIGTTOU signal to +ask them to temporarily stop listening to the ports so that the new process +can grab them. If anything wrong happens, the new process will send them a +SIGTTIN to tell them to re-listen to the ports and continue their normal +work. Otherwise, it will either ask them to finish (-sf) their work then softly +exit, or immediately terminate (-st), breaking existing sessions. A typical use +of this allows a configuration reload without service interruption : + + # haproxy -p /var/run/haproxy.pid -sf $(cat /var/run/haproxy.pid) + ====================== | Configuration file | ====================== @@ -219,7 +237,7 @@ Example : 1.4) Startup modes ------------------ -The service can start in several different : +The service can start in several different modes : - foreground / background - quiet / normal / debug @@ -230,6 +248,9 @@ returns immediately after forking. That's accomplished by the 'daemon' option in the 'global' section, which is the equivalent of the '-D' command line argument. +The '-db' command line argument overrides the 'daemon' and 'nbproc' global +options to make the process run in normal, foreground mode. + Moreover, certain alert messages are still sent to the standard output even in 'daemon' mode. To make them disappear, simply add the 'quiet' option in the 'global' section. This option has no command-line equivalent. @@ -282,6 +303,9 @@ Example : # to stop only those processes among others : # kill $( indique au processus père qu'il doit écrire les PIDs de ses fils dans ce fichier en mode démon. + -sf specifie une liste de PIDs auxquels envoyer un signal FINISH + -st specifie une liste de PIDs auxquels envoyer un signal TERMINATE -s affiche les statistiques (si option compilée) -l ajoute des informations aux statistiques -de désactive l'utilisation de epoll() -dp désactive l'utilisation de poll() + -db désactive la mise en arrière-plan (utile pour débugger) + -m applique une limitation de Mo d'utilisation mémoire Le nombre maximal de connexion simultanées par proxy est le paramètre par défaut pour les proxies pour lesquels ce paramètre n'est pas précisé dans le @@ -64,10 +68,27 @@ Le mode debug correspond mode, toutes les connexions, déconnexions, et tous les échanges d'en-têtes HTTP sont affichés. +Pour debugger, l'option '-db' est très pratique car elle désactive +temporairement le mode daemon et le mode multi-processus. Le service peut alors +être arrêté par un simple appui sur Ctrl-C, sans avoir à modifier la +configuration ni à activer le mode debug complet. + Les statistiques ne sont disponibles que si le programme a été compilé avec l'option "STATTIME". Il s'agit principalement de données brutes n'ayant d'utilité que lors de benchmarks par exemple. +Les paramètres '-st' et '-sf' sont utilisés pour informer des processus +existants que la configuration va être rechargée. Ils recevront le signal +SIGTTOU, leur demandant de libérer les ports en écoute afin que le nouveau +processus puisse les prendre. Si quoi que ce soit se passe mal, le nouveau +processus leur enverra un signal SIGTTIN pour leur indiquer qu'ils peuvent +se remettre en écoute et continuer leur travail. En revanche, si la +configuration se charge correctement, alors ils recevront un signal de demande +de fin de travail en douceur (-sf), ou de terminaison immédiate (-st) qui +coupera les sessions en cours. Un usage typique tel que celui-ci permet de +recharger une configuration sans interruption de service : + + # haproxy -p /var/run/haproxy.pid -sf $(cat /var/run/haproxy.pid) ============================ | Fichier de configuration | @@ -247,6 +268,9 @@ initialisation. Il faut le mettre en arri au processus appelant. C'est ce que fait l'option 'daemon' de la section 'global', et qui est l'équivalent du paramètre '-D' de la ligne de commande. +Le paramètre de ligne de commande '-db' inhibe les options globales 'daemon' +et 'nbproc' pour faire fonctionner le processus en mode normal, avant-plan. + Par ailleurs, certains messages d'alerte sont toujours envoyés sur la sortie standard, même en mode 'daemon'. Pour ne plus les voir ailleurs que dans les logs, il suffit de passer en mode silencieux par l'ajout de l'option 'quiet'. @@ -301,6 +325,9 @@ Exemple : # pour stopper seulement ces processus parmi d'autres : # kill $( OPTIONS / HTTP/1.0 - option httpchk URI -> OPTIONS HTTP/1.0 - option httpchk METH URI -> HTTP/1.0 - option httpchk METH URI VER -> + Voir les exemples ci-après. Depuis la version 1.1.17, il est possible de définir des serveurs de secours, @@ -1038,6 +1112,59 @@ tente de s'y connecter, il faut pr redispatch # renvoyer vers dispatch si serveur HS. +3.3) Assignation de poids différents à des serveurs +--------------------------------------------------- +Parfois il arrive d'ajouter de nouveaux serveurs pour accroître la capacité +d'une ferme de serveur, mais le nouveau serveur est soit beaucoup plus petit +que les autres (dans le cas d'un ajout d'urgence de matériel de récupération), +soit plus puissant (lors d'un investissement dans du matériel neuf). Pour cette +raison, il semble parfois judicieux de pouvoir envoyer plus de clients vers les +plus gros serveurs. Jusqu'à la version 1.2.11, il était nécessaire de répliquer +plusieurs fois les définitions des serveurs pour augmenter leur poids. Depuis +la version 1.2.12, l'option 'weight' est disponible. HAProxy construit alors +une vue des serveurs disponibles la plus homogène possible en se basant sur +leur poids de sorte que la charge se distribue de la manière la plus lisse +possible. Le poids compris entre 1 et 256 doit refléter la capacité d'un +serveur par rapport aux autres. De cette manière, si un serveur disparait, les +capacités restantes sont toujours respectées. + + +Exemple : +--------- +# distribution équitable sur 2 opteron and un ancien pentium3 + + listen web_appl 0.0.0.0:80 + mode http + cookie SERVERID insert nocache indirect + balance roundrobin + server pentium3-800 192.168.1.1:80 cookie server01 weight 8 check + server opteron-2.0G 192.168.1.2:80 cookie server02 weight 20 check + server opteron-2.4G 192.168.1.3:80 cookie server03 weight 24 check + server web-backup1 192.168.2.1:80 cookie server04 check backup + server web-excuse 192.168.3.1:80 check backup + +Notes : +------- + - lorsque le poids n'est pas spécifié, la valeur par défaut est à 1 + + - le poids n'impacte pas les tests de fonctionnement (health checks), donc il + est plus propre d'utiliser les poids que de répliquer le même serveur + plusieurs fois. + + - les poids s'appliquent également aux serveurs de backup si l'option + 'allbackups' est positionnée. + + - le poids s'applique aussi à la répartition selon la source + ('balance source'). + + - quels que soient les poids, le premier serveur sera toujours assigné en + premier. Cette règle facilite les diagnostics. + + - pour les puristes, l'algorithme de calculation de la vue des serveurs donne + une priorité aux premiers serveurs, donc la vue est la plus uniforme si les + serveurs sont déclarés dans l'ordre croissant de leurs poids. + + 4) Fonctionnalités additionnelles =================================