Hello tout le monde,

je fais appel à vos compétences en administrateur système :). Je suis actuellement entrain de revoir mon workflow et passer petit à petit à Docker. Mais voilà, je ne sais pas trop estimer la charge que peut surpporter un serveur dédié et un VPS.

Déjà première question, à puissance équivalente (CPU, RAM), est-ce qu'il y a une différence de performance entre un dédié et un VPS ?
Ensuite, si je prends un VPS (OVH) avec :

  • 1 vCore
  • 2,4 GHz
  • 4 Go RAM
  • SSD 20 Go

Combien de container je pourrais y mettre ? Sachant que j'aurais besoin Apache/NGINX + PHP + Mysql/Postgre. Et du coup avec ces spécifications, est-ce que je dois priviligé un container par site avec dedans tous les packages (Apache + PHP + Mysql) ou bien plusieurs containers avec dans l'un Apache, l'autre PHP etc...
Je pose cette question parce que tous les sites n'auront pas les mêmes besoin en termes de version de packages.

Merci :)

27 réponses


ssimono
Réponse acceptée

Salut,

Différences de performances entre dédié et VPS

Les caractéristiques serveur comme RAM ou CPU sont garanties quand tu prends un VPS, donc ce sera la même chose que pour un dédié. Après il faut bien tout comparer notamment la lecture/écriture sur le disque. En effet sur un VPS le disque est partitionné mais quand même partagé entre plusieurs machines virtuelles ; et j'ai déjà remarqué que certaines VM peuvent voir chuter leur accès au disque si une autre en abuse. Vérifie donc les débits d'accès au disque, voire à la RAM sur les caractéristiques.

Nombre de containers

Là ça dépend vraiment de beaucoup de choses, il n'y a pas de "taille standard" pour les containers. Si tu as déjà un environnement docker en local ou autre qui correspond à ce que tu veux mettre en prod, essaye de regarder la taille occupée ( du -sh /var/lib/docker/* sur la machine qui héberge le daemon docker). Selon moi 20G suffiront sans problème pour installer les images nginx, apache, php, sql etc. Ensuite ce sont les données gérées par tes applications qui vont prendre de la place (fichiers crées, taille de la base de données etc). Et il y aura aussi de la place prise pour chaque container lancé. Si tu veux faire "plein" de sites ça me parait juste :)

Architecture applicative

Je te conseille vivement de pas "packager" chaque site dans son propre container, mais plutôt chaque service dans son container. C'est tout l'intérêt de "containeriser" son architecture.

Par exemple tu pourrais mettre 3 containers pour trois sites PHP différents qui sont tous les trois liés au container de Nginx, 2 d'entre eux liés au conteneur MySQL et le troisième à PostgreSQL. Si un site a besoin de versions différentes d'une lib PHP, tu pourras encore faire un container, basé sur une autre image.

Justement Grafikart a très bien expliqué comment créer une stack très similaire à la tienne en utilisant docker compose, tu devrais jeter un oeil.

http://www.grafikart.fr/tutoriels/docker/docker-stack-web-635

thecoder
Réponse acceptée

Bonsoir,

Pour être large je te conseille 8go de RAM, tu seras bien pour 10 sites.
Concernant les VPS, évite de prendre de la virtualisation OpenVZ ils tournent sous un kernel 2.x.x comme le dit NoczCore, mais tu peux quand même faire tourner Docker dessus. Si ton support est cool il suffit de suivre ce tuto. J'ai testé et ça marche parfaitement, cela demande juste des configs supplémentaires au début.

Bref, OVH n'est pas un si mauvais choix j'y suis également en VPS Classic. Avant seule la version cloud pouvais installer Docker, mais aujourd'hui même l'offre classic te permet d'utiliser Docker.

@ssimono, merci beaucoup pour cette réponse qui répond déjà à mes interrogations.
Pour rebondir sur ta réponse, je compte hébergé environ 10 sites par VPS, est-ce trop ou puis-je en mettre plus ? Sacahtn que les sites hébergés n'utiliseront pas beaucoup d'espace en terme de fichier, pas d'ajout de fichier possible par les utilisateurs (images, fichiers ...). J'estime qu'un site ne dépassera même pas les 100Mo.
Dans ce cas les 20Go, me semble raisonable non ?

Merci encore :)

PS : si tu as des avis/suggestions pour l'hébergeur OVH ou autres je suis aussi preneur.

si tu met 10 sites sur un vps c'est que tu pense que les site ne prendrons pas beaucoup de trafic par jour (mauvaise chose). Si jamais les sites deviennt important au niveau traffic la charge vas augmenter et qui dit charge qui augmente dit rallentissement sur tout les site du vps et si un site prend un mega charge ca peut faire claquer le vps et donc tous les site. Faut pas prendre la conf server a la légère. ca peut foutre en vrac toute ton infrastructure client juste par une négligence ou pas un manque de compétences ou d'analyse.

@Defy, merci du coup quel est le rapport perf RAM + CPU / NB visites idéal. En gros je souhaiterai savoir quelle charge peut supporter cette config à un instant T en terme de visiteur connecté simultanément ? Je ne souhaite ni sous dimensionner ni sur dimensionner mes serveurs.
Autre question qui découle de ça, et qui peut aussi apporter une réponse, quelles sont les configs des serveurs mutualisés et combien de sites ils hébergent par serveur en moyenne ?

Merci encore.

c'est quel type de site que tu vas avoir? uniquement des sites statiques?

Non, chaque site sera dynamique :

  • site tout maison à base de cake et laravel => pas d'images ni de contenus lourd
  • site à base de CMS wordpress et drupal => images et contenus hebergés sur le cloud amazon

Si quelqu'un à la réponse par rapport aux hebergeurs et les serveurs mutualisés, je cite mon précédent message :

(...) quelles sont les configs des serveurs mutualisés et combien de sites ils hébergent par serveur en moyenne ?

Les serveur mutualisé sont des gros gros gros gros gros tres gros server pour pouvoir partagé les ressources mutualisé comme il le font.

Pour des platform comme wordpress ou drupal, et meme des sites dynamique avec php ou des framework qui tourne dessus, tu as intéret a avoir une gross configuration.

tu vas avoir docker qui tourne pour avoir des conteneur applicatif:

10 site cela vas représenté :

  • 10 conteneur PHP
  • 1 conteneur mysql
  • 1 conteneur http ( apache / nginx )

chaque site aura une base de donnée donc deja:

  • echange cient / server.
  • data

Si on y rajoute en plus une forte chance d'afflux de visiteurs, Je dirait qu'il faut au minimum 16 go de ram et un XEON comme CPU pour avoir de bonne ressources. Mais la encore ca me parrait juste juste, un dans se style la chez online il sont pas chere les dédié

Les serveur mutualisé sont des gros gros gros gros gros tres gros server pour pouvoir partagé les ressources mutualisé comme il le font.
Oui, je sais bien que ce sont des serveurs très puissants, mais j'aimerai avoir une estimation pour me faire une idée.

Il n'y aura pas 10 conteneurs PHP mais 1 seule, voire 2/3 si besoin de config différentes. Ca limite déjà le nombre de coneteurs. Personellement, je pense que 16Go pour 10 sites c'est sur dimensionner, effectivement c'est evolutif mais je sais très bien que chaque site ne dépssera pas les 1000 visiteurs / jour donc 10000 visiteurs / jour pour les 10 sites. Sachant que sur mutualisé j'ai déjà fait du 5000 visiteurs jour sans soucis, il s'agisait d'un forum donc beaucoup de requête. C'est un peu pour ça que j'aimerai connaitre l'ordre d'idée de ce qui se fait sur les hebergeur mutualisé. Quelles config serveur ils utilisent et combien de sites ils y hébergent...

Ca sert a rien de vouloir un systeme de conteneur alors. Le but c'est de rendre independant chaque partie du systeme, tu as 3 site c'est 3 conteneur c'est le principe. Sinon ca ne sert absolument a rien d'avoir un conteneur four tout pour tous les site.

edit: Pour les mututalisé c'est impossible de te dire. Il faudrait quelqu'un qui bosse dedans, mais c'est des cluster de ouf qui on une grosse conf pour pouvoir permettre a plusieurs dizaine voir centaine de site de se partager les ressources en instantané, des panels d'admin pour la gestion des domaines, des conteneur, des machines virtuel des instances ou encore des espaces alloué. c'est de l'admin sys pur et dur

Pourquoi 10 conteneur PHP ?
Je ne vois pas l'interet

il parle de 10 sites donc 1 site par conteneur, ça te permet d'avoir une application php par conteneur, ca isoler les librairies ou les extensions php en fonction de ce que ton application à besoin.

si une seul application prend une charge plus forte de visite tu ne vas pas changer de vps ou de dédié, tu prend ton conteneur qui a une forte charge et tu l'installe sur environnement docker sur un VPS plus grand et sans risque de péter tous les autres sites

edit: tu as ainsi aucune interaction entre les conteneurs, si tu as un conteneur on ne sais pour quel raison pète ben les autres ne pètent pas avec

@Defy, il n'y pas besoin d'avoir 10 conteneur PHP (c.f réponse de ssimono). Le fait de packager le tout dans un seul conteneur rend docker moins scalable.
Exemple :
Dans le cas du package (tout inclus dans un conteneur), si je veux migrer de version PHP je suis obligé de le faire dans le conteneur, ça revient au même que si j'avais un dédié, c'est à dire que si je rate, j'ai de l'insdisponibilité.
Par contre si j'utilise un et un seul conteneur PHP, je peux créer un second conteneur PHP avec la nouvelle version, faire mes tests sur l'application et une fois que tout est "ok" je bascule la prod sur le second conteneur. Du coup pas d'indispo, pas besoin de sauvegardes de mes webs et tout fonctionne nickel.

donc tu a mal lu la reponse de ssimono

Par exemple tu pourrais mettre 3 containers pour trois sites PHP différents qui sont tous les trois liés au container de Nginx, 2 d'entre eux liés au conteneur MySQL et le troisième à PostgreSQL. Si un site a besoin de versions différentes d'une lib PHP, tu pourras encore faire un

donc la on as 3 conteneur php avec 3 application php lié a un conteneut nginx et 2 conteneur de base de donnée. Mettre tous dans un conteneur reviendré a avoir une machine virtuel et tout les environement dans la meme machine, aucun intéret. la scalabilité de docker viens du faite que l'on peut deplacer créer et duplique les conteneur comme on veut par rapport a vmware et les machine virtuel (par exemple)

Niveau securité un conteneur est isolé des autres donc si une application est corrompu elle ne risque pas de mettre en danger les autres applications.

la scalabilité de docker viens du faite que l'on peut deplacer créer et duplique les conteneur comme on veut par rapport a vmware et les machine virtuel (par exemple)

@Defy, ce que tu dis est totalement faux !!
Tu déplaces une machine virtuelle très facilement, un snap et hop tu le déplaces et tu le relances autre part...

Tu as mal compris le concept de Docker je pense, comme beaucoup de personne qui ne comprennent pas l'utilité de Docker. En plus le fait d'avoir des conteneurs pour chaque site reviendrai à maintenir tous les conteneurs individuellement... Aucune scalabilité du coup.

Edit :

Niveau securité un conteneur est isolé des autres donc si une application est corrompu elle ne risque pas de mettre en danger les autres applications.

@Defy, idem, une machine virtuelle c'est pareil c'est totalement isolé des autres machines...

Tu déplaces une machine virtuelle très facilement, un snap et hop tu le déplaces et tu le relances autre part...

Non c'est pas juste un snapshot et op c'est partie.

idem, une machine virtuelle c'est pareil c'est totalement isolé des autres machines...

une vm n'est pas isolé du reste de l'infrastructure j'ai 3EsXi VMware avec 8 machine virtuel dessus et tout sont relié par le systeme de switch virtuel intégré a vmware activé par default et doit etre desactivé si l'on veut eviter l'interconexion entre les VM tu as deja fait un snapshot d'une VM lourde et reinstallé dans la foulé? j'ai pas l'impression non. J'utilise pour mon environement de developpement vmware avec tout un workflow pour deployé sur des conteneur Docker sur azur.

j'ai suivie la formation Azure a l'IT camp de Nice l'année derniere et j'ai recu à la fin les best practices recommandé par les mec d'azur et c'est ce que les Ingé microsoft recomande.

@Defy, comment te dire... , cela me fait rire. Peu m'importe tes formations, diplômes ou certifications. Le plus utile dans la vie c'est quelqu'un d'efficace et de competent.
Dans ton cas tu me parles de machines virutelles dépendantes... Ok, mais ici on parle d'une machine isolé (VM ou conteneur), c'est bien ce que tu me proposes comme solution plus haut, non ? C'est de faire un conteneur avec tout dedans, on est d'accord ? Du coup pourquoi je ne ferai pas une VM avec tout dedans elle sera indépendante... , parce que je pourrai la déplacer sans soucis (cf. plus bas...). Tu sais un clone vm c'est un jeu d'enfant quand tu as les bons hyperviseurs.

Pour te donner une piste de clone de VMs, même à chaud tu as Ovirt, OpenStack des noms que tu dois forcement connaître si tu maitrise toi qui connait bien Vmware. Effectuer des clones de machines virtuelles se fait un rien de temps, je ne comprends pas comment quelqu'un qui a fait une formation à l'Azure à l'IT camp de Nice, faîtes par des ingé de chez Microsoft (whaoooo, désolé :)) n'ai pas trouvé cette astuce :) Désolé encore, mais c'est plus fort que moi. Je n'ai rien contre rassure toi.
Bref, tout ça pour dire que le clone de machines virtuelles c'est un jeu d'enfant, il suffit d'avoir les bons outils et les bons hyperviseurs et surtout la compétence pour le faire. Je précise que le clone fonctionne même sur deux serveurs physique distincts.

Je n'ai pas envie de polluer encore plus ce post. Est-ce que quelqu'un à d'autres réponses au sujet principal ? Merci :)

je reprend ce que ssimono a dit.

Par exemple tu pourrais mettre 3 containers pour trois sites PHP différents qui sont tous les trois liés au container de Nginx, 2 d'entre eux liés au conteneur MySQL et le troisième à PostgreSQL. Si un site a besoin de versions différentes d'une lib PHP, tu pourras encore faire un container, basé sur une autre image.

  • 3 conteneur php
  • 1 conteneur nginx
  • 2 conteneur data

donc 6 conteneur pour 3 applications.

donc en aucun cas c'est un conteneur ou tu four tous dedans, il n'y as pas d'intérêt sinon

edit: tu me parlais de snapshot je te répond avec le snapshot, j'utilise d'autre outils surtout pour la replication. Nakivo par exemple, qui me permet via une vm deja packagé de gérer les répliqua sur 2 serveur pour la redondance en cas de service intérompu.

Je pense que tu es totalement en train de t'emmêler les pinceaux, ou bien tu es en train de changer de version.

C'est toi qui voulais faire des packages avec un conteneur PHP par site, pas moi. Depuis le début on te dit qu'il ne faut pas 10 conteneurs PHP si tu relis bien ... Je me trompe ?
Je me cite, plus haut :

Il n'y aura pas 10 conteneurs PHP mais 1 seule, voire 2/3 si besoin de config différentes. Ca limite déjà le nombre de conteneurs.

Du coup je ne comprends pas où est-ce que tu veux en venir.

C'est une erreur de compréhension total entre nous deux, un bon quiproquo ^^

je t'ai bien dit pourtant sur le princice de ssimono:

  • 10 conteneur PHP
  • 1 conteneur mysql
  • 1 conteneur http ( apache / nginx )

Ce qui veut bien dire de séparer les applications. tu as tes conteneur uniquement php ou tu as toute ta conf php dedans pour tes applications ton conteneur http qui servira de point d'entrée de tous tes sites et tes conteneur base de données en fonction de tes conf base de données.

Lol, oui effectivement ça semble être un quiproquo en relisant tous les messages.
Si d'autres ont dès avis et/ou retour d'expérience, je suis toujours prenneur :)

je ne sais pas si tu as deja des vue sur des hébergeur, mais je peut te conseiller celui-ci online
ils on une gamme de dédié vraiment pas chere avec des putain de conf pour le prix.

Encore une chose, je ne sais pas si tu connais ca, mais utilise un panel webmin ou ajenti au moins t'es pas enmerdé a te connecté en ssh pour tous faire a la main, j'ai testé et ca ma bien changé la vie ^^

Effectivement je connais online, j'ai eu une experience pas cool avec le support et mon serveur. Du coup je suis passé chez OVH.
Je comptais prendre la gamme cloud chez OVH, c'est evolutif jusqu'à un certain seuil.

Je pu tester webmin et effectivement c'est un plus, ajenti je ne connais que de nom. Bien evidement CPanel seraiy l'idéal. Mais ca ne rentrera pas dans mon budget mensuel...

Bref à voir :)

je suis chez OVH depuis 4 ans et franchement j'en est raz le cul, ils ont un suport de merde et n'on pas de parole il promettent ( depuis maintenant au moins 2 ans voir plus ) des instances mutualisé pour node rails et django mais ca vient jamais

J'entends toujours le tout et son contraire à propos d'OVH, certains sont super contents d'autres super déçus. Je vais y refléchir du coup, mais je pensais vraiment prendre un VPS et non un dédié car je peux partir d'un petit/moyen serveur et l'upgrader sans perdre de données, du moins c'est ce qui se fait chez OVH.

Oui c'est aussi une securité, apres, moi j'ai un petit vps chez eux, il est bien stable, j'ai jamais eu de soucie avec l'infra c'est juste le support qui chie grave dans la colle

Bonjour,

ok merci pour ces conseils/avis, si certains ont en encore je suis toujours preneur :) .
De mon côté, je suis en train de bidouiller sur un VPS chez OVH, sans problème particulier pour le moment...