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¶
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
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¶
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.