• No results found

1.6 Planning

2.2.2 Sophisticated Virtual Network Embedding Algorithms

2.2.2.4 Security

Conocido, por tanto, como se realiza la replicación, así como los ficheros necesarios, podemos dar comienzo a la configuración de esta funcionalidad de MySQL. La configuración mostrada a continuación va a ser la del Punto 5.2 Funcionamiento de la replicación MySQL.

Supongamos el mismo caso que el propuesto en el punto 5.2, dos nodos cada uno con el servicio MySQL instalado, y se pretende que ambas bases de datos se repliquen para conseguir así redundancia en los datos almacenados. La configuración de la replicación MySQL se lleva a cabo en el archivo my.cnf de cada uno de los nodos.

El nodo A va a ser el nodo maestro y el nodo B va a ser el nodo esclavo. Lo que se requiere añadir al archivo de configuración my.cnf en [mysqld] para que el nodo A ejerza como

maestro se muestra a continuación: #Inicio replicacion MySQL server-id=1

log-bin=/var/lib/mysql/master-bin

log-bin-index=/var/lib/mysql/master-bin log-error=/var/lib/mysql/master-error #Fin replicacion MySQL

Para que el nodo B se comporte como esclavo, únicamente es necesario añadir en

[mysqld] la siguiente configuración: #Inicio Replicacion MySQL server-id=2

relay-log=/var/lib/mysql/slave-bin

relay-log-index=/var/lib/mysql/slave-bin relay-log-info=/var/lib/mysql/slave-error replicate-do-db=ejemplo

#Fin Replicacion MySQL

Nota: destacar la importancia de identificar cada servidor con el identificador “server_id”

Con la configuración establecida el nodo B va a ser el nodo esclavo, consultando los cambios ocurridos en el log binario del servidor A. Sin embargo para que el nodo esclavo pueda acceder al log_bin del nodo maestro es necesario que tenga permisos de replicación. Por lo tanto, el siguiente paso consiste en dar permisos de replicación al nodo B en el nodo A. Para ello en el nodo A se ha de ejecutar las siguientes sentencias SQL:

mysql> GRANT REPLICATION SLAVE, REPLICATION CLIENT -> ON *.*

-> TO 'repl'@'nodoB'

-> IDENTIFIED BY 'q1w2e3';

De esta manera se otorga permiso de replicación al nodo identificado con el usuario

repl que se acredite con el password q1w2e3 procedente del nodoB (

Atención: ello requiere que el nodo A incluya en el archivo host una resolución para el

nombre nodoB.

Antes de dar inicio a la replicación es necesario que ambas bases de datos partan del mismo punto, es decir, con el mismo contenido por lo que se requiere hacer un backup del

nodo A y restaurar todo su contenido en el nodo B.

Para hacer el backup de la base de datos ejemplo en el archivo situado en el directorio

/tmp/nodoA.dump ejecutar el siguiente comando (no es una sentencia SQL) en el nodo A: mysql –user=root –password=mipassword --extended-insert

Para restaurar el backup en el nodo B ejecutar, previamente copiando el fichero backup creado nodoA.dump por ejemplo al directorio /tmp/backup_mysql/nodoA.dump:

mysql --user=root --password=my_pwd </tmp/backup_mysql/nodoA.dump

Por último faltaría indicar al nodo esclavo el nombre del fichero del log binario maestro en el que actualmente escribe y la posición hasta la que se ha escrito en este log.

Para conocer el nombre y posición del log_bin que actualmente se encuentra usando el maestro es necesario ejecutar en este la siguiente sentencia SQL:

show master status\G

La salida será similar a la que se muestra a continuación : mysql > SHOW MASTER STATUS;

+---+---+ | File | Position | +---+---+ | mysql-bin.003 | 73 | +---+---+

mysql-bin.003 corresponde al log binario que está usando actualmente el maestro y 73

corresponde a la posición actual que ocupa tras la última sentencia de modificación.

Finalmente es necesario indicar la información al nodo esclavo ejecutando en este la siguiente sentencia SQL:

mysql> CHANGE MASTER TO

-> MASTER_HOST='nodoA', -> MASTER_USER='minodoB', -> MASTER_PASSWORD='q1w2e3',

-> MASTER_LOG_FILE='mysql-bin.003', -> MASTER_LOG_POS=73;

Atención: ello requiere que el nodo B incluya en el archivo host una resolución para el

nombre nodoA.

Por último comenzar la replicación en el nodo esclavo mediante las sentencias: mysql –-user=root –password=mipassword

start-slave;

Para comprobar si la replicación MySQL se encuentra en ejecución se puede ejecutar la siguiente sentencia SQL en el nodo esclavo y comprobar si el resultado de Slave_IO_Running y

Slave_SQL_Running es el siguiente: Slave_IO_Running: Yes Slave_SQL_Running: Yes

Si la salida es correcta la replicación estará completamente operativa y todas las actualizaciones realizadas en el nodo maestro serán replicadas de inmediato al nodo esclavo. Si por el contrario la salida no es correcta es muy recomendable leer en el nodo maestro el

bin-log –err situado en el path que hemos indicado en el archivo de configuración del nodo

C

CAAPPÍÍTTUULLOO55

ALTO RENDIMIENTO EN GNU/LINUX

1

1

IInnttrroodduucccciióónnaallaallttoorreennddiimmiieennttoo

En los sistemas GNU/Linux existen muchas herramientas que nos permiten ofrecer alto rendimiento. Dichas herramientas se pueden clasificar en las siguientes categorías:

 Servicios

Las soluciones de alto rendimiento enfocado a los servicios son especialmente utilizadas en aquellos servicios que han de soportar mayor carga y/o mayor congestión. Aquellos servicios más utilizados, con gran volumen de peticiones como podría ser por ejemplo un servidor Web, un servidor Ftp, un servidor Asterisk en un entorno empresarial requieren de esta solución. Una configuración de alto rendimiento podría ser necesaria por ejemplo en la página Web de una entidad financiera. La solución podría consistir por ejemplo en tres nodos donde dos de ellos ofrecen el mismo servicio Web simultáneamente y el nodo restante cumple la función de balanceador, es decir, en función de un patrón determinado o de manera aleatoria el nodo balanceador envía una petición Web a uno y otro de los otros dos nodos que ofrecen el servicio. El balanceador es meramente un simple intermediario al cual acceden los clientes que quieren hacer uso del servicio.

Algunas de las herramientas GNU/Linux enfocadas al alto rendimiento en servicios son: KeepAlived, Linux Virtual Server, UltraMonkey, LifeKeeper, etc.

 Balanceador de carga

Se hace especial distinción entre una solución de alto rendimiento de propósito general y una solución de alto rendimiento específica para VoIP.

- Generales

Al hablar de una solución de alto rendimiento general nos referimos a una solución aplicable al resto servicios como Web, Ftp, Dns, etc. Servicios que por lo general son propensos a gestionar un gran volumen de peticiones, lo que obliga a dividir la carga. Una de las aplicaciones GNU/Linux más utilizadas es la solución de Linux Virtual Server o LVS, una avanzada solución de balanceo de carga con la finalidad de construir servicios de red de alto rendimiento y escalabilidad, servicios de red tales como: servicio Web, Cache, Mail, Ftp, etc. Otra herramienta GNU/Linux más específica para Dns es BIND9 que permite el uso de múltiples destinatarios para un mismo nombre. Existen otras soluciones

hardware para balanceo de carga en Dns que hace uso de la plataforma Content Services Switch (CSS11000 y CSS11500) ofrecidas por Cisco.

- Específico de VoIP

El protocolo SIP, definido en el RFC3261 es actualmente uno de los protocolos de sesión con mayor auge en VoIP. En GNU/Linux existen varias herramientas cuya funcionalidad es la de implementar un proxy SIP de alto rendimiento y muy configurable. Unas de estas primeras aplicaciones fue SER responsabilidad de iptel.org. Posteriormente y debido a la lentitud en la liberación de nuevas versiones de SER y a la reticencia de los desarrolladores, se creó el 14 de Junio de 2005 OpenSER. Actualmente OpenSER no existe, al menos no con la misma identidad. OpenSER ha pasado a denominarse

KAMAILIO, manteniendo incluso la misma comunidad, y al mismo tiempo se

ha creado un fork de OpenSER denominado OpenSIPS.

2

2

PPrrooyyeeccttoossddeeaallttoorreennddiimmiieennttoo

En GNU/Linux existen una gran variedad de proyectos que nos aportan las características del alto rendimiento. Proyectos tanto para alto rendimiento en servicios como en

VoIP.

Algunos de los proyectos destinados a ofrecer alto rendimiento en servicios son:

 KeepAlived. El objetivo principal del proyecto es el de proporcionar alta

disponibilidad al proyecto Linux Virtual Server. KeepAlived es un servicio que monitoriza el estado del cluster LVS para que en caso de fallo el cluster siga en funcionamiento.

 Linux Virtual Server. Con él se puede construir un cluster de alto rendimiento, mediante un servidor dedicado a balancear la carga. La arquitectura del cluster es totalmente transparente para los usuarios, interactuando estos como si de un único servidor se tratase. Es uno de los proyectos más utilizados.

 Linux Virtual Server Manager. Es un paquete que simplifica la creación y

mantenimiento de cluster basados en LVS. Permite administrar el cluster vía Web y modificar la configuración del cluster en tiempo real generando además diversas estadísticas sobre el funcionamiento del cluster.

 Red Hat Cluster Suite. Ha sido diseñado específicamente para Red Hat Enterprise

Linux. Proporciona además de alta disponibilidad, balanceo de carga. Dispone de

soluciones listas para implantar para la mayoría de los servicios, pudiendo además proporcionar soporte cuando sea necesario.

 UltraMonkey. Es un proyecto que dota a los servicios tanto de alta disponibilidad como de alto rendimiento. UltraMonkey hace uso de GNU/Linux para proveer una solución fácilmente adaptable a un gran número de necesidades.

 Bind9. Berkeley Internet Name Domain es el servidor de DNS más comúnmente

usado en Internet, especialmente en sistemas Unix, en los cuales es un estándar de facto.

Algunos de los proyectos destinados a ofrecer alto rendimiento en VoIP son:

 SER. Es un proyecto libre, configurable y de muy alto rendimiento bajo la licencia

GNU. SER cumple por complete la funcionalidad descrita en el RFC3261, soporta

el uso de diversas base de datos, NAT, multidominio, etc.

 Kamailio. Es el proyecto OpenSER

 OpenSIPs. Es un fork de OpenSER

 SIP-Router. Kamailio + SER. Unificación de los proyectos KAMAILIO y SER.

Algunos de los proyectos aquí listados son de pago, otros son completamente gratuitos, otros ofrecen soporte o disponen de una gran comunidad, etc. En GNU/Linux disponemos de diversas soluciones pudiendo escoger la que más se adapte a nuestras necesidades.

En el aparatado 4. KAMAILIO el proxy SIP de código abierto nos vamos a centrar en el proyecto KAMAILIO por ser una de las soluciones de alto rendimiento en VoIP que, además de ser gratuita para la comunidad VoIP, es el proxy SIP con el que más se identifican hasta el momento. Sin embargo, antes de conocer KAMAILIO, es necesario tener nociones básicas del protocolo SIP, por lo que a continuación se va a dedicar el siguiente punto a conocer el

protocolo de señalización SIP9 y a su integración con RTP10.

3

3

PPrroottooccoolloossddeeccoommuunniiccaacciióónn

Related documents