PDA

Bekijk Volledige Versie : Load op meerdere servers?



Desmond
18/01/03, 22:55
Story:

Op server1 draait siteA
Op siteA staat een pagina met daarop:
Load van server01 = 1.00

Kan ik op een of andere manier op siteA de load van server02, 03, 04 etc laten zien?

StarInternet
19/01/03, 10:54
Origineel geplaatst door Desmond
Story:

Op server1 draait siteA
Op siteA staat een pagina met daarop:
Load van server01 = 1.00

Kan ik op een of andere manier op siteA de load van server02, 03, 04 etc laten zien?
Ja en wel op een hele simpele manier.
Om de 10 minuten laat je via een cronjob een php script laden.
Die php script zet in de globale MySQL server de Load.
Je update de gegevens gewoon om de 10 min
Query: "UPDATE serverload SET load='$serverload' WHERE server='server01'"
En je leest vanaf siteA de gobale MySQL database uit.
Gebruik hier voor 1 mysql database server.
Zo beperk je ook de load van de servers als je steeds de load aan vraagt.
En dit is stukken veiliger vanwege dat je nu geen script [via apache dan he :)] hebt draaien die rechten moet hebben in de / dir

load.php [moet in cronjob]


#/usr/bin/php
<?
/*
Gebruik op eigen risico
Niet getest

Gemaakt door www.starinternet.nl
*/
# zet hier je script die de serverload bekijkt van de server
$serverload = "hier de server load";
$server = "server02";
mysql_connect("server01","serverstat","blaat");
mysql_select_db("serverstats");
$sql = mysql_query("SELECT load FROM serverload WHERE server='$server'");
$totaal = mysql_num_rows($sql);
if ($totaal <= 0) {
$insert = mysql_query("INSERT INTO serverload (load,server) VALUES ('$serverload','$server')");
}
else {
$update = mysql_query("UPDATE serverload SET load='$serverload' WHERE server='$server'");
}
mysql_close();
?>

als er iets fout gaat krijg je netjes in je root of admin mailbox de error :)

Deimos
19/01/03, 12:17
Starinternet nu ga je er dus vanuit dat de SQL server benaderbaar is buiten localhost. Dit is meestal niet het geval... Dus dan zou het wellicht een oplossing zijn, om op elke server gewoon een load scriptje te zetten.

En deze vervolgens met een simpel fopen statement op te vragen van alle servers. Is volgens mij veel handiger. Eventueel kan je de uitkomsten ook nog cachen :)

StarInternet
19/01/03, 12:25
Origineel geplaatst door Deimos
Starinternet nu ga je er dus vanuit dat de SQL server benaderbaar is buiten localhost. Dit is meestal niet het geval... Dus dan zou het wellicht een oplossing zijn, om op elke server gewoon een load scriptje te zetten.

En deze vervolgens met een simpel fopen statement op te vragen van alle servers. Is volgens mij veel handiger. Eventueel kan je de uitkomsten ook nog cachen :)
Kan ook maar je kan ook een gebruiker aangeven dat hij alleen van server02 en server03 mag benaderen dus even goed veilig :)
Je moet geen % gebruiken en ZEKKER niet met root rechten :)

Deimos
19/01/03, 12:37
Dat snap ik, maar ben persoonlijk niet zo'n voorstander van benaderbaar buiten localhost om. Zorgt alleen maar voor extra security risks.

almar
19/01/03, 15:29
De security bug waar jij naar refereert (denk ik) is al minstens een jaar geleden opgelost.

Op het moment dat je % gaat gebruiken, dan gaat het zowieso fout.

Bij een connect kan je eventueel ook nog ssl gebruiken, zodat er een encryptie op zit. Dit vereist echter wel enige kennis.

Maar ik ga er vanuit dat je die wel hebt ;)

DennisP
26/02/03, 21:01
<? include("http://www.server2.nl/load.php"); ?>
<? include("http://www.server3.nl/load.php"); ?>

Hmmm

of uptime.php :p

Hmmm zit me nu te bedenken dat include misschien niet zo gaat werken :)

Dan moet je het volgende doen:

vi load.sh

#!/bin/bash
cd /root/serverloads
wget http://www.server1.nl/uptime.php
mv uptime.php server1.txt
wget http://www.server2.nl/uptime.php
mv uptime.php server2.txt
wget http://www.server3.nl/uptime.php
mv uptime.php server3.txt
echo "Load has loaded, the Job has been done" >> /var/log/messages

:wq!

crontab -e

0/5 * * * * /root/serverloads/load.sh > 1> /dev/null

:wq!

vi uptime.php

<html>
en dergelijke:

<? include("/root/serverloads/server1.txt"); ?>
en dergelijke

:wq! :)

almar
26/02/03, 21:56
> Load has loaded

LOL ;)

DaVaRiOuS
19/03/03, 18:27
is dit geen oplossing?

http://davarious.nuclearmp3s.com/php/info

Pier
19/03/03, 19:27
Persoonlijk zou ik het via snmp doen, maar als je het eenvoudig in een pagina wil maak er dan javascrip van.
Je maakt i.i.g. de pagina al, en ipv huidige output, maak je er
document.write('Load on serverA is 0.83');
van

en dan 1 algemene info-page met
<SCRIPT SRC="http://server1.x.z/load.js"></SCRIPT>
<SCRIPT SRC="http://server2.x.z/load.js"></SCRIPT>