Le mode connexion inverse ou one peer retention
Centreon-Broker intègre de nombreuses options qui ne sont pas toujours très documentées. Nous allons nous intéresser à une option qui peut vous aider dans certaines situations. Cette option c'est le mode de connexion inverse ou "one peer retention". Cette fonctionnalité permet de modifier le fonctionnement du flux TCP entre l'ordonnanceur et le broker en inversant le mode Client-Serveur. Nous allons voir en détail ce mécanisme et nous allons l'appliquer sur un exemple concret.
1 - Principe de la liaison entre l'ordonnanceur et le broker
Par défaut, Centreon-Broker installé sur le serveur Central de Centreon établie un socket TCP et écoute en permanence le port par défaut 5669 (mode Listen). Le ou les moteurs Centreon-Engine (ordonnanceurs) chargent au démarrage le module cbmod du broker. Celui-ci établit un socket TCP et établie une connexion avec le broker du serveur Central.
Avec le mode par défaut la connexion TCP est initialisée par le poller et envoie les données au Central.
2 - Un exemple concret
Admettons que vous êtes sysadmin de la société Tartempion. Vous possédez une architecture distribuée avec un Central et un poller distant. Pas de problème de ports TCP, ceux-ci sont ouverts car vous êtes en interne.
Votre société achète l'entreprise Duchmol, vous devez installer un poller distant. Celui sera installé en dehors du réseau interne, vous pourrez y accéder en flux TCP entrant mais ce serveur ne pourra accéder au réseau interne (blocage par firewall). D'après ce schéma de principe, nous aurons un problème de fonctionnement de notre poller.
Après avoir ouvert les ports 22 et 5669, côté entreprise Tartempion, nous avons donc un problème avec la connexion TCP venant de l'ordonnanceur du poller distant. En effet la connexion étant initié côté poller ne sera pas autorisé par le firewall. Et c'est là, que l'option "one peer retention" du broker Centreon prend tout son sens. Nous allons initier la connexion TCP du côté du serveur Central comme le montre ce schéma de principe.
2.1 Configuration de la maquette
Avant de voir la configuration de cette option, nous allons dresser le décor. Pour simuler cet exemple, je vais partir avec trois VM Debian 8 sur un même réseau. Le firewall sera simulé dans la machine poller de l'entreprise Duchmol. Il interdira tous les flux TCP initié par ce serveur vers le Central. Par contre, il autorisera les connexions établies de l'extérieur.
Nous partirons du principe que vous avez installé votre supervision avec le Central et le poller1. Bien sûr votre supervision est fonctionnelle. Maintenant installons notre serveur Poller2. Configurons le firewall avec iptables. Nous allons créer un fichier /etc/init.d/firewall.
#!/bin/sh
# firewall /etc/init.d/firewall
# Vider les tables actuelles
iptables -t filter -F
# Vider les règles personnelles
iptables -t filter -X
# Ne pas casser les connexions etablies
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -t filter -A OUTPUT -p tcp -d 172.16.209.80 -j DROP
La configuration est très basique. Nous interdisons seulement les connexions TCP initiées par le serveur vers le Central. Appliquons cette configuration :
chmod +x /etc/init.d/firewall
/etc/init.d/firewall
Pour vérifier le fonctionnement du firewall, vous ne devez pas pouvoir vous connecter en SSH du poller vers le central. Par contre, l'inverse est vrai. Pour l'installation du poller, nous utiliserons les paquets Debian comme indiqué dans cette procédure. Il faudra créer la connexion SSH entre le serveur Centreon et le poller distant, puis la configuration dans l'IHM de Centreon.
Exportez la configuration du poller2. Vérifiez le fonctionnement de la connexion ssh en observant le démarrage du processus centengine.
service centengine status
● centengine.service - Start and stop Centreon Engine
Loaded: loaded (/lib/systemd/system/centengine.service; enabled)
Active: active (running) since mer. 2018-03-28 14:54:19 CEST; 8s ago
Process: 11017 ExecReload=/bin/kill -HUP $MAINPID (code=exited, status=0/SUCCESS)
Main PID: 12102 (centengine)
CGroup: /system.slice/centengine.service
└─12102 /usr/sbin/centengine /etc/centreon-engine/centengine.cfg
Par contre la connexion TCP du module cbmod ne fonctionnera pas.
2.2 Configuration du mode One peer retention
Nous allons maintenant configurer notre module cbmod pour que celui écoute le port 5669. Modifier l'onglet Output en supprimant l'adresse IP du Central et en sélectionnant Yes pour l'option One peer retention
Indiquons au broker Central qu'il doit se connecter au poller distant. Sélectionnez la configuration Central-broker-master. Cliquez sur l'onglet Input et ajoutons un Input TCP - IPv4. Nommez celui-ci central-peer-retention, saisissez le port 5669 et l'IP du poller distant 172.16.209.60.
Sauvegardez le tout et appliquez cette nouvelle configuration avec la méthode restart pour redémarrer le moteur et le mode listen de la connexion TCP. N'oubliez pas le Central pour l'application de la configuration. Vérifiez que votre poller écoute bien sur le port 5669.
root@poller2:#netstat -an | grep 5669
tcp 0 0 0.0.0.0:5669 0.0.0.0:* LISTEN
Au bout de quelques secondes, la connexion s'établie entre le Central et le poller.
root@poller2:#netstat -an | grep 5669
tcp 0 0 0.0.0.0:5669 0.0.0.0:* LISTEN
tcp 0 0 172.16.209.60:5669 172.16.209.80:38733 ESTABLISHED
2.3 Vérification des statistiques
On peut vérifier les statistiques du broker en sélectionnant la vue home -> Poller Statistics. Vous pouvez visualiser les deux configurations différentes.