El otro día nos toco revisar varios servidores para reutilizarlos como parte de otros servicios, el hecho es que por lo general (y tal como nos sucedió a nosotros) , solo tenemos la dirección ip del equipo, y es muy común que el administrador de los centros de datos no tengan a mano o certeza del hardware que posee un servidor en especifico. Sin embargo esto no nos debe preocupar, ya que existen comandos muy sencillos en linux con los que nos arrojará toda la información requerida.
Dependiendo de lo que queramos saber es que aplicaremos cada uno de los siguientes comandos en la consola de linux, ya sea si queremos algo en especifico o todo un informe detallado de lo que tenemos.
Conocer Tamaño del Disco
Para ello ejecutamos:df -h
Este nos traerá el listado de las particiones que tiene el disco duro , sumando los valores de la columna Tamaño obtendremos el total aproximado del disco duro, también es interesante porque indica e espacio usado, disponible y el porcentaje de uso. El atributo -h es para que nos muestre los valores en términos de kilobytes, megas, gigas, etc.
Conocer Cantidad de Memoria Ram del Equipo
Para ello ejecutamos:top
Este programa nos mostrará todos los procesos que están corriendo en el sistema, pero para nuestros propositos es muy útil ya que en la parte superior (en la cabecera) , al comienzo de la cuarta linea esta el valor Men, el cual muestra la cantidad de memoria que posee el equipo, aparecerá en términos de kilobytes así que se debe hacer la conversión para determinar cuantos gigas o megas se poseen (1024K = 1Mb , 1024Mb = 1Gb).
Conocer el Cantidad y Tipo de Procesador del Servidor
Para ello ejecutamos lo siguiente:cat /proc/cpuinfo
Lo anterior mostrará el contenido del archivo cpuinfo, en el cual podremos observar las características del o los procesadores que posea el servidor, tales como cantidad de procesadores, tipo, marca, velocidad, tamaño de la memoria cache (aunque no indicará si es de primer o segundo nivel)
Conocer al detalle todo el hardware del Servidor
El siguiente comando es preferible ejecutarlo como administrador del sistema, ya que la información reflejada será más completa y además redireccionar la salida hacia algún archivo y no hacia la pantalla , ya que se generarán muchas lineas:lshw > nombreArchivo
Este comando realizará un análisis de todo el hardware que tenga el servidor y con ello crea un informe ordenado por componentes , tendremos al detalle por ejemplo hasta el tipo del socket que tiene el procesador instalado, o que memoria ram tenemos instalada en cada banco de la tarjeta madre.
En Suse , lshw no viene en la instalación por defecto , sin embargo existe un comando que es hwinfo el cual también genera un informe con caracteristicas similares al que emite lshw.
Continua...
sábado, 10 de enero de 2009
Cómo saber que hardware tiene un servidor en linux?
miércoles, 5 de noviembre de 2008
Crear replica de Bases de Datos MySQL
Desde la versión de MySQL 3 es posible tener una base de datos en un servidor que se alimente automáticamente de un servidor de bases de datos maestro, esto es muy útil donde se manejan muchos datos y se realizan muchas transacciones entonces se desea tener un ambiente de ata disponibilidad en caso de que uno de los servidores se caiga , se activa el otro que esta respaldado hasta las ultimas operaciones realizadas.
Esta guía la probé usando un ambiente con linux debian etch y MySQL 5.0 .
Las características de MySQL 5 soportan replicación asíncrona unidireccional: un servidor actúa como maestro y uno o más actúan como esclavos. El servidor maestro escribe actualizaciones en el fichero de log binario, y mantiene un índice de los ficheros para rastrear las rotaciones de logs. Estos logs sirven como registros de actualizaciones para enviar a los servidores esclavos. Cuando un esclavo se conecta al maestro, informa al maestro de la posición hasta la que el esclavo ha leído los logs en la última actualización satisfactoria. El esclavo recibe cualquier actualización que han tenido lugar desde entonces, y se bloquea y espera para que el master le envíe nuevas actualizaciones.
Un esclavo servidor puede servir como maestro si quiere preparar una cadena de replicaciones de replicación.
Tenga en cuenta que cuando usa replicación, todas las actualizaciones de las tablas que se replican deben realizarse en el servidor maestro. De otro modo, debe ser cuidadoso para evitar conflictos entre actualizaciones que hacen los usuarios a las tablas en el maestro y las actualizaciones que hacen en las tablas de los esclavos.
Configuración del Servidor Maestro
En el fichero /etc/mysql/my.cnf comentamos las siguientes lineas , sin importar el valor que tengan asignado, para que el demonio del mysql pueda escuchar en las interfaces de red : # skip-networking
# bind-address = 127.0.0.1
Ubicamos en el mismo archivo la clasula [mysqld] , debajo de ella buscamos las lineas siguientes: # server-id = 1
# log_bin = /var/log/mysql/mysql-bin.log
# binlog_do_db = include_database_name
# binlog_ignore_db = include_database_name
Estas lineas debemos descomentarlas y modificarlas dependiendo de lo que vamos a hacer, la primera es para identificar el servidor, en este caso el servidor maestro es el Nº 1, la segunda linea es la que indica la ruta donde almacenarán los logs, la tercera linea es para indicar el nombre de la base de datos que se va a replicar y a la que el servidor irá registrando en el archivo que pusimos en la ruta de la linea anterior y por ultimo en la siguiente linea colocamos el nombre de la base de datos que no registraremos. Además de modificar estos valores debemos agregar dos lineas más quedando todo este código de la siguiente forma: server-id = 1
log_bin = /var/log/mysql/mysql-bin.log
binlog_do_db = NombreBaseDatosReplicar
binlog_ignore_db = mysql
low-priority-updates
innodb_flush_log_at_trx_commit=1
La ultima linea agregada innodb_flush_log_at_trx_commit, cuando este valor es 1 (predeterminado), cada vez que se confirma una transacción el buffer de registros (log buffer) se graba en el fichero de registro y se vuelca a disco.
Ya con esto terminamos la edición del archivo my.cnf en el maestro, nos salimos del editor y procedemos a reiniciar el servicio de mysql /etc/init.d/mysql restart
Bloquear y Extraer Base de Datos
Crear Usuario
Procedemos ahora a crear un usuario que tendrá permisos para que el servidor esclavo pueda conectarse a la base de datos del servidor maestro ( si ya tiene un usuario creado con tal permisología en la base de datos también puede re-asignarle permisos para la replica en el servidor esclavo). Para ello procedemos a entrar al shell del mysql como root y dentro ejecutamos la sentencia de creación del usuario: GRANT REPLICATION SLAVE ON *.* TO 'usuario'@'%' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;
Bloquear Base de Datos
Para generar la replica de la base de datos estas deben quedar con la misma data , para ello debemos bloquear cualquier registro nuevo que se vaya a generar mientras realizamos el proceso, siendo así usamos la base de datos especifica y posteriormente la bloquearemos, esto se realizará ejecutando lo siguiente: use nombreBaseDatos;
FLUSH TABLES WITH READ LOCK;
SHOW MASTER STATUS;
La ultima linea nos generará una respuesta la cual debemos prestar atención, ya que los datos deben ser anotados para posteriormente utilizarlos, de este resultado debemos anotar las dos primera columnas que son el nombre del fichero y la posición, los datos generados son similares a estos : mysql-bin.0008678 98 nombreBaseDatos
Una vez anotado estos datos, nos salimos del shell de mysql.
Extraer Datos
Es necesario exportar la base de datos para posteriormente importarla en el servidor Esclavo, para ello usaremos el comando mysqldump con el cual generaremos un archivo .sql , ejecutamos entonces en el terminal lo siguiente: mysqldump -u root -p --opt nombreBaseDatosReplicar > nombreBaseDatos.sql
Generado el archivo .sql lo copiamos en el servidor esclavo. Ahora solo queda desbloquear la base de datos en el servidor maestro para que siga su normal funcionamiento, entramos de nuevo en el shell de mysql como root y ejecutamos el comando: unlock tables;
Hasta aquí hemos terminado la configuración con el servidor maestro, ahora procederemos a entrar al servidor esclavo para realizar la configuración.
Configuración del Servidor Esclavo
Crear e importar base de datos
En el servidor Esclavo procedemos a crear la base de datos, para ello ingresamos a mysql y desde el shell ejecutamos lo siguiente: create database nombreBaseDatos;
Nos salimos del shell y procedemos a ejecutar en el terminal el comando para importar la base de datos que previamente habiamos guardado en un archivo .sql , esto lo haremos de la siguiente forma: mysql -u root -p nombreBaseDatos < /rutaarchivo/nombreBaseDatos.sql
Configuración de MySQL como esclavo
Ahora editaremos el archivo my.cnf del servidor esclavo con el fin de definir que este servidor funcionará como esclavo y se le indicará quien es el servidor maestro, para ello abrimos el archivo y buscamos la clausula [mysqld]y colocamos lo siguiente: server-id = 2
master-host = ipServidorMaestro
master-user = usuarioCreado
master-password = usuarioPassword
master-connect-retry = 60
replicate-do-db = nombreBaseDatos
Guardamos los cambios realizados y reiniciamos el servicio de mysql , posteriormente entramos como root al mysql y apagamos el servicio de esclavo ejecutando el siguiente comando: SLAVE STOP;
Inmediatamente procedemos a ingresar los datos del ip del servidor mysql maestro, los datos del usuario y además usaremos los datos que anotamos cuando se procedió a bloquear la base de datos, es decir , el nombre del archivo y la posición, esto lo hacemos con la siguiente sentencia: CHANGE MASTER TO MASTER_HOST='ipServidorMaestro', MASTER_USER='usuarioCreado', MASTER_PASSWORD='usuarioPassword', MASTER_LOG_FILE='archivo mysql-bin.xxxxx', MASTER_LOG_POS='Nº XX';
Para finalizar iniciamos nuevamente el esclavo y salimos del mysql: START SLAVE;
Ahora ya se puede realizar cualquier cambio en el servidor maestro y se verán replicados en el servidor esclavo.
Continua...
martes, 14 de octubre de 2008
Habilitar Acceso Remoto a Bases de Datos MySql
Muchas veces el acceso a nuestras bases de datos lo realizamos directamente en el mismo servidor, quizás por razones de sencillez , vía ssh nos conectamos y revisamos lo que se necesita. Sin embargo, para acceder a estos servidores requerimos tener un usuario y su correspondiente clave, aparte del usuario y la clave de la base de datos. Es por ello que muchas veces necesitaremos administrar remotamente las BD de mysql y para ello solo necesitamos hacer una pequeña configuración en el servidor para permitir los accesos.
Lo primero que debemos hacer es irnos al servidor donde esta instalada la base de datos mysql y realizar un cambio en el archivo my.cnf de mysql , si esta instalado en un servidor con debian lo encontremos en la ruta:/etc/mysql
En este archivo por defecto la instalación de MySql queda apuntando a nuestra dirección local, para ello debemos modificarla, así que ubicamos la linea que dice:bind-address = 127.0.0.1
y le cambiamos la dirección para que quede:bind-address = 0.0.0.0
Una vez realizado esto ejecutamos mysql como root , y una vez dentro le daremos permiso al usuario que queremos que acceda de manera remota, esto es ejecutando la siguiente sentencia:grant all privileges on *.* to 'usuario'@'%' identified by 'password' with grant option;
Y listo, ejecutado estas dos operaciones procedemos a reiniciar el servicio de mysql:/etc/init.d/mysql restart
Ejecutado el procedimiento , podemos probar desde otra maquina ingresar a la base de datos colocando la dirección ip , el usuario y clave de la base de datos el cual previamente configuramos.
Continua...
viernes, 26 de septiembre de 2008
Cómo saber si un Servidor esta caído?
Varias veces sucede que tenemos que acceder a una página o descargar algún archivo de un servidor en la web y resulta que quedamos rato largo esperando y después de un tiempo nos da varios mensajes de error, ya sea que no consigue la página, que no se puede acceder, que no esta disponible, etc etc. Pero el detalle esta en que ocasiones es nuestra red que tiene limitaciones de acceso a un servidor especifico, entonces como saber si es una falla de nuestra red o es el servidor que esta caído??.
Usando linux o windows , podemos saber si un servidor esta caído (aunque prefiero más linux jejej) y así despejar la duda si en nuestra red alguien bloqueo algunos puertos o direcciones en concreto.
En linux tenemos dos comandos que fácilmente nos podrá dar una respuesta, el primero es enviar un paquete al servidor destino y ver si nos da respuesta, aunque "ojo" esta opción puede que igual nos de un resultado negativo y no sea porque el servidor destino este caído sino porque este configurado para no responder a paquetes basura.
Entonces, nos metemos en la consola tanto en windows como en linux, nos sirve hacer un ping al servidor a consultar ping name.server
Si el servidor esta bien nos responderá los paquetes , es interesante analizar el tiempo de respuesta ya que si es muy grande indica que lo que esta sucediendo quizás es que el ancho de banda en la red esta muy saturado de paquetes. Sin embargo como indique anteriormente puede ser que el servidor este bien y aun así no responda.
Es por ello que tenemos otra forma y es realizar un rastreo de un paquete enviado, esto lo ejecutamos con el comando traceroute en linux o tracert en windows, por lo tanto quedaría así:
En linuxtraceroute name.server
En Windowstracert name.server
Lo bueno de rastrear el paquete es que permite ver si el problema esta en nuestra red, ya que si el paquete que enviamos no llega a pasar el gateway de nuestra red quiere decir que hay algo que esta filtrando los paquetes y que evita el acceso al servidor que queremos acceder, sin embargo si el paquete si sale de nuestra red y no termina de llegar al servidor destino esto nos indica que es posible que este caído el servidor que queremos acceder.
También existe otra opción muy simple, y es a través de la dirección web www.estacaido.com , aquí sencillamente te piden el nombre de la pagina que quieres ver y ellos se encargan de hacer el analisis , al cabo de un rato te responden muy claramente si el problema es tuyo o es del servidor!.
Continua...
