8
votes

Rediriger les utilisateurs basés sur le trafic de serveur avec PHP

Je fais un site Web et je tiens à diffuser mon trafic pour éviter de s'écraser et de vous assurer que je peux offrir 100% de disponibilité. Je vais le faire en ayant 5 serveurs différents et un serveur principal. Permettez-moi d'expliquer.

J'ai un site Web (domaines.com) et sur la page d'accueil de ce site, il existe un cadre CURL qui connecte les utilisateurs à l'un des cinq autres serveurs qui ont le moins de circulation. Je souhaite que le script modifie le cadre de curl pour afficher le serveur avec le moins de trafic.

Quelqu'un peut-il m'aider ou suggérer comment je pourrais coder cela comme je suis un débutant PHP.

Merci d'avance, Callum


4 commentaires

Pretty Advanced pour un débutant, je dirais, voyons ce que je peux trouver pour vous.


J'espère que la réponse actuelle est suffisante pour vous :)


Juste un peu "en dehors de la question" pensant: il y a un mot clé pour cela: la balance de blocage. Et pour la balance de blocage, il existe déjà un logiciel spécial et même du matériel que vous pourriez utiliser. Pas besoin de développer ceci le vôtre.


Pourquoi le ferait-il avec PHP? Obtenez vous-même un équilibreur de chargement approprié comme Zeisss mentionné.


3 Réponses :


1
votes

Vous allez avoir besoin de quelque chose pour déterminer le trafic sur chaque serveur; Cela devrait émettre une métrique que vous pouvez comparer contre. Chacun des cinq serveurs doit être informé de manière dynamique de leur charge de trafic et de mettre à jour cela quelque part (je suggérerais une base de données). Donc, votre serveur front-end peut, lorsqu'un utilisateur entre en place, interrogeez la base de données pour le serveur avec le moins de charge et dirigez-les là-bas.


1 commentaires

@CallumWhyte: Ceux-ci semblent avoir deux très bonnes questions à poser sur une sorte de site de questions de programmation. :-)



9
votes

Ici, nous allons:

Obtenez les 5 serveurs esclaves pour mettre à jour une table dans une base de données sur le serveur principal Insertion de leur charge toutes les x secondes / minutes. Ensuite, sur le serveur principal, vérifiez lequel d'entre eux a la charge la plus basse et redirige l'utilisateur à celui-ci. text alt

Comment obtenir la charge du serveur? < / p>

Il y a une fonction appelée sys_getloadavg (); qui retournera trois échantillons représentant la charge moyenne du système (le nombre de processus dans la file d'attente du système) sur les 1, 5 et 15 Minutes, respectivement dans un tableau.

De cette façon, si la charge du système est sur un numéro de jeu, vous devez rediriger le visiteur sur un autre serveur esclave. Par exemple: xxx

notez le 0 sur $ charger signifie qu'il obtient la charge du serveur pour la dernière minute, Utilisez 1 ou 2 pour la charge du système moyen de 5 et 15 minutes. La requête, serait sur un script sur les serveurs esclaves et chaque fois qu'il a été exécuté, il mettrait à jour la charge moyenne du serveur sur la table serveur_load .

Comment Choisissez parmi le serveur principal

une fois que vous avez isolé la fonctionnalité "Get Server Charger" des serveurs esclaves. Tout ce que vous avez à faire à partir du serveur principal est interroger la base de données et obtenez la charge la plus basse de la table Server_Load . La table mentionnée serait suffisamment fonctionnelle avec un champ horodatage, un champ d'identification et un champ de charge avec la structure suivante: xxx

pour un didacticiel de base introduisant MySQL et PHP Interaction Je suggère cette lien de PHPSense. Si vous dédiez suffisamment de temps, une lecture de la documentation que je vous ai lié, vous devriez être capable d'atteindre votre objectif. Assurez-vous de poser toutes vos questions suivantes en tant qu'entités indépendantes si vous ne parvenez pas à les trouver sur ce site déjà. Les chances sont qu'ils ont été posées encore et encore par des personnes qui vous ont précédé. J'espère que j'ai été utile.

Sources:


2 commentaires

Très bonne réponse. Mais je pense peut-être que vous devriez peut-être reformuler "insérer leur charge toutes les x secondes / minutes".


Hahaha n'a rien de mal avec ça aussi longtemps que vous avez un esprit propre.



0
votes

Callum, je suis nouveau ici et je ne suis pas tout à fait sûr que cela s'oppose aux règles, mais comme il n'y a pas de système de messagerie, je pose cela ici ... La réponse à votre question que vous avez posée et supprimée à propos de Les coins arrondis consistent à ajouter ceci à votre CSS: (Je l'ai compris lorsque vous l'avez supprimé, puis il ne m'a pas laissé post poster) xxx


1 commentaires

Vous pouvez supprimer les lignes Moz et WebKit si cela est juste pour iOS / Android