Forum général.général Comment faire du clustering ?

Posté par  (site web personnel) .
Étiquettes : aucune
0
27
jan.
2005
Bonjour,

Je développe un site web à mon boulot en cgi, en c + mysql + apache.

Le site monte régulièrement en charge, et on se posait la question de savoir comment répartir la charge sur plusieurs serveurs. Mon pense pensait développer quelque chose pour gerer les différent serveurs et donc distribuer la charge.

Ceci dit, qu'existe il déjà actuellement ? Les solutions gérées au niveau hardware ? Apache a-t-il ce genre de fonctionnalité ?

Quand on fait un nslookup par exemple sur www.wikipedia.org, on obtient ca :
Réponse de source secondaire :

Nom : www.wikipedia.org
Addresses: 207.142.131.203, 207.142.131.204, 207.142.131.205, 207.142.131.202


Donc le dns me renvoi 4 serveurs. J'imagine que c'est géré par le dns, mais après, comment se décide quel serveur va réellement être utilisé ?

Merci d'avance pour vos éclairsissements !
  • # Clustering web

    Posté par  . Évalué à 3.

    Salut,

    Ce que tu veux faire c'est du round robin. Concrètement, tu as 4 serveurs webs qui sont censés être identiques, et tes clients seront répartis pour www.tonsite.com sur ces 4 serveurs. Ensuite, il faut voir une synchro des fichiers (rsync ?) et une synchro des bases mysql.

    Philippe,

    http://www.choup.net
  • # load balancing

    Posté par  (site web personnel, Mastodon) . Évalué à 5.

    pour faire de la répartition de charge, il y'a les solutions matérielles (matos spécifique, onéreux mais précis !!) et les solutions logicielles :

    - comme tu l'indiques, il y'a le round robin des DNS, une bidouille de bind permet de le faire simplement [1]
    - il y'a une version un peu plus complexe [2]
    - il y'a aussi une solution avec mod_rewrite [1]

    [1] http://httpd.apache.org/docs-2.0/misc/rewriteguide.html(...) (cherche "load balancing" dans la page pour trouver la section)
    [2] http://www.stanford.edu/~schemers/docs/lbnamed/lbnamed.html(...)

    j'ai l'impression que la meilleure solution serait celle pointer par [2]

    M.
  • # Round Robin DNS

    Posté par  . Évalué à 3.

    Pour wikipedia, ils utilisent du Round Robin DNS.

    Le principe est très simple, ils spécifient 4 champs A pour le même nom dans le DNS.
    Ensuite chaque machine choisit une adresse IP au hasard et la charge est répartie naturellement entre les 4 serveurs.

    Une autre solution est LVS (Linux Virtual Server) qui est maitenant intégré au noyau.
    Le principe est simple. Il y a n serveurs et une machine qui dispatche les requètes vers les différents serveurs.

    Mais attention, si tu utilises dans tes CGI des méchanismes de sessions, Il faut que tes serveurs puissent partager les données de sessions.
  • # LE PLUS SIMPLE

    Posté par  . Évalué à 0.

    LE PLUS SIMPLE ET SANS AUCUN MATERIEL SPECIFIQUE:
    open-mosix

    pas de materiel particulier
    pas de clustering specifique aux applications

    mais un VRAI partage/echange de thread et ce de façon transparente

    voir le site www.openmosix.org
    • [^] # Re: LE PLUS SIMPLE

      Posté par  . Évalué à 4.

      Euh oui mais bon, la ca ne marchera pas openmosix. Ca ne sert à rien de migrer les thread apache d'une machine à l'autre, ca fais perdre du temps comparé a un round robin tout simple.
  • # OpenSSI

    Posté par  . Évalué à 2.

    Si tu t'interresses aux clusters, je te conseille de jeter un oeil à openssi :
    http://www.openssi.org/cgi-bin/view?page=openssi.html(...)
    Ce projet te permet de regrouper un ensemble de machines en un système unique, tu obtiens ainsi un système de "calcul" puissant, hautement disponible, et facilement "extensible". Pour ce qui est de l'accès au système, le cluster peut gérer une (ou plusieurs) IP virtuelle pour aiguiller automatiquement le trafic vers le noeud du cluster le moins chargé (pas besoin de round robin dns ou de changements dns à chaque ajout/suppression de machines dans le cluster).
    D'après le test que je suis en train de faire, la mise en place est assez simple, et le résultat est bluffant (à première vue).
    • [^] # Re: OpenSSI

      Posté par  . Évalué à 2.

      C'est bluffant, mais c'est pas forcément utile d'avoir à mettre en place openssi sur toutes ses machines, parce que ça implique un certain nombre de contraintes, tu ne peux plus faire ce que tu veux avec tes machines, le noyau est imposé, la distribution aussi, etc.

      Pour son cas, je préconiserai aussi un round robin DNS tout simple. Parfois le plus simple est le mieux en terme d'efficacité.

      Pour avoir fait aussi un certain nombre de tests sur openssi, j'avoue que c'est pas trop dur à configurer, pour un peu qu'on a de bonnes bases sur le fonctionnement d'un Linux. Et ça donne de bons résultats.
      Au passage, openssi propose une chose qu'openmosix ne propose pas de base : la haute disponibilité. C'est d'ailleurs le point que tu soulèves plus haut, avec le système d'ip virtualisée sur un graphe de machines.
  • # Merci !

    Posté par  (site web personnel) . Évalué à 0.

    Merci pour toutes vos réponses, j'ai pleins de pistes de réflexion maintenant.

    A priori, le round bind serait le plus approprié pour nous :)

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.