Prérequis d’installation

L’installation de l’environnement RELAYWS sous Docker Swarm s’effectue à l’aide du rôle Ansible reemo-relayws.

L’environnement RELAYWS se compose de trois services principaux :

  • Nginx : communication avec l’infrastructure Reemo

  • Traefik : point d’entrée pour les Agents Reemo et les utilisateurs

  • ws-relay-server : micro-service de relai entre un Agent Reemo et un utilisateur

Avant de démarrer, assurez-vous que votre environnement répond aux conditions suivantes.

Système d’exploitation supportés

  • Ubuntu (versions LTS récentes)

  • Red Hat Enterprise Linux

  • Rocky Linux

Spécifications matérielles minimales

Chaque connexion simultanée utilisant l’environnement RELAYWS consomme environ 30 Mo de RAM.
1 vCPU peut être partagé par ~4 connexions simultanées.
Dimensionner le serveur en fonction du nombre d’utilisateurs concurrents attendus.

Dépendances Ansible

Le rôle reemo-relayws s’appuie sur Ansible et plusieurs collections. Installez-les selon votre distribution :

Red Hat / RockyLinux

yum install ansible-core
yum install -y python3-pip
pip3 install docker
ansible-galaxy collection install community.docker
ansible-galaxy collection install community.crypto

Warning

Sous RockyLinux 9, il est nécessaire d’utiliser community.docker >= 3.10.2. Si besoin, forcez la mise à jour :

ansible-galaxy collection install community.docker --upgrade

Ubuntu

apt install ansible
apt install python3-docker
ansible-galaxy collection install community.docker
ansible-galaxy collection install community.crypto

Avant de procéder à l’installation de l’environnement RELAYWS Docker Swarm doit être installé.

Docker Swarm

RELAYWS s’appuie sur un cluster Docker Swarm pour déployer et gérer dynamiquement les conteneurs de relai WebSocket. L’installation et l’initialisation de Docker Swarm constituent donc un prérequis avant toute mise en place de l’environnement RELAYWS.

Pour l’installation de Docker Swarm, deux approches sont possibles :

  • installation manuelle, réalisée directement sur les serveurs,

  • installation automatisée, via le rôle Ansible reemo-relayws qui peut à la fois installer Docker et initialiser le cluster avec différents paramètres.

Fichier Inventaire minimal

Pour une installation de Docker Swarm, un fichier inventaire minimal est nécessaire regroupant les noeuds sur lesquels Docker Swarm sera installé et configuré.

L’inventaire se base sur le groupe relayws_manager. Dans le reste de cette documentation, le fichier inventaire sera nommé inventory.yml.

Exemple avec un seul serveur

relayws_manager:
    hosts:
        relayws_manager1:
            ansible_host: "10.20.0.1"

Exemple avec un cluster de trois serveurs

relayws_manager:
    hosts:
        relayws_manager1:
            ansible_host: "10.20.0.1"
        relayws_manager2:
            ansible_host: "10.20.0.2"
        relayws_manager3:
            ansible_host: "10.20.0.3"

Installation manuelle de Docker Swarm

Voici les commandes pour une installation manuelle de Docker qui inclut Docker Swarm

  • Ubuntu :

apt install docker.io python3-docker -y
  • RedHat :

yum install -y yum-utils
yum-config-manager --add-repo https://download.docker.com/linux/rhel/docker-ce.repo
yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
systemctl start docker
systemctl enable docker
yum install -y python3-pip
pip3 install docker

Après l’installation de docker, il faut initialiser le cluster. Deux options sont possibles:

  • Manuellement en utilisant la Documentation Docker

  • En utilisant le rôle Ansible reemo-relayws et l’option SWARM_INIT. Les options d’initialisation sont détaillées plus bas dans cette documentation.

Installation automatisée de Docker Swarm

Le rôle Ansible reemo-relayws permet d’installer et configurer automatiquement Docker Swarm. L’installation complète se fait automatiquement en utilisant l’option RELAYWS_INSTALL_DOCKER

ansible-playbook -i inventory.yml playbooks/reemo-relayws.yml --extra-vars "RELAYWS_INSTALL_DOCKER=true"

Important

L’installation automatisée initialise le cluster automatiquement.
Les options d’initialisation sont détaillées plus bas dans cette documentation.

Initialisation du cluster Docker Swarm

Le rôle Ansible reemo-relayws permet d’initialiser automatiquement Docker Swarm en utilisant l’option SWARM_INIT.

ansible-playbook -i inventory.yml playbooks/reemo-relayws.yml --extra-vars "SWARM_INIT=true"

Plusieurs options sont disponibles pour l’initialisation du cluster (ex.):

relayws_manager:
    vars:
        RELAYWS_SWARM_INIT_DEFAULT_ADDR_POOL: "192.168.120.0/24"
        RELAYWS_SWARM_ADVERTISE_ADDR: "eth0"
        RELAYWS_SWARM_DATA_PATH_PORT: 4789
    hosts:
        relayws_manager1:
            ansible_host: "10.20.0.1"
        relayws_manager2:
            ansible_host: "10.20.0.2"
        relayws_manager3:
            ansible_host: "10.20.0.3"

Pool d’adresses IP par défaut

Spécifie la plage utilisée par Docker Swarm pour l’environnement RELAYWS. /24 minimum.

RELAYWS_SWARM_INIT_DEFAULT_ADDR_POOL: "192.168.120.0/24"

Advertised address

Il est possible dans le cadre d’un cluster à plusieurs noeuds de spécifier la carte réseau ou l’adresse IP qui sera transmise aux noeuds pour s’enregistrer et discuter entre eux:

RELAYWS_SWARM_ADVERTISE_ADDR: "eth0"

Data Path Port

Par défaut Docker Swarm utilise le port UDP 4789 pour la communication des réseaux Overlay entre les différents noeuds d’un cluster.
Vous pouvez modifier le port utilisé par Docker Swarm en utilisant les variables ci-dessous:
RELAYWS_SWARM_DATA_PATH_PORT: 4789

Warning

Dans des environnements VMware NSX, le port 4789 peut entrer en conflit. Définir un autre port à l’initialisation du Swarm.


Warning

Une fois Docker Swarm initialisé, il ne faut plus modifier ces paramètres.