Eduardo Campos Jiménez, Enero 2011 Clúster Red Hat Pre-Requisitos Tres servidores con Red Hat 5.5. Cada uno de estos tres servidores debe tener 3 placas Ethernet conectadas en estas condiciones: eth0 conectada a la red 192.168.0.x, eth1 conectada a la red 10.10.100.x y eth2 a la red 172.16.200.x. Un servicio iSCSI clusterizado idéntico al montado en este post. Ver esquema aclaratorio en PDF descargable desde aquí. Procedimiento 1. Configuración fichero /etc/hosts Los ficheros /etc/hosts deben tener este aspecto en rhmaster, rhnodo1 y rhnodo2 # Do not remove the following line, or various programs # that require network functionality will fail. 127.0.0.1 localhost.localdomain localhost ::1 localhost6.localdomain6 localhost6 10.10.100.100 rhmaster 192.168.0.103 openfiler 10.10.100.101 rhnodo1 10.10.100.102 rhnodo2 2. Crear en Openfiler dos luns y mapearlar a un target iscsi, una para las configuraciones de Apache y otra para los datos. 3. Conectar almacenamiento compartido en ambos nodos Instalar en los dos nodos (rhnodo1 y rhnodo2) paquete iscsi-initiator-utils: yum -y install iscsi-initiator-utils service iscsi start chkconfig iscsi on Para luego conectar en los dos nodos el servicio iSCSI que tenemos en la IP 192.168.0.103 (no usar nombre de máquina, usar IP) iscsiadm --mode discovery --type sendtargets --portal 192.168.0.103 service iscsi restart (hacer antes y después un ‘cat /proc/partitions’ para ver qué pasa) 4. Instalar en rhnodo1, rhnodo2 las suites Clustering, ClusterStorage y la suite Clustering en rhmaster Después de instalar los grupos de paquetes, en rhnodo1 y en rhnodo2 haremos: service ricci start chkconfig ricci on mientras que en rhmaster heremos: luci_admin init nos pedirá que introduzcamos la password del usuario administrador y una vez hecho heremos: service luci restart chkconfig luci on 5. Creación del clúster Nos iremos con un navegador a https://rhmaster:8084, nos pedirá usuaria, podremos ‘admin’ y acto seguido introduciremos la password que hemos definido en el paso anterior. Desde el entorno gráfico, crear el clúster usando como nodos rhnodo1 y rhnodo2. 6. Creación del almacenamiento compartido Revisar en rhnodo1 y rhnodo2 que en /etc/lvm/lvm.conf tengamos ésto: locking_type = 3 Esto habilita a cada nodo para poder usar Logical Volumes clusterizados. A continuación crearemos dos particiones en el almacenamiento compartido y las conectaremos. Pare ellos haremos desde rhnodo1 lo siguiente: fdisk /dev/sdb Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel Building a new DOS disklabel. Changes will remain in memory only, until you decide to write them. After that, of course, the previous content won't be recoverable. Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite) Command (m for help): n Command action e extended p primary partition (1-4) p Partition number (1-4): 1 First cylinder (1-1011, default 1): Using default value 1 Last cylinder or +size or +sizeM or +sizeK (1-1011, default 1011): Using default value 1011 Command (m for help):w Y luego, también desde rhnodo1 heremos: fdisk /dev/sdc Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel Building a new DOS disklabel. Changes will remain in memory only, until you decide to write them. After that, of course, the previous content won't be recoverable. Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite) Command (m for help): n Command action e extended p primary partition (1-4) p Partition number (1-4): 1 First cylinder (1-1009, default 1): Using default value 1 Last cylinder or +size or +sizeM or +sizeK (1-1009, default 1009): Using default value 1009 Command (m for help):w Ahora iremos a rhnodo2 y hacemos: service iscsi restart Volvemos a rhnodo1 y hecemos: pvcreate /dev/sdb1 pvcreate /dev/sdc1 vgcreate -c y ApacheVGConf /dev/sdb1 vgcreate -c y ApacheVGData /dev/sdc1 lvcreate -L 512M -n ApacheLVConf ApacheVGConf lvcreate -L 1G -n ApacheLVData ApacheVGData Acto seguido haremos tanto en rhnodo1 como rhnodo2: service clvmd restart Ahora en rhnodo1 haremos: mkfs.gfs2 -j 3 -p lock_dlm -t cluster01:SharedWebConfig /dev/mapper/ApacheVGConf-ApacheLVConf mkfs.gfs2 -j 3 -p lock_dlm -t cluster01:SharedWebData /dev/mapper/ApacheVGData-ApacheLVData Si todo va bien obtendremos algo así: Device: Blocksize: Device Size Filesystem Size: Journals: Resource Groups: Locking Protocol: Lock Table: UUID: /dev/mapper/ApacheVGConf-ApacheLVConf 4096 0.50 GB (131072 blocks) 0.50 GB (131070 blocks) 3 2 "lock_dlm" "cluster01:SharedWebConfig" EAC2119D-5CB9-CB27-38A0-8A65586FE58B Device: Blocksize: Device Size Filesystem Size: Journals: Resource Groups: Locking Protocol: Lock Table: UUID: /dev/mapper/ApacheVGData-ApacheLVData 4096 1.00 GB (262144 blocks) 1.00 GB (262142 blocks) 3 4 "lock_dlm" "cluster01:SharedWebData" D928C927-FFD3-A472-2953-A3C30DD10EC4 El siguiente paso consiste en montar los sistemas GFS formateados manualmente. Primero crearemos el punto de montaje de la parte de configuración en rhnodo1 y rhnodo2: mkdir /var/www/config Para luego montar ambos filesystem: mount –o noatime /dev/mapper/ApacheVGConf-ApacheLVConf /var/www/config mount –o noatime /dev/mapper/ApacheVGData-ApacheLVData /var/www/html Para que en futuros reinicios de ambos nodos estos filesystem se vuelvan a montar, modificaremos el fichero /etc/fstab añadiendo al final del mismo las siguientes dos líneas (hay que hacerlo tanto en rhnodo1 como rhnodo2): /dev/mapper/ApacheVGConf-ApacheLVConf /var/www/config gfs2 rw,noatime 0 0 /dev/mapper/ApacheVGData-ApacheLVData /var/www/html gfs2 rw,noatime 0 0 Movemos los ficheros de configuración de Apache y creamos enlaces simbólicos Hacer en rhnodo1: mv mv cp cp ln ln /etc/httpd/conf /etc/httpd/conf.local /etc/httpd/conf.d /etc/httpd/conf.d.local -a /etc/httpd/conf.local /var/www/config/conf -a /etc/httpd/conf.d.local /var/www/config/conf.d -s /var/www/config/conf /etc/httpd/conf -s /var/www/config/conf.d /etc/httpd/conf.d Hacer en rhnodo2: mv mv ln ln /etc/httpd/conf /etc/httpd/conf.local /etc/httpd/conf.d /etc/httpd/conf.d.local -s /var/www/config/conf /etc/httpd/conf -s /var/www/config/conf.d /etc/httpd/conf.d 7. Definir “Failover Domain” Usando un navegador y el entorno de administración del clúster (https://rhmaster:8084), nos adentramos en la configuración del clúster “cluster01”. Después de desplegar el apartado “Failover Domain” seleccionamos “Add a Failover Domain”. En el campo “Failover Domain Name” ponemos “prefer_rhnodo1”, marcamos la casilla titulada “Prioritized” , marcamos también las casillas de ambos nodos en el apartado “Member , y finalmente en el campo “Priority” de rhnodo1 ponemos “1” mientras que el de rhnodo2 ponemos “10”. Concluimos tocando el botón de “Submit”. 8. Definición de recursos para el servicio Normalmente necesitaremos definir dos recursos para un servicio Web clusterizado: • • Una dirección IP virtual Un script de start/stop del servicio Dirección IP Virtual: Usando un navegador y el entorno de administración del clúster (https://rhmaster:8084), nos adentramos en la configuración del clúster “cluster01”. Después de desplegar el apartado ”Resources” seleccionamos “Add a Resource”. En la lista desplegable titulada “Select a resource type” seleccionamos “IP Address”. En la pantalla que se nos muestra a continuación añadimos la ip que queramos asignarle, en nuestro caso “172.16.200.103” y marcamos la casilla de verificación titulada “Monitor link”. Script de START/STOP: Continuamos en el apartado “Resources” y volvemos a seleccionar “Add a Resource”. En la lista desplegable seleccionamos “Script”. En la pantalla que se muestra a continuación, en el campo “Name” ponemos “Apache-Script” mientras que en el campos “Full path to script file” ponemos “/etc/rc.d/init.d/httpd” . 9. Definición del servicio Lo primero que tenemos que hacer es modificar en el fichero /etc/httpd/conf/httpd.conf la línea que empieza por “Listen” para que quede así: Listen 172.16.200.103:80 Para definir el servicio procedemos así: Usando un navegador y el entorno de administración del clúster (https://rhmaster:8084), nos adentramos en la configuración del clúster “cluster01”. Después de desplegar el apartado ”Services” seleccionamos “Add a Service”. En la pantalla que se nos muestra a continuación, en el campo “Service Name” ponemos “Apache”, marcamos la casilla de verificación titulada “Automatically start this service” , en la lista de selección titulada “Failover domain” seleccionamos “prefer_rhnodo1”, en la lista de selección titulada “Recovery policy” seleccionamos “Relocate”, tocamos el botón “Add a resource to this service” , en la pantalla que nos aparece a continuación desplegaremos la lista titulada “Use an existing global resource “ y seleccionamos “172.16.200.103 (IP)”, volvemos a tocar el botón “Add a resource to this service”, volvemos a desplegar la lista “Use an existing global resource “ y seleccionamos “Apache-Script (Script)”, para finalmente tocar el botón titulado “Submit” . Esto nos conduce a una pantalla en la que habrá una lista desplegable que contiene “Choose a task”, deberemos desplegarla y seleccionar “Start this service to rhnodo1”. Esto pondrá en marcha el servicio Apache clusterizado por primera vez. FIN http://www.eduardocamposjimenez.es