<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Fernando Gomez &#187; apache</title>
	<atom:link href="http://www.fernandogomez.es/tag/apache/feed" rel="self" type="application/rss+xml" />
	<link>http://www.fernandogomez.es</link>
	<description>CEO del Grupo mAs impacto y un apasionado de Internet</description>
	<lastBuildDate>Tue, 13 Jul 2010 08:53:13 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Wordpress en varios servidores simultáneamente</title>
		<link>http://www.fernandogomez.es/wordpress-en-varios-servidores-10601</link>
		<comments>http://www.fernandogomez.es/wordpress-en-varios-servidores-10601#comments</comments>
		<pubDate>Tue, 20 Oct 2009 10:53:07 +0000</pubDate>
		<dc:creator>Fernando Gomez</dc:creator>
				<category><![CDATA[Webmasters]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[Servidores]]></category>

		<guid isPermaLink="false">http://www.fernandogomez.es/?p=601</guid>
		<description><![CDATA[Las ventajas de que un site crezca son obvias: si estás haciendo bien las cosas, más tráfico = más ingresos. Pero si tu web tiene mucho tráfico y no tienes tecnología suficiente que lo soporte &#8230; puedes empezar a ver como en realidad habrá muchas peticiones a la web, pero el tráfico baja por que [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: left;">Las ventajas de que un site crezca son obvias: si estás haciendo bien las cosas, más tráfico = más ingresos. Pero si tu web tiene mucho tráfico y no tienes tecnología suficiente que lo soporte &#8230; puedes empezar a ver como en realidad habrá muchas peticiones a la web, pero el tráfico baja por que el servidor no es capaz de servir las páginas.</p>
<p>Es decir, <strong>tendrás el servidor petado</strong> y al final habrás preferido tener un tráfico intermedio, porque al menos no te daba problemas. Espero que no lo hayas pensado en serio <img src='http://www.fernandogomez.es/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>Para incrementos de tráfico razonables, hay varias soluciones:<br />
1/ El más simple, es reducir el peso de tu web y el número de querys a la base de datos y de llamadas a Apache.<br />
2/ <a href="http://www.fernandogomez.es/instalar-xcache-en-centos-5-plesk-9-2-10565">Instalar xCache</a> u otro acelerador de php a nivel servidor.<br />
3/ Tunear MySQL (escribiré un post sobre eso en breve)<br />
4/ Tunear Apache (tengo otro post pendiente)</p>
<p>Pero cuando hay un <strong>incremento brutal de tráfico</strong> como nos ha pasado a nosotros en nuestro blog de <a href="http://www.demujer.es" target="_blank">mujer</a>, la cosa se pone fea si no se adoptan otro tipo de medidas: Distribuir la carga entre 3 máquinas o VPS, ya que es Apache quien no es capaz de servir adecuadamente las páginas por mucha máquina que tengas.</p>
<p style="text-align: center;"><img class="aligncenter" title="wordpress balanceado entre servidores" src="http://www.fernandogomez.es/wp-content/uploads/2009/10/wordpress-balanceado-2-servidores.jpg" alt="wordpress instalado en varios servidores" width="450" height="275" /></p>
<p><strong>Servidor 1</strong>/ Aquí estará la instalación inicial de WP. Mysql lo apagamos, dejamos correr Apache.<br />
<strong>Servidor 2</strong>/ Tendremos solo Apache y una copia exacta de la instalación del Worpdress del primer servidor.<br />
<strong>Servidor 3</strong>/ Solo Mysql. El resto de servicios apagados.<br />
En el servidor 1 y 2, por supuesto debes <a href="http://www.fernandogomez.es/configurar-y-optimizar-xcache-10577">configurar correctamente el xCache</a>.</p>
<p>Esta es la idea. Ahora vamos a ver como ponerla en práctica:</p>
<p>Hay cuatro pasos:<br />
1/ Instalación normal del Wordpress en el servidor 1<br />
2/ Cambio del Mysql al servidor 3<br />
3/ Duplicación del contenido entre los servidores 1 y 2<br />
4/ Balanceo y sincronización entre los servidores 1 y 2.</p>
<p><strong>El paso 1.<br />
</strong>Ni lo menciono. Te instalas tu wordpress y andando, como si nada.</p>
<p><strong>El paso 2.</strong><br />
-  Crea un usuario y base de datos en el servidor 3.<br />
-  Vuelca el contenido del MySQL desde el servidor 1 al servidor 3. Nosotros utilizamos el software <a href="http://www.mysqlfront.de/" target="_blank">MySQLFront</a>. Hace la migración de la estructura y datos, <strong>rápido y bien</strong>. Yo no me complicaría la vida con comandos por SSH.<br />
- Modifica el wp-config.php y en las líneas en las que configurar la base de datos, coloca la IP, usuario, base de datos y claves que tengas en el MySQL del servidor 3.</p>
<p>Asegúrate de que esa base de datos es accesible desde fuera del propio servidor. Si no sabes como se hace te recomiendo <a href="http://cambrico.net/mysql/como-crear-un-usuario-en-mysql-3-formas-diferentes" target="_blank">este post</a> y <a href="http://www.conclase.net/mysql/curso/index.php?cap=013" target="_blank">este otro artículo</a>.</p>
<p>Hecho esto, el apache responderá al Servidor 1 y MySQL al servidor 3.</p>
<p><strong>El paso 3.</strong><br />
El dominio en cuestión que utilices ya está dado de alta en el servidor 1 de forma normal.<br />
A la hora de darlo de alta en el nuevo servidor, puedes crearlo manualmente o si utilizas PLESK, utilizar el comando Migrar. Vamos a ver como sería en cada caso:</p>
<p>A/ Manualmente:<br />
- Ahora da alta en el servidor 2 el mismo dominio, como si no existiera el primero.<br />
- Accede por SSH al servidor 2. Comprueba que las rutas son las que deben ser, es decir las mismas que el servidor 1. Solo necesitamos volcar el contenido tal y como está en el servidor 1.</p>
<p>Para eso utilizamos el comando <a href="http://josearrarte.com/blog/2009/07/29/copiar-archivos-utilizando-scp-en-linux/" target="_blank">scp</a> . Accede al servidor 1 por ssh, haz un tar del contenido del dominio. Luego accede al servidor 2 por ssh. Sitúate en el mismo directorio donde has hecho el tar en el otro servidor e introduce el comando:<br />
<code><br />
scp <a href="mailto:root@ip-servidor1:/var/www/vhost/dominio.com/httpdocs/backup.tar">root@ip-servidor1:/var/www/vhost/dominio.com/httpdocs/backup.tar</a> .<br />
</code><br />
Modificando la ip y las rutas en tu caso. Destargetea el backup y ya tienes tu contenido.</p>
<p>B/ Utilizando el Migrar de PLESK9.<br />
Vas al servidor destino y utilizas el comando Migrar. Espera a que haya terminado la migración y comprueba el log de errores si que falla algo.</p>
<p>Hayas utilizado el procedimiento que hayas usado:<br />
- Borra todas las DNS creadas por el servidor por defecto (en PLESK 9: Desactivar servicio)<br />
- Crea manualmente los registros DNS de las dns que resuelvan el dominio en cuestión.<br />
Es decir si en tu registrador tienes ns1.servidordenombres1.com y ns1.servidordenombres2.com , debes agregar esos dos registros ns, para indicarle al dominio quien va a resolver la ip del dominio son esos DNS.<br />
- Desactiva el servicio de correo del servidor si lo tenías activado.</p>
<p>Ahora tenemos que volver al panel del servidor 1 y añadir una línea en las DNS.<br />
Verás que ahora tienes un IN A <a href="http://www.dominio.com">www.dominio.com</a>  a la ip del servidor 1. Debes duplicarla colocando la ip del servidor 2. De ese modo, cuando alquien llegue al dominio, puede responder una u otra ip y balancear de ese modo la carga entre ambos servidores.</p>
<p>Resetea Named y Apache y en unos minutos empezarás a recibir tráfico en la segunda máquina.<br />
¿Como puedes saberlo? Accede por ssh al servidor 2 e introduce el comando</p>
<p><code><br />
watch 'netstat -anp | grep :80 | wc -l '<br />
</code></p>
<p>De devolverte valores casi cero, pasará a mostrarte el núemro de sesiones de apache abiertas. Eso siginifica que ya empieza a responder a algunas llamadas. De todos modos, el balanceo no será proporcional hasta que pasadas 12/24 hora, se propaguen bien las dns.</p>
<p><strong>El paso 4.<br />
</strong>Ya tenemos un servidor solo para las bases de datos y la carga de Apache balanceada. Notarás la mejoría en el tiempo de respuesta de tu web, una salvajada. De repente verás como el tráfico de tu web sube y no es real, esas visitas de más son las que no eras capaz de servir por falta de máquina antes de poner en marcha todo esto.</p>
<p>Ahora nos falta sincronizar los contenidos.<br />
Aqui tengo que dar las gracias a Francisco Monteagudo, <a href="http://teleobjetivo.org/blog/wordpress-en-dos-servidores-en-paralelo.html" target="_blank">por su post</a>.  No tienes más que seguir la última parte al pie de la letra que copio aquí:</p>
<ol>
<li>Desde la línea de comandos del servidor linux primario, ejecutamos: <em>ssh-keygen -t rsa -b 4096 -f /root/.ssh/id_rsa</em></li>
<li>El comando anterior nos pedirá que introduzcamos una passphrase; la dejamos en blanco.</li>
<li>Ahora, en el directorio de configuración del ssh del usuario root tendremos dos ficheros, id_rsa que contiene la clave privada y id_rsa.pub que contiene la clave pública.</li>
<li>Copiamos la clave pública al servidor linux secundario, al directorio /root/.ssh</li>
<li>En el servidor secundario, vamos al directorio /root/.ssh y buscamos el fichero &#8220;authorized_keys&#8221;. Si el fichero no existe, entonces renombramos el fichero id_rsa.pub que hemos copiado del servidor primario. Si existe, lo editamos y el fichero id_rsa.pub lo añadimos como última línea.</li>
<li>Ahora volvemos al linux primario y creamos el siguiente script:<br />
<blockquote><p><em>#!/bin/sh<br />
rsync -avz secundario:/directoriouploads2 /directoriouploads1<br />
rsync -avz /directoriouploads1 secundario:/directoriouploads2</em> </p></blockquote>
<p>Siendo:</p>
<ul>
<li><strong>secundario:</strong> Dirección IP del servidor secundario.</li>
<li><strong>directoriouploads1</strong>: Directorio de uploads de wordpress en el linux primario.</li>
<li><strong>directoriouploads2:</strong> Directorio de uploads de wordpress en el linux secundario.</li>
</ul>
</li>
<li>Creamos una entrada en el crontab del linux primario para que el script anterior se ejecute cada hora.</li>
</ol>
<p>Mi recomendación es si tienes un cache de WordPress tipo 1Bloger, SuperCache, etc es que los desactives, a no ser que ejecutes la sincronización cada minuto, pero me parece demasiado.</p>
<p>Otra recomendación es que los editores siempre trabajen con el servidor 1. Para que no le responda unas veces el 1 y otra sel 2, debes modificar el archivo hosts que tienes en tu ordenador en la ruta  C:\WINDOWS\system32\drivers\etc\hosts , añadiendo una linea donde le indiques que para ese dominio debe acudir a la IP del servidor 1.</p>
<p>Creo que no me dejo nada. Si crees que se puede hacer de otro modo, te agradecería que hicieses un comentario.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.fernandogomez.es/wordpress-en-varios-servidores-10601/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
	</channel>
</rss>
