From 2c7006b7f29729fa7ee1533d22d7d7afee6c4c1e Mon Sep 17 00:00:00 2001 From: Pierre Michiels <pierre.michiels.etu@univ-lille.fr> Date: Thu, 12 Nov 2020 21:12:09 +0100 Subject: [PATCH] 12.11.20 21:12 --- TP5 log.txt | 42 ++++++++- .../serveur_go_different_hostname_for_ip.yml | 85 +++++++++++++++++++ TP5_06.11.20/ansible/workers_hostname.json | 6 ++ 3 files changed, 131 insertions(+), 2 deletions(-) create mode 100644 TP5_06.11.20/ansible/serveur_go_different_hostname_for_ip.yml create mode 100644 TP5_06.11.20/ansible/workers_hostname.json diff --git a/TP5 log.txt b/TP5 log.txt index b2fe47d..9d197b1 100644 --- a/TP5 log.txt +++ b/TP5 log.txt @@ -123,5 +123,43 @@ Load balancing - Lequel est le plus adapté à notre situation? J'ai 4 machines de même puissance de calcul sur openstack, il m'est donc inutile d'utiliser un loadbalencer de complexité supérieure que le Round-robin. -paquets pour faire du loadbalening: nginx et caddy - +paquets pour faire du loadbalencing: nginx et caddy +J'utilise nginx: +https://docs.nginx.com/nginx/admin-guide/load-balancer/http-load-balancer/ + +L'architecture sera la suivante: +j'ai 4 workers (serveurs noeuds) sur openstack. Ceux-ci seront dirigés par un reverse-proxy qui est mon PC Ubuntu 20 Virtuel. + +Pour installer le reverse proxy et donc le paquet nginx, j'ai suivi ce tuto: +https://www.digitalocean.com/community/tutorials/comment-installer-nginx-sur-ubuntu-18-04-fr + +Pour mettre en place un reverse-proxy avec nginx, il suffit d'aller modifier le fichier nginx.conf et de redémarrer le service après changements. + +Le contenu ajouté dans /etc/nginx/nginx.conf (balise http) est le suivant: +http{ + ... + upstream group1{ + server 172.28.100.90:8000; + server 172.28.100.51:8000; + server 172.28.100.111:8000; + server 172.28.100.72:8000; + } + server { + listen 9091; + location / { + proxy_pass http://group1; + } + } +} + +"group1" est le groupe qui contient tous les workers avec lequel nginx va rediriger la requète cliente qu'il a reçu. +Sans avoir ajouter de "nginx method", celui-ci va choisir le worker via la méthode du Round-robin. + +La section "server" permet d'indiquer entre autre le port d'écoute du serveur nginx; celui-ci va faire du port-forwarding de 80 vers 9091. +Cette section permet aussi d'indiquer vers quel groupe rediriger la requète cliente via la directive proxy_pass. + +Un nouveau fichier serveur_go_different_hostname_for_ip.yml est utilisé pour prendre en compte un hostname différent pour chaque worker. + + +Commande pour exécuter le playbook ansible en prennant en compte des hostname différents pour chaque worker: +#ansible-playbook -i hosts.yml serveur_go_different_hostname_for_ip.yml --extra-vars "@workers_hostname.json" --private-key ssh-private-key.txt diff --git a/TP5_06.11.20/ansible/serveur_go_different_hostname_for_ip.yml b/TP5_06.11.20/ansible/serveur_go_different_hostname_for_ip.yml new file mode 100644 index 0000000..0508e0a --- /dev/null +++ b/TP5_06.11.20/ansible/serveur_go_different_hostname_for_ip.yml @@ -0,0 +1,85 @@ +--- +- name: Install go_server + hosts: all + become: true + + tasks: + - debug: var=hostvars[inventory_hostname]['ansible_default_ipv4']['address'] + - name: copy go_server files + copy: + src: "/home/pierre/Bureau/DAC/dac-tp/TP5_06.11.20/ansible/Gofiles" + dest: "/root/" + ignore_errors: yes + + # supprimer le container et l'image si ils existent déjà + - name: stop and remove contgo_server + docker_container: + name: contgo_server + state: absent + + - name: stop and remove go_serverimg + docker_image: + name: go_serverimg + state: absent + force_absent: yes + + + + + - name: build go_serverimg image + docker_image: + build: + path: /root/Gofiles + name: go_serverimg + + + + + + - name: build contgo_server container for worker1 (172.28.100.90) + docker_container: + name: contgo_server + image: go_serverimg + ports: + - "8000:80" + state: started + env: + HOSTNAME: "{{ worker1Hostname }}" + when: + - ansible_default_ipv4.address == "172.28.100.90" + + - name: build contgo_server container for worker2 (172.28.100.51) + docker_container: + name: contgo_server + image: go_serverimg + ports: + - "8000:80" + state: started + env: + HOSTNAME: "{{ worker2Hostname }}" + when: + - ansible_default_ipv4.address == "172.28.100.51" + + - name: build contgo_server container for worker3 (172.28.100.111) + docker_container: + name: contgo_server + image: go_serverimg + ports: + - "8000:80" + state: started + env: + HOSTNAME: "{{ worker3Hostname }}" + when: + - ansible_default_ipv4.address == "172.28.100.111" + + - name: build contgo_server container for worker4 (172.28.100.72) + docker_container: + name: contgo_server + image: go_serverimg + ports: + - "8000:80" + state: started + env: + HOSTNAME: "{{ worker4Hostname }}" + when: + - ansible_default_ipv4.address == "172.28.100.72" \ No newline at end of file diff --git a/TP5_06.11.20/ansible/workers_hostname.json b/TP5_06.11.20/ansible/workers_hostname.json new file mode 100644 index 0000000..c9a80cb --- /dev/null +++ b/TP5_06.11.20/ansible/workers_hostname.json @@ -0,0 +1,6 @@ +{ + "worker1Hostname":"Worker 1 hostname", + "worker2Hostname":"Worker 2 hostname", + "worker3Hostname":"Worker 3 hostname", + "worker4Hostname":"Worker 4 hostname" +} \ No newline at end of file -- GitLab