Configurer le serveur WAPT pour les grands déploiements

Les paramètre par défaut pour le système d’exploitation, le service web Nginx et la base de données Postgresql sont adaptés pour environ 400 agents WAPT. Si vous avez plus de 400 clients, il est nécessaire de modifier quelques paramètres au niveau du système, au niveau de la base de données PostgreSQL, du service web Nginx et du Serveur WAPT.

À l’avenir, le script postconf.sh pourrait prendre en charge cette configuration en fonction du nombre prévu d’ordinateurs clients.

Avec les paramètres suivants, un serveur WAPT devrait pouvoir accueillir jusqu’à environ 5 000 clients actifs simultanés. Vous pouvez avoir plus de clients dans la base de données s’ils ne fonctionnent pas tous en même temps. Si vous avez plus de 5000 clients, il est recommandé d’avoir plus d’un serveur WAPT en parallèle.

La limite du nombre de clients finaux est due au goulot d’étranglement dans le code python et le moteur PostgreSQL. Les performances du WAPT s’améliorent avec le temps et, à l’avenir, le serveur WAPT pourrait prendre en charge une large base de clients WAPT sur un seul serveur. Cependant, la partie Nginx est très bien dimensionnée et elle peut tirer pleinement partie d’une connexion 10 Gbps pour les gros déploiements de paquets.

Changements de configuration pour une performance renforcée

Note

Les paramètres à modifier ci-dessous sont liés entre eux et doivent être modifiés globalement et non individuellement.

Configurer Nginx

Dans le fichier /etc/nginx/nginx.conf, modifier le paramètre worker_connections. La valeur devrait être environ 2,5 fois le nombre de clients WAPT (n connexions pour les webockets et n connexions pour le téléchargement de paquets et le chargement de l’inventaire + une certaine marge).

events {
    worker_connections 4096;
}

Ensuite, mettre à jour le nombre de filedescriptor dans le fichier /etc/nginx/nginx.conf :

worker_rlimit_nofile 32768;

Configurer Linux

Augmenter le nombre de filedescriptors. Le fichier systemd demande une augmentation du nombre autorisé de filedescriptors (LimitNOFILE=32768). Nous devrions avoir la même chose pour Nginx. Il y a quelques limites à augmenter.

Tout d’abord, nous modifions au niveau du système le nombre de filedescriptors autorisés pour Nginx et WAPT.

  • créer le fichier /etc/security/limits.d/wapt.conf :

    cat > /etc/security/limits.d/wapt.conf <<EOF
    wapt         hard    nofile      32768
    wapt         soft    nofile      32768
    www-data     hard    nofile      32768
    www-data     soft    nofile      32768
    EOF
    

Nginx sert de proxy inverse et établit un grand nombre de connexions. Chaque client WAPT maintient une connexion websocket en permanence afin d’échanger avec le serveur WAPT.

Le noyau Linux a une protection contre l’ouverture simultanée de trop de connexions TCP et on peut obtenir le message SYN flooding on port dans le journal d’historique Nginx. Afin d’éviter ces messages, il est nécessaire de modifier les deux paramètres suivants. Ils doivent être environ 1,5 fois supérieur au nombre de clients WAPT.

cat > /etc/sysctl.d/wapt.conf <<EOF
net.ipv4.tcp_max_syn_backlog=4096
net.core.somaxconn=4096
EOF

sysctl --system

Configurer PostgreSQL

Un plus grand nombre de clients a besoin d’un plus grand nombre de connexions à la base de données PostgreSQL. Dans le fichier postgresql.conf (file:/etc/postgresql/11/main/postgresql.conf sur debian 10 par exemple), vous devez augmenter le paramètre suivant pour atteindre environ 1/4 du nombre d’agents WAPT actifs.

max_connections = 1000

Configurer le serveur WAPT

Dans le fichier /opt/wapt/conf/waptserver.ini, db_max_connections doit être égal à PostgreSQL max_connections moins 10 (PostgreSQL doit garder quelques connexions pour ses affaires à lui). Le paramètre max_clients devrait être fixé à environ 1,2 fois le nombre d’agents WAPT :

[options]
...
max_clients = 4096
db_max_connections =  990

Configuration pour le téléchargement de gros paquets

En fonction du partitionnement de votre serveur WAPT, vous devrez peut-être faire attention au répertoire de téléchargement de fichiers temporaires Nginx. Nginx agit comme un proxy inversé pour le moteur Python du serveur WAPT et il effectue une mise en cache des paquets téléchargés lors du téléchargement d’un nouveau paquet depuis la console.

Les paquets sont stockés dans le répertoire /var/lib/nginx/proxy. Vous devez vous assurer que la partition qui héberge ce répertoire est suffisamment grande. Vous pouvez changer l’emplacement de ce répertoire en utilisant le paramètre de configuration Nginx suivant.

$client_body_temp_path