haproxy...haproxy 1- creation des deux serveur web tout d’aord je me onnete à vm ware afin...

20
HAPROXY 1- CREATION DES DEUX SERVEUR WEB Tout d’abord je me connecte à VM Ware afin d’utiliser la machine virtuelle Linux qui faisant office de serveur web et ayant pour adresse IP : 192.168.3.10 Sur cette machine virtuelle je mets dans le dossier « www » le dossier contenant les codes de mon site (index.html). Et je vérifie que mon site est accessible en recherchant dans le moteur de recherche d’un poste client, l’URL : https://192.168.3.10 /index.html Puis je créé une machine Linux qui fera office de clone du premier serveur web, je lui donne l’adresse IP suivante : 192.168.3.11 (ne pas oublié de réinitialisé l’adresse mac) Et je vérifie que mon site est accessible en recherchant dans le moteur de recherche d’un poste client, l’URL : https://192.168.3.11/index.html Nous avons donc deux serveurs Web identiques qui chacun donne accès à un à un même site mais ils ont une adresse IP différentes.

Upload: others

Post on 31-Jan-2021

3 views

Category:

Documents


0 download

TRANSCRIPT

  • HAPROXY

    1- CREATION DES DEUX SERVEUR WEB

    Tout d’abord je me connecte à VM Ware afin d’utiliser la machine virtuelle Linux qui faisant office de

    serveur web et ayant pour adresse IP : 192.168.3.10

    Sur cette machine virtuelle je mets dans le dossier « www » le dossier contenant les codes de mon

    site (index.html). Et je vérifie que mon site est accessible en recherchant dans le moteur de

    recherche d’un poste client, l’URL : https://192.168.3.10 /index.html

    Puis je créé une machine Linux qui fera office de clone du premier serveur web, je lui donne

    l’adresse IP suivante : 192.168.3.11 (ne pas oublié de réinitialisé l’adresse mac)

    Et je vérifie que mon site est accessible en recherchant dans le moteur de recherche d’un poste

    client, l’URL : https://192.168.3.11/index.html

    Nous avons donc deux serveurs Web identiques qui chacun donne accès à un à un même site mais

    ils ont une adresse IP différentes.

  • 2 -INSTALLATION ET CONFIGURATION DE LA MACHINE DEBIAN (PROXY)

    !!!On Installe l’OS Linux avec pour identifiant root : root

    Je mets une adresse statique car celle-ci doit rester la même, en effet cette adresse sera inscrite dans

    un fichier de configuration du serveur HaProxy et donc cette adresse ne doit en aucun cas être

    changé.

    nano /etc/network/interfaces

    # The primary network interface

    allow-hotplug eth0

    iface eth0 inet static

    address 192.168.3.90

    netmask 255.255.255.0

    gateway 192.168.3.1

    Apres cette modification Il faut REBOOTER !

    -Je modifie le fichier resolv.conf afin de définir l’adresse du lycée

    nano /etc/network/resolv.conf

  • - Je modifie ce fichier pour que ma machine puisse récupérer les paquets.

    nano /etc/apt/sources.list

    -Puis il faut mettre à jour : aptitude update et aptitude upgrade

    3 - INSTALLATION ET CONFIGURATION DE HAPROXY

    - J’installe les paquets de Haproxy.

    -Le démon haproxy est configuré pour se lancer au démarrage de la machine. Son script de

    lancement se trouve dans /etc/init.d. Mais par défaut, HaProxy n'est pas activé. Pour le faire, il faut

    mettre la valeur « 1 » à la variable ENABLED dans le fichier /etc/default/haproxy. Comme ci dessous

    -le démon ne démarre toujours pas car le fichier de configuration par défaut ne contient pas toutes

    les directives nécessaires

  • -Dans le fichier haproxy.cfg (/etc/haproxy/haproxy.cfg)

    Je modifie le fichier:

    global

    log /dev/log local0

    log /dev/log local1 notice

    chroot /var/lib/haproxy

    stats socket /run/haproxy/admin.sock mode 660 level admin

    stats timeout 30s

    user haproxy

    group haproxy

    daemon

    # Default SSL material locations

    ca-base /etc/ssl/

    crt-base /etc/ssl/

    # Default ciphers to use on SSL-enabled listening sockets.

    # For more information, see ciphers(1SSL).

    ssl-default-bind-ciphers kEECDH+aRSA+AES:kRSA+AES:+AES256:RC4-

    SHA:!kEDH:!LOW:!EXP:!MD5:!aNULL:!eNULL

    ssl-default-bind-options no-sslv3

    defaults

    log global

    mode http

  • option httplog

    option dontlognull

    timeout connect 5000

    timeout client 50000

    timeout server 50000

    errorfile 400 /etc/haproxy/errors/400.http

    errorfile 403 /etc/haproxy/errors/403.http

    errorfile 408 /etc/haproxy/errors/408.http

    errorfile 500 /etc/haproxy/errors/500.http

    errorfile 502 /etc/haproxy/errors/502.http

    errorfile 503 /etc/haproxy/errors/503.http

    errorfile 504 /etc/haproxy/errors/504.http

    frontend http-in

    bind *:80

    reqadd X-Forwarded-Proto:\ http

    default_backend application-backend

    frontend https-in

    bind *:443 ssl crt /etc/ssl/ca.pem

    reqadd X-Forwarded-Proto:\ https

    default_backend application-backend

    backend application-backend

    redirect scheme https if !{ ssl_fc }

    balance leastconn

    option httpclose

  • option forwardfor

    cookie JSESSIONID prefix

    server www 192.168.3.10:80 check

    server www2 192.168.3.11:80 check

    Les deux dernières lignes recensent les adresses ip des 2 serveurs WEB sur lequel le proxy va

    rediriger.

    Les modifications servent aussi à mettre en place un certificat ssl sur les serveurs web.

    Jusqu’à présent, pour utiliser du chiffrement TLS avec HAProxy, il fallait soit utiliser le mode TCP, soit utiliser une version modifiée de STunnel. Désormais, HAProxy prend en charge le chiffrement SSL côté client comme côté serveur.

    Il faut penser à récupérer les certificats de la MFC sur les autres serveurs et d’installer OpenSSL.

    ON TESTE LE PROXY : Dans la barre d’adresse du navigateur d’une machine cliente du réseau, on

    tape l’adresse IP du serveur ou nous avons configuré le proxy.

  • On rafraichit la page et on est redirigé sur le deuxième serveur web.

    ON OBSERVE QUE LE PROXY A BIEN REDIRIGE VERS LE SERVEUR WEB1 PUIS APRES AVOIR RAFRAICHIS

    LA PAGE SUR LE SERVEUR WEB2. LE SERVICE HA PROXY FONCTIONNE CORRECTEMENT. IL Y A BIEN

    UNE REPARTITION DES CHARGES !

    4- MISE EN PLACE DE STATISTIQUES SUR HAPROXY

    - Dans le fichier haproxy.cfg (/etc/haproxy/haproxy.cfg) je voudrais mettre en place des statistiques.

    J’ajoute donc ces 3 lignes :

    INFO : stats uri permet d’activer la page de statistiques, en définissant l’endroit où les statistiques

    pourront êtres consultées (ici http://192.168.3.90/stats)

    stats auth sécurise l’accès en le protégeant par un nom d’utilisateur et un mot de passe séparés par

    « : » ici par exemple le login est admin et le mot de passe est admin.

    stats refresh rafraîchit la page toutes les 30s

    ON TESTE LA MISE EN PLACE DES STATISTIQUES SUR LE PROXY :

    Dans la barre d’adresse du navigateur d’une machine cliente du réseau, on tape

    http://192.168.3.90/stats

    LE RESULTAT : Le proxy nous demande une authentification (admin : admin) et on arrive sur cette

    page :

    http://192.168.3.90/stats

  • 5- HEARTBEAT

    Heartbeat est un logiciel de surveillance de la disponibilité des programmes, Heartbeat écoute

    les battements de cœur - des signaux émis par les services d'une grappe de serveurs lorsqu'ils sont

    opérationnels. il va permettre d'envoyer un signal régulié par la connexion LAN (et/ou serie) entre les

    deux serveurs pour vérifier leur état de fonctionnement dans le but de relayer les ressources du

    serveur maitre au serveur esclave dans le cas où celui tomberait en panne et ainsi permettre de ne

    pas interrompre les services liés au cluster. Au final nous aurons deux Serveurs faisant chacun office

    de PROXY, Heartbeat va repartir les charges entre les deux proxy, si l’un tombe en panne l’autre

    prend le relais. Ces deux ha proxy auront une adresse IP Virtuelle commune

    Pour commencer on créer une machine similaire à notre premier serveur haproxy afin d’avoir deux

    serveurs ayant chacun un haproxy. (Il faut changer l’adresse mac de la carte réseau si c’est un clone.)

    On met une adresse IP en éditant le ficher interfaces avec la commande :

    nano /etc/network/interfaces

    # The primary network interface

    allow-hotplug eth0

    iface eth0 inet static

    address 192.168.3.91

    netmask 255.255.255.0

    gateway 192.168.3.1

    http://fr.wikipedia.org/wiki/Logicielhttp://fr.wikipedia.org/wiki/Haute_disponibilit%C3%A9http://fr.wikipedia.org/wiki/Grappe_de_serveurs

  • On change le nom de la machine pour éviter de confondre nos deux machines, notre serveur proxy

    d’origine se nomme « Proxy » et notre clone se nomme « Proxy2 » donc édite le fichier hostname :

    nano /etc/hostname

    haproxy2

    Dans le fichier haproxy.cfg (/etc/haproxy/haproxy.cfg) (On met la même configuration que pour le

    premier serveur Haproxy)

    global

    log /dev/log local0

    log /dev/log local1 notice

    chroot /var/lib/haproxy

    stats socket /run/haproxy/admin.sock mode 660 level admin

    stats timeout 30s

    user haproxy

    group haproxy

    daemon

    # Default SSL material locations

    ca-base /etc/ssl/

    crt-base /etc/ssl/

    # Default ciphers to use on SSL-enabled listening sockets.

    # For more information, see ciphers(1SSL).

    ssl-default-bind-ciphers kEECDH+aRSA+AES:kRSA+AES:+AES256:RC4-

    SHA:!kEDH:!LOW:!EXP:!MD5:!aNULL:!eNULL

    ssl-default-bind-options no-sslv3

    defaults

  • log global

    mode http

    option httplog

    option dontlognull

    timeout connect 5000

    timeout client 50000

    timeout server 50000

    errorfile 400 /etc/haproxy/errors/400.http

    errorfile 403 /etc/haproxy/errors/403.http

    errorfile 408 /etc/haproxy/errors/408.http

    errorfile 500 /etc/haproxy/errors/500.http

    errorfile 502 /etc/haproxy/errors/502.http

    errorfile 503 /etc/haproxy/errors/503.http

    errorfile 504 /etc/haproxy/errors/504.http

    frontend http-in

    bind *:80

    reqadd X-Forwarded-Proto:\ http

    default_backend application-backend

    frontend https-in

    bind *:443 ssl crt /etc/ssl/ca.pem

    reqadd X-Forwarded-Proto:\ https

    default_backend application-backend

    backend application-backend

    redirect scheme https if !{ ssl_fc }

  • balance leastconn

    option httpclose

    option forwardfor

    cookie JSESSIONID prefix

    server www 192.168.3.10:80 check

    server www2 192.168.3.11:80 check

    !!! NE PAS OUBLIER DE REBOOT les services HAPROXY !!!

    On installe les paquets Heartbeat sur les deux serveurs proxy.

    apt-get install heartbeat

    On va créer trois fichiers dans le dossier ha.d sur les deux serveurs

    proxy.

    – ha.cf : Pour la configuration générale de HeartBeat nano /etc/ha.d/ha.cf

    # Indication du fichier de log

    logfile /var/log/heartbeat.log

    # Les logs heartbeat seront gérés par syslog, dans la catégorie daemon

    logfacility daemon

    # On liste tous les membres de notre cluster heartbeat (par les noms de préférences)

    node haproxy

    node haproxy2

    # On défini la périodicité de controle des noeuds entre eux (en seconde)

    keepalive 2

  • # Au bout de combien de seconde un noeud sera considéré comme "mort"

    deadtime 5

    # Quelle carte résau utiliser pour les broadcasts Heartbeat (eth1 dans mon cas)

    bcast eth0

    # Adresse du routeur pour vérifier la connexion au net

    ping 192.168.3.1

    # Rebascule-t-on automatiquement sur le primaire si celui-ci redevient vivant ? oui*

    auto_failback yes

    – haresources : Pour la configuration des ressources nano/etc/ha.d/haresources

    proxy IPaddr::192.168.3.92/24/eth0 MailTo::[email protected]::Failover_alert

    – authkeys : Pour la clef partagée entre les serveurs du cluster nano /etc/ha.d/authkeys

    auth 1

    1 md5 jeanmichel

    Ce fichier la doit avoir les permissions « 600 ». Donc sur les deux serveurs tapez:

    chmod 600 /etc/ha.d/authkeys

    Sur Proxy1 démarrez Heartbeat avec la commande suivante: /etc/init.d/heartbeat start

    Maintenant sur Proxy2 démarrez aussi heartbeat avec la commande: /etc/init.d/heartbeat start

    http://denisrosenkranz.com/tuto-ha-un-cluster-drbdapache-avec-heartbeat-

    sur-debian-7/

    http://denisrosenkranz.com/tuto-ha-un-cluster-drbdapache-avec-heartbeat-sur-debian-7/http://denisrosenkranz.com/tuto-ha-un-cluster-drbdapache-avec-heartbeat-sur-debian-7/

  • 6 - REMONTEES D’ALERTES

    On installe ThunderBird, un client de messagerie que nous utiliserons ici avec le compte

    [email protected] (adresse mail que l’on a recensé dans le fichier haressources)

    Pour se connecter sur Thunderbird : login : [email protected] mdp :jeanmichel

    Exim4

    Nous allons installer Exim pour donner la possibilité au serveur d’envoyer ses emails. Non pas

    directement, mais via le serveur SMTP « officiel » interne.

    La méthode du relai SMTP (ou relai « smarthost » pour Exim4) est préférée car c’est un serveur

    connu qui va réellement envoyer le courrier et non pas un serveur privé.

    Ce qui donnera : Serveur –> Serveur de messagerie –> destinataire

    mailto:[email protected]:[email protected]

  • Une fois la configuration d’Exim4 faites on teste notre remonté d’alerte. Pour cela on simule un arrêt

    de la Haute Disponibilité d’Heartbeat

    On observe qu’un mail d’alerte nous a bien été envoyé sur notre messagerie. Notre

    remontée d’alertes fonctionne !

  • Internet

    LAN 1 | 192.168.1.0/24

    Johannes PC

    (LABO113-3-3)

    .63

    VLAN 100

    VMWare ESXi

    .10

    DMZ | 192.168.3.0/24 VLAN 300

    ZyWALL

    USG 100

    LAN1

    192.168.1.1

    DMZ

    192.168.3.1

    WAN

    Firewall/VPN

    172.16.51.254

    GLPI/OCS/Nagios

    gestion

    .9

    haproxy1

    .90

    HTTPS

    www

    .10

    AD(PDC)/DNS/RADIUS

    mfc

    .41IMAP/SMTP

    mail

    .42

    SGBD

    sgbd

    .40

    HTTPS2

    www2

    .11

    Réseau

    BTS

    172.16.32.0/19

    haproxy2

    .91

    IP cluster heartbeat :

    .92