diff --git a/TP5 log.txt b/TP5 log.txt index b2fe47db93ab95a3d7665b499c9397874d361395..9d197b1af301d731e1c2052949327a1226afd976 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 0000000000000000000000000000000000000000..0508e0a9ad769ce86178519882120a97672a6755 --- /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 0000000000000000000000000000000000000000..c9a80cbb056c7ceb84783eaba83e93277ab2e693 --- /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