guia no 6 apache2 v3

Upload: llova-hernandez

Post on 14-Jan-2016

233 views

Category:

Documents


0 download

DESCRIPTION

Configuracion de servidor apache

TRANSCRIPT

  • Universidad de El SalvadorFacultad de Ingeniera y ArquitecturaEscuela de Ingeniera de Sistemas InformticosComunicaciones II

    Gua de Laboratorio No. 6Servicios Web

    Alto rendimiento y Alta Disponibilidadv3

    Objetivos de aprendizaje: Instalar y configurar de Apache Web Server, como servidor de servicios Web. Configurar servicios web seguros con SSL Configurar servicios de disco duro en red con glusterFs Configurar servicios de sessiones en red con Memcached Configurar servicios web de alto rendimiento. Acceder a carpetas remotas a travs de NFS.

    I. Introduccin:Apache es un servidor http de altas prestaciones y versatilidad, que permite levantar servicios websimples as como; sitios web seguros utilizando certificados SSL. De igual forma Apache dispone deprestaciones para crear Sitios Web de alta concurrencia, a travs de diferentes servidores corriendodicha aplicacin.Esta diseado de forma modular, de tal forma que permite adaptarlo a soluciones simples comoavanzadas. Tanto en mdulos de multi procesamiento como mdulos para acciones especificas.

    Mdulo de bsicos y multiprocesamientoMdulo DescripcinCore Este mdulo es el bsico de apache y siempre ser instalado.

    mpm_common Incluye una coleccin de directas que se pueden implementar cuando se dispone de equipos de ms de un procesador, o con soporte para mtiples hilos.

    prefork Implementa una modalidad de trabajo sin hilos.

    worker Es un mdulo de multiprocesamiento con un hbrido de trabajo en multi-hilos, es el ms utilizado en portales web y aplicaciones empresariales.

    Gua No. 6 Servicios Web -v3-DM 1/25

  • Otros mdulos importantes opcionalesMdulo Descripcinmod_proxy Este mdulo implementa una especie de proxy/gateway para

    Apache. Operando en los protocolos ftp, connect(ssl)m http version 1.0 y 1.1. Puede ser configurador para conectar diversos equipos internos a travs de un portal balanceador externo.

    mod_proxy_balancer Para operar requiere que este activo el mdulo mod_proxy. Se presenta como un algoritmo para asignar a trabajo a servidores internos, a partir de uno balancerador que correl el mdulo.

    mod_rewrite Utiliza reglas para reescribir peticiones de URL al vuelo. Soporta unnmero ilimitado de reglas.

    mod_ssl Este mdulo permite la implementacin del protocolo https, invocando certificados de seguridad SSL. Opera por default en el puerto 443.

    mod_dav Esto mdulo porvee capacidad para acceder tipo WebDav. Esta extensin permite crear, mover, copiar y borrar coleccin de recursos remotos en un servidor web.

    Existe una diversidad de mdulos que pueden utilizarse con Apache, segn sea la necesidad, paramayor referencia puede visitar el sitio de Apache Web Server.

    II. Configuracin de Apache Web Server BsicoApache web server dispone de un arbol de directorio bsico para su configuracin. De tal manera depoder atender servicios http en el puerto 80 por default.

    2.1. Instalacin de ApacheLa instalacin del servidor Apache es relativamente simple, depender en gran medida si requiere quesoporte lenguajes de programacin como php u otro. Para una instalacin simple, sin soporte paralenguajes de programacin, haga los siguiente:

    #aptgetinstallapache2

    Esto instalar apache con los mdulos bsicos. Si su servidor tiene mltiples procesadores el mduloworker ser activado. Si requiere activar php como lenguaje de programacin instale el mdulo que dasoporte a este lenguaje de la siguiente manera:

    #aptgetinstalllibapache2modphp5

    Tome en cuenta que la instalacin de otros componentes de php5 pueden ser necesarios para tener unservicio funcional que soporte este lenguaje. Por ejemplo : php5myslql,ph5pgsql,php5memcached, etc.Algunos de estos mdulos especficos del lenguaje de programacin sern necesarios, en las partessiguientes.

    Gua No. 6 Servicios Web -v3-DM 2/25

  • 2.2. Directotorios y archivos de trabajo

    Directorio / Archivo Descripcin/ect/apache2 Directorio principal de configuracin de Apache.

    /usr/share/doc/apache2 Directorio con ejemplos y material de documentacin de Apache.

    /etc/apache2/sites-available Directorio con los sitios que se han configurador y que pueden ponerse activos.

    /etc/apache2/sites-enable Directorio con los sitios que han sido activados para ser servidos a travs del protocolo respectivo.

    /etc/apache2/mods-available Mdulos instalados y que pueden ser activados.

    /etc/apache2/mods-enabled Mdulos que han sido activados y estn en operacin

    /etc/apache2/apache2.conf Archivo principal de configuracin de apache. Contiene valores como nmero de mximo de conexiones permitidas, entro otros detalles.

    /etc/apache2/ports.conf Archivo que define los puertos en los cuales estar escuchando apache, tanto bsicos como seguros.

    2.3. Configurando un portal web

    A continuacin se configurar, el servicio web para el dominio tortuga.com, de tal manera que puedaatender peticiones a travs del protocolo http.

    /etc/apache2/sitesavailable/tortuga.conf

    ServerNametortuga.comServerAliaswww.tortuga.comServerAdminwebmaster@tortuga.comDocumentRoot/var/www/html/tortuga

    OptionsIndexesFollowSymLinksAllowOverrideNoneRequireallgranted

    ErrorLog${APACHE_LOG_DIR}/tortugaerror.logCustomLog${APACHE_LOG_DIR}/tortugaaccess.logcombined

    Note que se ha creado un archivo de configuracin adicional a los que existen en el directorio. Al cual

    Gua No. 6 Servicios Web -v3-DM 3/25

  • se le ha llamado tortuga.conf

    Tome en cuenta que la directiva DocumenRoot invoca un directorio real, en caso de no existir debercrearlo. En en dicho directorio donde deber disponer de los archivos y aplicaciones web que deseaacceder desde una navegador a travs del servidor.

    2.4. Activando el potal web

    Luego que se ha creado el archivo de configuracin, deber activarse en el archivo que es leido porapache, para ello se hace de la siguiente forma:

    #a2ensitetortuga.conf

    Esta orden buscar en el directorio donde se definen los sitios modsavailable y crear un enlacesimblico al directorio sitesenabled, para poner a disposicin el sitio. El archivo que se le pasacomo parmetro es el que se ha definido anterioremente.

    2.3. Reiniciando el servidor

    Luego de haber efectuado los cambios deber reiniciarse el servidor web.

    #/etc/init.d/apache2restart

    Esta orden leer toda la configuracin de nuevo del directorio /etc/apache2 as como el directoriositeseanbles, y pondr en operacin el portal recin configurado. Cada cambio realizado en unarchivo de configuracin inplicar reiniciar el servicio web.

    2.5. Probando el sitio

    Para probar el sitio, bastar con abrir un navegar web, en la barra de direcciones escribir el url:

    localhost

    Deber de mostrar el contenido alojado en la carpeta /var/www/html/tortuga

    III. Configuracin de Apache Web Seguro

    En ocasiones se requiere que aplicaciones que son accesidas a a travs de un servidor web, tengancierto grado de seguridad. Para ello Apache se apoya en los paquetes openssl, para la creacin decertificados de seguridad encriptados, que son pasados como parmetros en la configuracin, de talmanera de encriptar la conexin entre el cliente y el servidor, a travs de SSL.

    3.1. Instalando aplicacin para creacin de certificados.

    Como se menciona en el prrafo anterior, la aplicacin que permite la creacin de certificados de

    Gua No. 6 Servicios Web -v3-DM 4/25

  • seguridad es openssl y se instala como se indica a continuacin.

    #aptgetinstallopenssl

    3.2. Creando certificados de seguridadA continuacin se describir la forma de crear certificados de seguridad robustos, utilizando un llavede mas de 1024 bits, de tal manera que se cuente con un modelo de encriptacin potente.

    3.2.1 Crear una carpeta ssl en el directorio de apache.#cd/etc/apache2#mkdirssl#cdssl

    3.2.2.Creando el certificado y la llave privada de la autoridad certificadora

    #opensslreqx509newkeyrsa:2048days365keyoutcakey.pemoutcacert.pemnodes

    Al efectuar esta accin de forma interactiva, la orden le pedir los datos que se detallan a continuacin.

    CountryName:SVStateorProvinceName:ElSalvadorLocalityName:SanSalvadorOrganizationName:TortugaS.A.deC.V.OrganizationalUnitName:InformaticaCommonName:ca.tortuga.comEmailAddress:[email protected]

    Note que en una sola orden se crear el certificado de la entidad certificadora CA llamado cacert.pem, as como la llave con la cual se firmarn los certificados. La llave tiene un valor de 2048 bits de tamao.

    3.2.3. Creando el certificado para el dominio principal tortuga.com

    #ddif=/dev/urandomof=randseed.bincount=2#opensslgenrsaoutclaveprivada.pemrandrandseed.bin4096#opensslreqnewkeyclaveprivada.pemoutcertificado.pem

    La ltima orden nuevamente volver a pedir la informacin respecto al dominio, ahora si ser importante brindar la informacin completa del dominio que se proteger.

    CountryName:SVStateorProvinceName:ElSalvadorLocalityName:SanSalvadorOrganizationName:TortugaS.A.deC.V.OrganizationalUnitName:InformaticaCommonName:tortuga.com

    Gua No. 6 Servicios Web -v3-DM 5/25

  • EmailAddress:[email protected]

    Note que el CommonName, ahora se llama tal cual el dominio que se desea proteger: tortuga.com

    3.2.4 Firmando el certificado

    Ahora que se ha creado el certificado que ser invocado desde apache, deber firmarse con la entidad certificadora propia creada, a travs de cacert.pem, como se muestra a continuacin.

    Para ello ser necesario contar con un archivo de configuracin bsico, que se le pasar como parmetro a la orden. Para lo cual creelo de la siguiente forma.

    #nanoconfigservidor.cnf

    Llnelo con la informacin siguiente:

    basicConstraints=critical,CA:FALSEextendedKeyUsage=serverAuth

    Luego gurdelo y procesa con la siguiente orden, para firmar el certificado que ser invocado por Apache.

    #opensslx509CAcacert.pemCAkeycakey.pemreqextfileconfigservidor.cnfincertificado.pemdays365CAcreateserialsha1outcertificadoservidor.pem

    Tome en cuenta que es una sola orden. Note que que al certificado creado en el punto anterior, ahora se esta firmando a travs de cacert.pem as como la llave cakey.pem. Note que el archivo creado se le ha pasado como parmetro el archivo recin creado.

    Si se ha completado con xito hasta esta parte, ya se tiene capacidad para vincular los certificados en la configuracin de apache.

    3.3. Activando mdulo SSL

    Para poder usar los certificados de seguridad recin creados, ser necesario activar el mdulo SSL en apache, para ello realice la siguiente accin:

    #a2enmodssl

    3.4. Creando el archivo de configuracin con SSL

    Para levantar finalmente la configuracin a travs de SSL, deber crear el archivo de configuracin conla correspondiente informacin referente a los certificados recin creados, como se muestra a continuacin.

    Gua No. 6 Servicios Web -v3-DM 6/25

  • /etc/apache2/sitesavailable/tortugassl.conf

    SSLEngineOnSSLCertificateKeyFile/etc/apache2/ssl/claveprivada.pemSSLCertificateFile/etc/apache2/ssl/certificadoservidor.pemSSLCACertificateFile/etc/apache2/ssl/cacert.pem

    [email protected]/var/www/html/tortugaSSLRequireSSLOptionsFollowSymLinksAddOutputFilterByTypeDEFLATEtext/html

    ErrorLog${APACHE_LOG_DIR}/tortugasslerror.logCustomLog${APACHE_LOG_DIR}/tortugasslaccess.logcombined

    BrowserMatch"MSIE[26]"\nokeepalivessluncleanshutdown\downgrade1.0forceresponse1.0

    #MSIE7andnewershouldbeabletousekeepaliveBrowserMatch"MSIE[179]"ssluncleanshutdown

    No te que se le est pasando como parmetro los archivos recin creados. El certificado del servidor, la llave, as como la entidad certificadora. La otra configuracin son parametros iguales a un servidor normal sin SSL.

    3.4.5. Pruebas

    Para poder realizar las pruebas respectivas deber activar el sitio y reiniciar el servicio como se indica en prrafos anteriores y verificar el servicio accediendo a travs de una navegador web y escribiendo enla barra de direcciones la direccin:

    https://localhost

    El servicio deber responderle con el contenido de la carpeta /var/www/html/tortuga

    3.5. Creando un certificado Cliente.

    En ocasiones es importante protoger las conexiones tanto del lado del servidor como del lado del cliente, para ello, apoyados siempre en SSL, creamos un certificado de seguridad para el cliente, y se leconfigura al servidor para en las conexiones a ese servicio el cliente se certifique ante l, a travs de un certificado vlido. En otras palabras, si el cliente tiene instalado el certificado en el navegador no podracceder a los contenidos proveidos por el servidor web.

    Gua No. 6 Servicios Web -v3-DM 7/25

  • Un escenario donde esto sea requerido podra ser los equipos de los cajeros en un banco que acceden a una aplicacin web interna a travs de la red.

    3.5.1. Creando el certificado cliente

    Similar a como se cre el certificado para el servidor, se crea el certificado cliente, el cual deber firmarse posteriormente por la entidad certificadora para que lo valide.

    #ddif=/dev/urandomof=randseed.bincount=2#opensslgenrsaoutclavecliente.pemrandrandseed.bin4096#opensslreqnewkeyclavecliente.pemoutcertificadoclientereq.pem

    Nuevamente pedir los datos:

    CountryName:SVStateorProvinceName:ElSalvadorLocalityName:SanSalvadorOrganizationName:TortugaS.A.deC.V.OrganizationalUnitName:InformaticaCommonName:tortuga.comEmailAddress:[email protected]

    Tenga en cuenta que el CommonName deber corresponder con el que fue creado el certificado del servidor en este caso: tortuga.com.

    3.5.2. Firmando el certificado cliente

    Al igual que el certificado del servidor, el certificado de cliente deber firmarse por la entidad certificadora propia a travs del cacert.pem y la clave cakey.pem.

    Deber pasar como parmetro el archivo de configuracin siguiente:

    /etc/apache2/ssl/configcliente.cnf

    basicConstraints=critical,CA:FALSEextendedKeyUsage=clientAuth

    Note que la configuracin de este archivo es equivalente a la del servidor; en tal caso lo que cambia es la opcin extendedKeyUsage=clientAuth

    #opensslx509CAcacert.pemCAkeycakey.pemreqincertificadoclientereq.pemdays365extfileconfigcliente.cnfCAcreateserialsha1outcertificadocliente.pem

    Tome en cuenta que es una sola lnea.

    Gua No. 6 Servicios Web -v3-DM 8/25

  • 3.5.3. Exportando el certificado cliente

    Luego de crearlo y firmarlo se proceder a exportarlo a un formato que el navegador web puda leer, para ello se hace de la siguiente forma.

    #opensslpkcs12exportincertificadocliente.peminkeyclavecliente.pemcertfilecacert.pemoutcliente.p12

    Como es un certificaodo de seguridad, al ejecutar la orden le pedir un clave, que ser requerida cuando est importando el certificado a travs de un navegador web. Escriba como clave cos215.

    3.5.4. Activando Apache para que pida certificado cliente

    Luego de concluir el proceso, deber activarse en la configuracin del portal seguro, para que Apache solicite un certificado al cliente que se conecta al servicio, para ello, modifique el archivo de configuracin tortugassl.conf. Agregando las lneas marcadas en color.

    /etc/apache2/sitesavailable/tortugassl.conf

    SSLEngineOnSSLCertificateKeyFile/etc/apache2/ssl/claveprivada.pemSSLCertificateFile/etc/apache2/ssl/certificadoservidor.pemSSLCACertificateFile/etc/apache2/ssl/cacert.pem

    SSLVerifyClientrequireSSLVerifyDepth2SSLOptions+FakeBasicAuthSetEnvIfUserAgent".*MSIE.*"nokeepalivessluncleanshutdown

    [email protected]/var/www/html/tortugaSSLRequireSSLOptionsFollowSymLinksAddOutputFilterByTypeDEFLATEtext/html

    ErrorLog${APACHE_LOG_DIR}/tortugasslerror.logCustomLog${APACHE_LOG_DIR}/tortugasslaccess.logcombined

    BrowserMatch"MSIE[26]"\nokeepalivessluncleanshutdown\downgrade1.0forceresponse1.0

    #MSIE7andnewershouldbeabletousekeepaliveBrowserMatch"MSIE[179]"ssluncleanshutdown

    Gua No. 6 Servicios Web -v3-DM 9/25

  • Como ha modificado el archivo deber reiniciar el servicio para que los cambios tengan efecto.

    3.5.5. Importar Certificado de Seguridad

    Para poder conectarse al servidor, deber configurar el navegador cliente importando el certificado de seguridad creado en la seccin anterior.

    IV. Apache Web Server con alta Disponibilidad/Alto Rendimiento

    En portales web o aplicaciones web con alta concurrencia, se vuelve necesario, configurar arquitecturasque permitan escalar de tal manera de disponer de mayor nmero de conexiones hacia los servicios. Apache dispone mdulos capaces de implementar algoritmos que le permiten realizar un balanceo de carga a travs de un pool de conexiones, y desviarlas para ser procesadas a mltiples servidores, como se detalla en la imagen siguiente:

    Si se toma en cuenta que cada servidor podra atender 150 conexiones, esto quiere decir que el servidoren su conjunto podr anteder 150*4, en su defecto si se agregan mas servidores numero-mximo * n servidores.

    Para efectos prcticos de esta gua se llamar Balanceador al que admite las peticiones y Nodos a los

    Gua No. 6 Servicios Web -v3-DM 10/25

    Internet

    Apache1Servidor

    real

    Apache2Servidorreal

    Apache3Servidor

    real

    Apache4Servidor

    real

    BalanceadorApache

    DMZ

  • servidores reales.

    En configuraciones reales fuera de laboratorio, siempre es necesario contar con ms de un Balanceador, de tal manera que pueda entrar en operacin en caso que el Balanceador primario falle. Por lo general este mecanismo se hace a travs de Heartbeats+IPVS; que con siste una direccin IP virtual que es asignada a cada balanceador para tomar el control del trfico, este componente querar fuera de esta gua pero se detalla para que pueda documentarse si lo desea.

    Para la configuracin siguiente se asumir la infraestructura siguiente:

    Servidor Direccion IPBalanceador Externa 172.16.0.1

    Balanceador Interna 172.16.100.1

    Nodo1 172.16.100.2

    Nodo2 172.16.100.3

    4.1 Configurando Balanceador

    Como es el que estar al frente, este deber tener configurada las dos interfaces de red, segn el detalle del cuadro anterior, con la correspondiente direccin IP.

    #ifconfigeth0172.16.0.1netmask255.255.255.0up#ifconfigeth1172.16.100.1netmask255.255.255.0up

    El balanceador ser el encargado de atender las peticiones de servicios http en la interfaz de red eth0, para ello ser necesario activar en dicho servidor algunos mdulos como se detalla a continuacin.

    4.1.1. Activando mdulos

    #a2enmodproxy#a2enmodproxy_http#a2enmodproxy_balancer#a2enmodproxy_ftp

    4.1.2. Crear archivo de configuracin.

    El archivo de configuracin har referencia a los servidores internos reales, para tal caso se asumir la inform

    Gua No. 6 Servicios Web -v3-DM 11/25

  • /etc/apache2/sitessitesavailable/tortugabalanceador.confServerAdmininformatica@tortuga.comServerNametortuga.comServerAliaswww.tortuga.comDocumentRoot/var/www/htmlProxyRequestsOff

    Orderallow,denyAllowfromall

    #BalanceadordecargaProxyPass/balancermanager!ProxyPass/balancer://clusters/stickysession=PHPSESSIDnofailover=OffBalancerMemberhttp://172.16.100.2route=aBalancerMemberhttp://172.16.100.3route=bProxySetlbmethod=byrequests#ProxyPassReverse/balancer://clusters/

    Note que el archivo de configuracin es simple, la seccin Proxy balancer, se le indica como parmetrode configuracin las direcciones IP de los nodos que atendern de forma real las peticiones que llegan al servidor.La directiva ProxySet, determina el algoritmo que ser utilizado para atender las peticiones en este caso, segn byrequest; es decir, la primera peticin que llega se la pasar al Nodo1 y la segunda peticin al Nodo2 y as sucesivamente. Para mayor referencia de los mtodos y algoritmo de tratamiento de peticiones remtase a la documentacin de Apache respecto a este mdulo.

    El parmetro pasado como route=a es un identificador que ser reconocido de forma nica para poder enviarle peticiones y algunos parmetros de configuracin. Dicho parmetro deber coincidir cuando se configure el Nodo correspondiente.

    Para el caso de aplicaciones como Moodle, la directiva ProxyPreserveHost, debe desactivarse, si no Moodle interpreta que las peticiones de acceso son de distinto sitio.

    En caso de necesitar ms VirtualHost, deber establecerse un archivo adicional y crear un puerto distinto para que pueda ser alcanzado por el proxy.

    4.1.3. Activando el portal web

    Como se ha indicado en las secciones anteriores activar el portal web, implica la orden siguiente:

    #a2ensitetortugabalanceador.conf

    Gua No. 6 Servicios Web -v3-DM 12/25

  • Luego deber reiniciar el servidor para que los cambios tengan efecto.

    4.2. Configurando Nodos

    Recuerde que los nodos son los Servidores Apache que atendern las peticiones de forma real, transferidas por el balanceador. Como se pretende tener una aplicacin completamente funcional, para ello ser necesario la instalacin de ciertos paquetes que permitirn de forma real tener servicios.

    4.2.1. Configurando Apache Nodo1

    En el Nodo 1 deber configurar el archivo correspondiente para activar los servicios web en escucha del balanceador, como se muestra en el archivo siguiente.

    /etc/apache2/sitessitesavailable/tortuganodo.conf ServerAdmin [email protected] ServerName tortuga.com RewriteEngine On RewriteRule .* - [CO=PHPSESSID.balancer.a:.172.16.100.2] DocumentRoot /mnt/tortuga/html Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all ErrorLog ${APACHE_LOG_DIR}/error.log LogLevel warn CustomLog ${APACHE_LOG_DIR}/access.log combined

    Es de tomar en cuenta que en este archivo de configuracin la sessin que ser atendida por el Nodo deber corresponder al parmetro router configurado en el balanceador, como se detalla en la lnea:

    RewriteRule .* - [CO=PHPSESSID.balancer.a:.172.16.100.2]

    4.2.2. Activando mdulos en Nodo

    Note que se est haciendo referencia al mdulo Rewrite, el cual deber ser activado, como se detalla a continuacin.

    #a2enmodrewrite

    4.2.3. Configurando Apache Nodo2

    En el Nodo 1 deber configurar el archivo correspondiente para activar los servicios web en escucha del balanceador, como se muestra en el archivo siguiente.

    Gua No. 6 Servicios Web -v3-DM 13/25

  • /etc/apache2/sitessitesavailable/tortuganodo.conf ServerAdmin [email protected] ServerName tortuga.com RewriteEngine On RewriteRule .* - [CO=PHPSESSID.balancer.b:.172.16.100.3] DocumentRoot /mnt/tortuga/html Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all ErrorLog ${APACHE_LOG_DIR}/error.log LogLevel warn CustomLog ${APACHE_LOG_DIR}/access.log combined

    Al igual que el Nodo1, es de tomar en cuenta que en este archivo de configuracin la sessin que ser atendida por el Nodo deber corresponder al parmetro router configurado en el balanceador, como se detalla en la lnea:

    RewriteRule .* - [CO=PHPSESSID.balancer.b:.172.16.100.3]

    4.2.4. Activando mdulos en Nodo

    Note que se est haciendo referencia al mdulo Rewrite, el cual deber ser activado, como se detalla a continuacin.

    #a2enmodrewrite

    Luego de haber configurado deber activar los sitios como se ha indicado en secciones anteriores y reiniciar el servicio de Apache en cada uno de los Nodos.

    4.2.5. Pruebas

    Para realizar las pruebas bastar con crear la carpeta especifica en el DocumentRoot de cada Nodo, un archivo diferente, y hacerle peticiones al balanceador, ver como segn cada peticin, intercambia entreel Nodo1 y Nodo2.

    4.3. Memcached para almacemiento de Sessiones

    Los servicios configurador en la secciones anteriores con Alta Diponibildiad y Alto Desempeo, sern perfectamente funcionales en aplicaciones Web estticas, es decir que no requieran autenticacin.Cuando se dispone de aplicaciones web ms sofisticadas es necesario contar con un mecanismo que guarde la sessin de tal manera que los nodos no tengan necesidad de preocuparse por ellas, si no mas bien, mientras un usuario se ha autenticado en un nodo, los dems puedan leer el dato de la sesin sin necesidad de volver a solicitar que el usuario vuelva a autenticarse.

    Gua No. 6 Servicios Web -v3-DM 14/25

  • Memcached es un servicio que implementa sessiones; entre otras tareas. Posee una velocidad extraordinaria para atender peticiones ya que los datos son almacenados en Memoria Ram, y no en disco de tal manera de disponer de ellos inmediatamente. Servicios renombrados en la nube como Twitter, entre otros utilizan esta herramienta para el tratamiento de sus sesiones.

    4.3.1. Instalar Servidor Memcached

    #aptgetinstallmemcached

    Si todo marcha bien se instalar el servicio y se habilitar el socket segn cada direccion IP que posea el servidor en el puerto 11211. Puede acceder al archivo de configuracin en la ruta: /etc/memcached/memcached.confHasta este momento se tiene activo el servicio que atender peticiones de sesin desde servidores Apache. Desde el lado de la aplicacin deber indicrsele de que forma deber atender dichas peticiones.

    4.4. Lenguaje de programacin Web

    Como las aplicaciones web son tan populares en la actualidad implementar un servicio de alta concurrencia y alta disponibilidad tiene sentido cuando se accede a una aplicacin que tenga alta concurrencia, para ello a continuacin se instalar PHP5, y se configurar para que las sessiones sean guardadas en un servidor Memcached en lugar de archivos locales.

    4.4.1. Instalando paquetes PHP5 en cada uno de los Nodos

    #apt-get install php5 php5-ldap php5-mysql php5-intl php5-gd php5-ldap php5-pgsql php5-mssql php5-curl php5-xmlrpc php-pear php-apc php5-recode php5-memcached

    De todos los paquetes que se pasan para instalar php5-memcached es el que nos dar la capacidad de que PHP5 pueda almacenar las sesiones en un servidor Memcached. Para otros lenguajes de programacin deber remitirse a la documentacin del lenguaje para realizar esta tarea.

    4.4.2. Configurando el guardado de sesiones de cada Nodo en el Servidor Memcached

    Luego de instalados deber de decirle a cada Nodo donde deber buscar la sesin creada por usuario, para ello deber editar el archivo de configuracin de PHP, con la orden siguiente:

    #nano /etc/php5/apache2/php.ini

    Buscar en el archivo la sessin que hace referencia a la directiva session.save_handler que actualemte deber aparecer para guardar en archivos y cambiar por las lneas siguientes:

    session.save_handler = memcache session.save_path = "tcp://172.16.100.4:11211?persistent=1&weight=1&timeout=1&retry_interval=15"

    Gua No. 6 Servicios Web -v3-DM 15/25

  • Note que la ruta TCP apunta a una direccin IP distinta de los nodos. Lo recomendable es siempre contar con un servidor dedicado para servir Memcached con una buena capacidad de Memoria RAM.

    4.5. Consideraciones generales

    Tome en cuenta que para que este escenario sea funcional, usted deber de disponer de un directorio servido a travs de NFS server, con los archivos correspondientes a la aplicacin que desea poder comoalta disponibilidad, por lo tanto requerir de un servidor adicional con NFS Server.

    Igualmente para que los servicios operen sin problemas sobre todo si se dispone de servicios que acceden a bases de datos, ser necesario con tar con un servicio NTP, para mantener sincronizados los relojes de cada uno de los servidores utilizados.

    V. Gluster FS

    GlusterFS es un Sistema Distribuido de Archivos del tipo Open Source, que brinda las capacidad de crecer y escalar en cuanto a almacenamiento, hasta un valor que alcanza los petabytes. Igualmente como es un disco distribuido en un espacio de red, mientras ms equipos sean pegados al arreglo de red, brindar mayor capacidad para aceptar a miles de clientes. Para ms detalle vea la figura siguiente.

    Gluster soporta clientes estandar a travs de diferentes protocolos de archivos como pueden ser: glusterfs (nativo), nfs, samba, entre otros. Cada uno de los diferentes protocolos deber de ser adaptadosegn la necesidad de las aplicaciones o de los usuarios.

    En otras palabras glusterFS brinda la capacidad de crecer y escalar en caliente agregando ms dispositivos a un volumen ya creado, sin alterar la funcionabilidad de los dispositivos ya instalados.

    Para el desarrollo del ejemplo siguiente, tomo en cuenta la topologa que se plantea a continuacin:

    Gua No. 6 Servicios Web -v3-DM 16/25

  • Se segurin los pasos para configurar un arreglo con GlusterFS, segn la figura anterior, aspectos relacionados al tipo de arreglo, quedarn fuera de la gua, puede documentarse en el portal del paquete.

    Para realizar la configuracin completa se realizar la instalacin de glusterfs, la preparacin de las particiones de disco en cada uno de los servidores as como, la creacin del volumen virtual que se compartir en la red.

    5.1. Instalando glusterfs

    #aptgetinstallglusterfsserver

    5.2. Preparacin de particiones en cada uno de los Nodos

    Para disponer de un espacio de almacenamiento en cada Nodo, ser necesario preparar las particiones que participarn del volumen virtual. Tome en cuenta que glusterfs trabaja a travs de bloques de disco para integrarlos a un volumen llamados bricks. Los bricks son la unidad bsica de disco que se integra a un volumen, para hacerlo crecer y escalar.

    Asumiremos que cada nodo dispone de una particin de disco, que estar disponible para utilizarla en el arreglo, para esta gua se asumir cada Nodo dispone de un 1Gb de espacio donde se crearn dos bricks por cada servidor de 500Mb de espacio cada uno.

    Gua No. 6 Servicios Web -v3-DM 17/25

    Nodo1172.16.100.2

    Red

    Nodo2172.16.100.3

    Nodo3172.16.100.4

    Nodo4172.16.100.5

    Discoduroadisposicindelaredydeusuarios

  • Para prerapar la particin siga los pasos siguientes, asumiendo que el disco es: /dev/sdbse crearn dos particiones de 500Mb cada una.

    5.2.1. Instalando parted

    Parted es una aplicacin que parmite la manipulacin de las tablas de particiones de discos, de diferentes tamaos y etiquetas.

    #aptgetinstallparted

    5.2.2. Preparando particin

    Para el caso de la gua se ha agregado un nuevo disco a la mquina virtual (Ir a configuracin+Almacenamiento+Control: SATA) a cada uno de los servidores que harn los Nodos de glusterfs.

    Luego de arrancar es necesario, entonces listar los discos que estn en el sistema; para ello hacemos lossiguiente:

    #fdiskl

    Esto nos devolver una salida como la siguiente:

    Disk/dev/sda:8589MB,8589934592bytes255heads,63sectors/track,1044cylinders,total16777216sectorsUnits=sectorsof1*512=512bytesSectorsize(logical/physical):512bytes/512bytesI/Osize(minimum/optimal):512bytes/512bytesDiskidentifier:0x0002bb1a

    DeviceBootStartEndBlocksIdSystem/dev/sda1*204815988735799334483Linux/dev/sda215990782167751673921935Extended/dev/sda5159907841677516739219282Linuxswap/Solaris

    Disk/dev/sdb:8589MB,8589934592bytes255heads,63sectors/track,1044cylinders,total16777216sectorsUnits=sectorsof1*512=512bytesSectorsize(logical/physical):512bytes/512bytesI/Osize(minimum/optimal):512bytes/512bytesDiskidentifier:0x00000000

    Note que hay dos discos en el equipo, uno que logra reconocer la orden fdiskl (/dev/sda), y muestra su contenido y otro que no tiene una tabla de particin creada (/dev/sdb); en el cual se trabajar.

    Entramos al modo de configuracin de parted.

    Gua No. 6 Servicios Web -v3-DM 18/25

  • #parted/dev/sdb(parted)

    Listando las particiones actuales.

    (parted)printError:/dev/sdb:unrecogniseddisklabelModel:ATAVBOXHARDDISK(scsi)Disk/dev/sdb:8590MBSectorsize(logical/physical):512B/512BPartitionTable:unknownDiskFlags:

    Note que se ha utilizado dentro de parted la orden print, si usted desea conocer todas las posibles rdenes puede utilizarhelp.

    Este disco posee 8590 Mb de espacio, al cual an no se le ha definido una tabla de particiones.

    Debe de tomar en cuenta que cuando se est trabajando con servicios de este tipo; los arreglos de discosdebern de crearsele una tabla de particiones acorde. En otras palabras, la tabla de particiones mostradaanteriormente corresponde con un tipo msdos, utilizada en sistemas Linux y Windows, donde se requiere alguna particin para botear; pero si nicamente se trabaja con discos de almacenamiento es recomendable utilizar una tabla con etiquetagpt, que permitir crear particiones grandes.

    Lo primero que debe hacer es crearle una etiqueta para la tabla de particiones; de tal manera, que puedatrabajar en l sin problema con el tipo de archivo xfs. Para ello haga lo siguiente:

    (parted)mklabelNewdisklabeltype?gpt

    Note que se le est pasando como tipo de label para la tabla de particiones gpt. Luego de esta accin, eldisco podr estar listo para empezar a agregar las particiones que se desean.

    Volvamos a ver la tabla de particiones del disco con la orden print.

    (parted)printModel:ATAVBOXHARDDISK(scsi)Disk/dev/sdb:8590MBSectorsize(logical/physical):512B/512BPartitionTable:gptDiskFlags:

    NumberStartEndSizeFilesystemNameFlags

    A diferencia de la primera salida de print, en los prrafos anteriores; ahora, ya reconoce la tabla de particiones (Partition Table).

    Gua No. 6 Servicios Web -v3-DM 19/25

  • A partir de esto, ya se est listo para crear particiones nuevas. Se crearn cuatro particiones de 500Mb cada una. De la siguiente forma.

    (parted)mkpartPartitionname?[]?1Filesystemtype?[ext2]?xfsStart?1End?5001

    Ahora vea la salida siguiente el print de particiones en parted(parted)printModel:ATAVBOXHARDDISK(scsi)Disk/dev/sdb:8590MBSectorsize(logical/physical):512B/512BPartitionTable:gptDiskFlags:

    NumberStartEndSizeFilesystemNameFlags11049kB5001MB5000MBxfs1

    Note que se creo la particin de 500MB. Ahora se crear una segunda particin, usted puede proceder acrear el resto de particiones.

    (parted)mkpartPartitionname?[]?2Filesystemtype?[ext2]?xfsStart?501End?1001

    El inicio de la segunda particin deber coincidir con el final de la particin anterior. La salida ahora con print es:

    (parted)printModel:ATAVBOXHARDDISK(scsi)Disk/dev/sdb:8590MBSectorsize(logical/physical):512B/512BPartitionTable:gptDiskFlags:

    NumberStartEndSizeFilesystemNameFlags11049kB501MB500MB12501MB1001MB500MB2

    Se han definido las dos particiones con nombres 1 y 2; de tal manera que de forma lgica en el sistema operativo corresponder a /dev/sdb1 y /dev/sdb2, respectivamente.

    Gua No. 6 Servicios Web -v3-DM 20/25

  • 5.2.3. Formateando particin

    Luego de crear la particin deber proceder a formatearla, con un sistema de archivos xfs, el cual tiene como funcionabilidad permitir archivos grandes mas all de los 4Gb.

    #mkfs.xfsisize=512/dev/sdb1

    Si la orden anterior le devuelve error, puede ser que el paquete que da soporte al sistema de archivos xfs no est instalado. Deber instalar el paquete xfsprogs.

    Si todo marcha bien, deber de devolverle una salida con la informacin de la nueva particin recin formateada.metadata=/dev/sdb1isize=512agcount=4,agsize=30528blks=sectsz=512attr=2,projid32bit=1=crc=0finobt=0data=bsize=4096blocks=122112,imaxpct=25=sunit=0swidth=0blksnaming=version2bsize=4096asciici=0ftype=0log=internallogbsize=4096blocks=855,version=2=sectsz=512sunit=0blks,lazycount=1realtime=noneextsz=4096blocks=0,rtextents=0

    5.2.4. Montando la particin en el Nodo local

    Deber crear una ruta de directorios de trabajo para montar las particiones creadas.

    #mkdirp/srv/sdb1/brick#mount/dev/sdb1/srv/sdb1/brick

    #mkdirp/srv/sdb2/brick#mount/dev/sdb2/srv/sdb2/brick

    Tenga en cuenta que por cada particin que prepare en el equipo, siempre deber crear una carpeta paralos brick de dicha particin. Si creara una particin adicional /dev/sdb3, igualmente deber de trabajar los correspondientes directorios.

    Puede verificar que las particiones estn debidamente montadas con la orden dfh.

    5.2.5. Creando las entradas en archivo fstab

    Es necesario que las particiones trabajas, sean montadas cuando el sistema operativo arranque, para elloes necesario crear las entradas correspondiente en el archivo /etc/fstab. Agregando la entrada paradicha particin o particiones, si fuese el caso, al final del archivo.

    Gua No. 6 Servicios Web -v3-DM 21/25

  • /etc/fstab....#ParaGlusterfs/dev/sdb1/srv/sdb1/brickxfsdefaults00/dev/sdb2/srv/sdb2/brickxfsdefaults00

    Si usted agrega los parmetros correspondientes a este archivo y por alguna razn no se han montado las particiones al arranque del SO; podra montarlas todas de una vez con la orden: mounta&&mount.

    5.3. Configurando el volumen

    Un volumen en glusterfs tiene el mismo significado que en un disco tradicional. La nica diferencia es que se crear un volumen virtual a travs de la red, del cual formarn parte muchos bricks.

    A este punto se asumir que ya se tienen preparados todos los nodos, con las particiones debdamente formateadas y montadas, as como glusterfs instalado.La configuracin que se detalla a continuacin podr realizarla en cualesquiera de los Nodos de glusterfs. Recuerde que este es un disco duro de red, que no residir en ningn espacio de cada servidor si no msbien en el espacio en conjunto de cada nodo.

    5.3.1. Agregando Nodos

    Para agregar nodos a un volumen nuevo, se debe de efectuar una prueba inicial al nodo. A travs de dicha prueba glusterfs-server local descubre y agrega al nodo para poder utilizar los bricks con lo que este cuenta. A continuacin se detalla el descubriemiento del Nodo propio del servidor, as como un Nodo remoto, para poder agregar los bricks al volumen.

    Asumiendo que se est en el Nodo1, deber de corrrse las siguientes rdenes.

    #glusterpeerprobe172.16.100.2#glusterpeerprobe172.16.100.3#glusterpeerprobe172.16.100.4#glusterpeerprobe172.16.100.5

    Note que la primera direccin IP corresponde con el Nodo donde se estn realizando las configuraciones. Este valor deber de devolver un mensaje notificando que no es necesario que se testee el nodo, por ser local.

    5.3.2. Creando volumen Distribuido y Replicado (Distributed Replicated)

    #glustervolumecreategv0replica2172.16.100.2:/srv/sdb1/brick172.16.100.3:/srv/sdb1/brick172.16.100.4:/srv/sdb1/brick172.16.100.5:/srv/sdb1/brickCreationoftestvolumehasbeensuccessful

    Gua No. 6 Servicios Web -v3-DM 22/25

  • Pleasestartthevolumetoaccessdata.

    Se est creado un volumen replicado con replica 2, esto quiere decir para que el volumen escale en tamao deberan agregarse dos bricks en cada vez; de tal manera que los datos estn en forma de espejo,pero que la vez permita crecer el disco duro. Es importante que los pares estn en servidores o Nodos diferentes para que la replica tenga sentido.Si todas las particiones creadas para este caso son de 500Mb, el volumengv0 tendr un tamao de 1Gb auque se hayan agregado 4 Nodos.

    Si la orden anterior no se ejecuta exitosamente, puede ser necesario agregar el parmetro force al final.

    Para mayor referencia de los modos de crear volumenes virtuales remitase a la Gua de Administracin de GlusterFS.

    5.3.3. Iniciando el volumen

    Luego que se ha creado el volumen, deber de iniciarse, para poder hacer uso del espacio de almamiento creado.#glustervolumestartgv0

    5.3.4. Mostrando la informacin del volumen

    Cuando ya se ha creado el volumen, no podr verlo como un disco duro ms en su equipo, a no ser que lo monte en una ruta especfica. Para ver la informacin en cuanto a nodos y tipo, usted puede hacerlo con la siguiente orden:

    #glustervolumeinfogv0

    5.3.5. Montando el volumen

    Hasta este punto ya deber de tenerse el volumen gv0 como disco duro virtual, o servicio de archivos en la Nube. Para hacer uso de dicho espacio de almacenamiento, nicamente se deber de disponer de una carpeta local en los Nodos Apache como punto de montaje.

    A continuacin se crear un punto de montaje, as como se realizar el montaje del mismo, con el sistema de archivos nativo de glusterfs.

    #mkdir/mnt/gluster#mounttglusterfs172.16.100.2:/gv0/mnt/gluster

    Tome en cuenta que como es un servicio creado a partir de la nube, y correo en los cuatro Nodos, usted podr utilizar cualesquiera de los nodos para invocar al volumen virtual gv0; de tal suerte de que la orden anterior podr funcionar con cualesquiera de las IP de los nodos.

    Gua No. 6 Servicios Web -v3-DM 23/25

  • Ya montado el volumen usted podr disponer de l como una carpeta ms. A medida que vaya agregando bricks de Nodos adicionales al volumen, este crecer en tamao hasta alcanzar un valor de petabytes.

    Igualmente si uested desea que el volumen se monte al arranque deber de crear las entradas correspondientes en el archivo /etc/fstab.

    5.3.6. Montando el volumen con NFS

    Glusterfs implementa de forma alternativa los protocolos de archivos NFS v3, y CIFS/Samba. El primero para trabajar en ambientes GNU/Linux, y el segundo para ser accedidos a traves de ambientes Windows.Para montar el volumen virtual gv0 creado, cree una carpeta que sirva como punto de montaje. El nombre de la carpeta es indiferente.

    #mkdir/mnt/nfs#mounttnfsovers=3172.16.100.2:/gv0/mnt/nfs

    Por default glusterfs server no soporta conexiones NFS a travs de puertos UDP, por lo tanto si el cliente devuelve error al tratar de realizar la accin anterior, usted deber especificar que trabajar la peticin con puertos TCP.

    #mounttnfsomountproto=tcp,vers=3172.16.100.2:/gv0/mnt/nfs

    5.3.7. Expandiendo el volumen

    La idea de glusterfs es tener un volumen virtual que pueda crecer segn la infraestructura de servidores que vayan siendo agregados a la red. Esto sin necesidad de detener o desmontar el volumen cuando se encuentre montado. Entonces para expandir el volumen anterio gv0, recuerde que deber agregar al menos dos bricks ms, puesto que se tiene una replica dos. Para ello haga lo siguiente.Si fuera el caso que se han agregado dos servidores nuevos con las siguientes direcciones IP 172.16.100.6 y 172.16.100.7; a los cuales se les ha realizado las mismas configuraciones en cuanto a particiones, como los restante cuatro ya agregados al volumen.

    Se detectan los Nodos debidamente configurados con glusterfs.#glusterpeerprobe172.16.100.6#glusterpeerprobe172.16.100.7

    Se expande el volumen:

    #glustervolumeaddbrickgv0172.16.100.6:/srv/sdb1/brick172.16.100.7:/srv/sdb1/brick172.16.100.6:/srv/sdb2/brick172.16.100.7:/srv/sdb2/brick

    Gua No. 6 Servicios Web -v3-DM 24/25

  • VI. Requerimiento de Laboratorio.

    En equipos como mximo de tres participantes y a partir de la topologa anterior; apoyndose en las herramientas GNS3 y VirtualBox se le pide:

    1. Implementar un Portal Web con un CMS de su eleccin con capacidades Web 2.0.2. Brindar capacidades de Alta Redundancia y Alto Rendimiento a travs de Apache.3. Implementar un servicio para el almacenamiento y consulta de Sesiones a travs de Memcached.4. Implementar un servicio de Bases de Datos con MySQL como soporte del CMS.5. Implementar NAT 1:1, en el Firewall de frontera para renviar las peticiones al Balanceador de Carga.6. Implementar el servicio NFS, para brindar carpetas remotas a los Nodos, a travs de GlusterFS, con los Nodos 1,2,3 y 4 de Apache participen del Disco de Red.7. Implementar un servicio Web Https, para la seccin de Autenticacin de Usuarios al CMS8. Implementar un servicio Web Http, para consultas generales al CMS.9. Implementar un servicio de DNS, para el establecimiento de Nombres de Dominio para la infraestructura.10. Implementar un servicio de monitoreo a travs de SNMP, utilizando Zabbix.

    Gua No. 6 Servicios Web -v3-DM 25/25