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

In the /etc/nginx/nginx.conf file (for Windows C:\wapt\waptserver\nginx\conf\nginx.conf), modify worker_connections parameter. The value should be around 2.5 times the number of WAPT clients (n connections for websockets and n connections for package downloads and inventory upload + some margin).

events {
    worker_connections 4096;
}

Then upgrade the number of filedescriptors in the /etc/nginx/nginx.conf file (for Windows C:\wapt\waptserver\nginx\conf\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

A higher number of clients need a higher number of connections to the PostgreSQL database. In the postgresql.conf file (file:/etc/postgresql/11/main/postgresql.conf on debian 10 for example or for Windows C:\wapt\waptserver\pgsql9.6_data\postgresql.conf), you need to increase the following parameter to approximately 1/4 the number of active WAPT agents.

max_connections = 1000

Configurer le serveur WAPT

In /opt/wapt/conf/waptserver.ini file (for Windows C:\wapt\conf\waptserver.ini, db_max_connections should be equal to PostgreSQL max_connections minus 10 (PostgreSQL needs to keep some connections for its housekeeping stuff). The max_clients parameter should be set around 1.2 times the number of WAPT agents:

[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