Aquí vamos:
obtener el 5 servidores esclavos para actualizar una tabla en una base de datos en el servidor principal de la inserción de su carga cada X segundos/minutos. Luego, en el servidor principal, verifique cuál de ellos tiene la carga más baja y redirija al usuario a ese servidor en particular.
¿Cómo cargar el servidor?
Hay una función llamada sys_getloadavg();
que devolverá tres muestras que representan la carga promedio del sistema (el número de procesos en la cola de ejecución del sistema) durante los últimos 1, 5 y 15 minutos, respectivamente, en una matriz.
esta manera, si la carga del sistema es más de un número determinado, se debe redireccionar al visitante a un servidor esclavo diferente. Por ejemplo:
$load = sys_getloadavg();
if ($load[0] > 80) {
//insert into database "I'm busy!!"
$query = "UPDATE `server_load` SET `load` = $load WHERE `server_id` = 1";
mysql_query($query);
}
Nota del 0
en $load
significa que se está haciendo la carga del servidor para el último minuto, utilizar 1 ó 2 para la carga promedio del sistema 5 y 15 minutos. La consulta estaría en una secuencia de comandos en los servidores esclavos y, cada vez que se ejecutara, actualizaría la carga promedio del servidor en la tabla server_load
.
Cómo elegir el servidor principal
Una vez que hemos aislado la funcionalidad 'conseguir la carga del servidor de los servidores esclavos. Todo lo que necesita hacer desde el servidor principal es consultar la base de datos y obtener la carga más baja de la tabla server_load
. La tabla mencionada, sería suficiente funcional con un campo de marca de tiempo, un campo de ID, y un campo de carga con la siguiente estructura:
`timestamp` int(11) not_null
`id` int(1) not_null autoincrement
`load` int(3) not_null
Para un tutorial básico introducción de interacción MySQL y PHP Sugiero este link de phpsense. Si dedicas suficiente tiempo a leer la documentación con la que te he vinculado, deberías ser capaz de lograr tu objetivo. Asegúrese de hacer todas las siguientes preguntas como entidades independientes si ya no puede encontrarlas en este sitio. Lo más probable es que las personas que te precedieron te hayan preguntado una y otra vez. Espero haber sido de ayuda.
Fuentes:
Bastante avanzado para un principiante Yo diría, veamos qué puedo encontrar para ti. –
Espero que la respuesta actual sea suficiente :) –
Solo un pensamiento 'fuera de la cuestión': hay una palabra clave para esto: Balanceo de carga. Y para Loadbalancing ya hay software especial e incluso hardware que puede usar. No es necesario desarrollar esto por su cuenta. – ZeissS