{"id":1574,"date":"2015-11-20T12:11:01","date_gmt":"2015-11-20T18:11:01","guid":{"rendered":"https:\/\/www.lastdragon.net\/?p=1574"},"modified":"2019-03-11T13:59:01","modified_gmt":"2019-03-11T19:59:01","slug":"crear-nas-exportar-iscsi-y-crear-un-cluster-con-gfs2-con-gnulinux","status":"publish","type":"post","link":"https:\/\/www.lastdragon.net\/?p=1574","title":{"rendered":"Crear NAS exportar ISCSI y crear un Cluster con GFS2 con GNU\/Linux"},"content":{"rendered":"<p>En el art\u00edculo anterior sobre <a href=\"https:\/\/www.lastdragon.net\/?p=1563\">virtualizaci\u00f3n con software libre<\/a> hable en una p\u00e1rrafo sobre migrar las maquinas vivas a otra m\u00e1quina dentro del data center y por qu\u00e9 no incluso hasta en otros datacenter fuera del pa\u00eds o remotamente alejados. Mientras se tenga el suficiente ancho de banda todo se puede se recomienda una conexi\u00f3n Gigabit en los site o datacenter para un rendimiento \u00f3ptimo aunque funcionara sin problemas con menos ancho de banda. <a href=\"https:\/\/www.lastdragon.net\/?p=385\">En Septiembre 10, 2009 hab\u00eda hablado sobre GFS<\/a> pero eso fue hace muchos a\u00f1os esa informaci\u00f3n podr\u00eda ya no serle \u00fatil a nadie porque tanto la distro que use como las herramientas est\u00e1n obsoletas, es hora de actualizar el articulo al 2015, para lograrlo esta vez usare Internet SCSI<\/p>\n<p><strong>\u00bf Que es ISCSI y GFS2 ?<\/strong><\/p>\n<p><em>Internet SCSI ( ISCSI )<\/em><\/p>\n<p>ISCSI es SCSI sobre IP como las llamadas telef\u00f3nicas que son voz sobre internet ( VoIP ) ISCSI simplemente entrega un dispositivo por bloques de almacenamiento pero en lugar de ir en la placa de la tarjeta madre del servidor este llega v\u00eda TCP\/IP una vez recibido los datos que transportan el SCSI se asigna como un disco duro m\u00e1s por ejemplo \/dev\/sdb<\/p>\n<p>Una vez como dispositivo de bloques ( \/dev\/sdx ) podemos tratarlo como cualquier otro disco, particionarlo y formatearlo con el sistema de archivos que nos sea \u00fatil<\/p>\n<p><strong>\u00bf S\u00ed puedo adjuntar v\u00eda red local o internet el mismo dispositivo SCSI a muchos servidores y formatearlo con NTFS, EXT2, EXT3, EXT4 o XFS, Por qu\u00e9 requiero GFS ?<\/strong><\/p>\n<p>La gran mayor\u00eda de los sistemas de archivos son monomontado es decir, est\u00e1n pensados para que un sistema operativo y solo uno los controle, podr\u00eda montar un NTFS en 2 Windows Server usando el mismo dispositivo ISCSI pero cada Windows piensa que el disco duro esta solo a su disposici\u00f3n por lo que empiezan a manipular creando archivos, modificando valores de archivos uno sobre el otro sin percatarse de que hay otro Windows haciendo lo mismo sobre el mismo disco duro al final queda una sopa el NTFS y todos los datos terminan corruptos, cuando se hizo NTFS o EXT2 no pensaron que alguien los montar\u00eda al mismo tiempo en 2 m\u00e1quinas diferentes, no tendr\u00eda sentido porque ser\u00eda dif\u00edcil tomar un disco duro f\u00edsico y conectarlo a 2 computadoras simult\u00e1neamente cada una con su propio sistema operativo, sin embargo ISCSI al ser un dispositivo l\u00f3gico que se comporta como uno f\u00edsico abre la posibilidad de que se pueda conectar un mismo disco duro a 2 servidores diferentes cada uno con su propio sistema operativo. Montar un mismo disco duro en diferentes servidores abre la necesidad de un nuevo sistema de archivos, uno que sea multimontado y que sistemas operativos diferentes puedan usarlo sin corromper sus datos.<\/p>\n<p>ISCSI<\/p>\n<p>Exportar un dispositivo de bloques ISCSI desde un archivo o desde un dispositvo de blques fisico<\/p>\n<p>1 Instalar paquetes necesarios para clientes y servidores de ICSI<\/p>\n<p>yum install targetcli iscsi-initiator-utils -y<\/p>\n<p>2 Dispositivo de blques<\/p>\n<p>Si es por archivo se tiene que crear una carpeta contenedora en el FS, ej \/home\/iscsi, en caso de que se use un disco fisico solo se requiere saber su link a dev ej \/dev\/sda#<\/p>\n<p>3 Ejecutar targetcli, en su interior hay un FS virtual con directorios y archivos<\/p>\n<p>4 backstores ( aqui se ligan los dispositivos con discos virtual ISCSI<\/p>\n<p>ir a \/backstores con el comando cd. En su interior hay subcarpetas fileio es para archivos en el FS del sistema operativo que se almacenaran en \/home\/iscsi o en block<\/p>\n<p>*** Con archivo imagen en disco (El tercer parametro especifica el tama\u00f1o del archivo a crear)<\/p>\n<p>create Disco1 \/home\/iscsi\/disco1.img 1G<\/p>\n<p>*** Con disco fisco<\/p>\n<p>create Disco1 \/dev\/sd#<\/p>\n<p>5 Crear el iqn<\/p>\n<p>cd \/iscsi<\/p>\n<p>create<\/p>\n<p>Devolvera una respuesta similar a:<\/p>\n<p>\/iscsi&gt; create<br \/>\nCreated target iqn.2003-01.org.linux-iscsi.gfs.x8664:sn.d6fa7e969775.<br \/>\nCreated TPG 1.<br \/>\nGlobal pref auto_add_default_portal=true<br \/>\nCreated default portal listening on all IPs (0.0.0.0), port 3260.<\/p>\n<p>Guardar el nombre del icq creado, en este caso iqn.2003-01.org.linux-iscsi.gfs.x8664:sn.d6fa7e969775<\/p>\n<p>6 Crear el listener con la IP en la que escuchara, por default se ha creado 0.0.0.0 3260<\/p>\n<p>ejemplo: cd \/iscsi\/nombreiqn\/tpg1\/portals<\/p>\n<p>cd \/iscsi\/iqn.2003-01.org.linux-iscsi.gfs.x8664:sn.d6fa7e969775\/tpg1\/portals<\/p>\n<p>Borrar el listener por default<\/p>\n<p>delete 0.0.0.0 3260<\/p>\n<p>Crear el nuevo listener con la IP donde se conectaran los clientes.<\/p>\n<p>create 192.168.3.83 3260<\/p>\n<p>Respondera:<br \/>\nCreated network portal 192.168.3.83:6260.<\/p>\n<p>7 Crear el lun ligandolo al dispositivo de bloques o el archivo imagen<\/p>\n<p>ejemplo cd \/iscsi\/nombreiqn\/tpg1\/luns<\/p>\n<p>cd \/iscsi\/iqn.2003-01.org.linux-iscsi.gfs.x8664:sn.d6fa7e969775\/tpg1\/luns<\/p>\n<p>*** Para el archivo imagen<\/p>\n<p>create \/backstores\/fileio\/Disco1<\/p>\n<p>*** Para el dispositivo de bloques<\/p>\n<p>create \/backstores\/block\/Disco1<\/p>\n<p>8 Crear las claves de acceso para los clientes en acl<\/p>\n<p>ejemplo cd \/iscsi\/nombreiqn\/tpg1\/acls<br \/>\ncd \/iscsi\/iqn.2003-01.org.linux-iscsi.gfs.x8664:sn.d6fa7e969775\/tpg1\/acls<\/p>\n<p>ejemplo create nombredeliqn:etiqueta<\/p>\n<p>create iqn.2003-01.org.linux-iscsi.gfs.x8664:sn.d6fa7e969775:Disco1<\/p>\n<p>9 Asignar claves de acceso a la etiqueta<\/p>\n<p>cd iqn.2003-01.org.linux-iscsi.gfs.x8664:sn.d6fa7e969775:disco1<\/p>\n<p>set auth userid=usuario<br \/>\nset auth password=clave<\/p>\n<p>10 Salir y preparar los servicios para que esten disponibles<\/p>\n<p>exit<\/p>\n<p>systemctl start target ; systemctl enable target<\/p>\n<p>IMPORTAR el dispositivo ISCSI para maquinas remotas o incluso el mismo servidor<\/p>\n<p>1 Editar el archivo \/etc\/iscsi\/initiatorname.iscsi y asignarle el iqn con etiqueta<\/p>\n<p>InitiatorName=iqn.2003-01.org.linux-iscsi.gfs.x8664:sn.d6fa7e969775:disco1<\/p>\n<p>2 Editar el archivo \/etc\/iscsi\/iscsid.conf para autenticar con el servidor<\/p>\n<p>node.session.auth.authmethod = CHAP<\/p>\n<p>node.session.auth.username = usuario<br \/>\nnode.session.auth.password = clave<\/p>\n<p>3 Descubrir si el ISCSI esta siendo exportado:<\/p>\n<p>ej iscsiadm -m discovery -t sendtargets -p IpEnLaQueEsuchaElServidor<\/p>\n<p>iscsiadm -m discovery -t sendtargets -p 192.168.3.83<\/p>\n<p>4 Conectar al servidor<\/p>\n<p>iscsiadm -m node &#8211;login<\/p>\n<p>Si el login es exitoso, se creara un nuevo dispositivo de bloques en el cliente, para ver todos los dipositivos usar el comando parted -l<\/p>\n<p>parted -l<\/p>\n<p>Devolvera un bloque similar a:<\/p>\n<p>Error: \/dev\/sda: unrecognised disk label<br \/>\nModel: LIO-ORG Disco1 (scsi)<br \/>\nDisk \/dev\/sda: 5369MB<br \/>\nSector size (logical\/physical): 512B\/512B<br \/>\nPartition Table: unknown<br \/>\nDisk Flags:<\/p>\n<p>Donde \/dev\/sda es el dispositivo de bloques o disco duro exportado del servidor ISCSI, Ahora puede ser tratado como cualquier disco duro<\/p>\n<p>GFS2 sobre un disposivo de bloques ISCSI<\/p>\n<p>1 Instalar los paquetes requeridos<\/p>\n<p>yum install gfs2-utils lvm2-cluster cman modcluster rgmanager openais pcs fence-agents-all -y<\/p>\n<p>2 Agregar al \/etc\/hosts las computadoras participantes<\/p>\n<p>192.168.3.83 nodo1<\/p>\n<p>3 Activar los procesos para el cluster GFS<\/p>\n<p>systemctl start pcsd ; systemctl enable pcsd<\/p>\n<p>4 Asignarle una clave al usuario de sistema operativo hacluster<\/p>\n<p>passwd hacluster<\/p>\n<p>5 Logearse al cluster<\/p>\n<p>pcs cluster auth nodo1<\/p>\n<p>6 Iniciar el cluster<\/p>\n<p>ejemplo pcs cluster setup &#8211;start &#8211;name NombrecLuster Nodo1 Nodo2 Nodo3<\/p>\n<p>pcs cluster setup &#8211;start &#8211;name clusterserver nodo1<br \/>\npcs cluster enable &#8211;all<\/p>\n<p>7 Crear el dispositivo de cluster sobre del dipositivo del ISCSI<\/p>\n<p>pcs stonith create NombreDispositovo fence_scsi devices=&#8221;\/dev\/sda&#8221; meta provides=unfencing<\/p>\n<p>6 Activar los volumenes en cluster<\/p>\n<p>lvmconf &#8211;enable-cluster<\/p>\n<p>7 Crear el protocolo de bloqueo de archivos y de claim para el volumen<\/p>\n<p>pcs resource create dlm ocf:pacemaker:controld op monitor interval=30s on-fail=fence clone interleave=true ordered=true<\/p>\n<p>pcs resource create clvmd ocf:heartbeat:clvm op monitor interval=30s on-fail=fence clone interleave=true ordered=true<\/p>\n<p>8 Activar el protocolo de bloqueo y claim<\/p>\n<p>pcs constraint order start dlm-clone then clvmd-clone<br \/>\npcs constraint colocation add clvmd-clone with dlm-clone<br \/>\npcs property set no-quorum-policy=freeze<\/p>\n<p>9 Creacion del volumen fisico que va sobre el dispositivo ISCSI<\/p>\n<p>pvcreate \/dev\/sda<\/p>\n<p>10 Crear un nombre del grupo de volumenes en el dispositivo ISCSI -Ay es autobackup YES y cy es Cluster YES<\/p>\n<p>vgcreate -Ay -cy volumenes_clusterizados \/dev\/sda<\/p>\n<p>11 Activar el bloqueo y el claim para el grupo de volumenes<\/p>\n<p>pcs resource debug-start dlm<br \/>\npcs resource debug-start clvmd<\/p>\n<p>11 Crear un volumen logico dentro del grupo de volumenes ( como particiones )<\/p>\n<p>lvcreate -L 1G -n Volumen1 volumenes_clusterizados<\/p>\n<p>12 Formatear Volumen1 con GFS<\/p>\n<p>mkfs.gfs2 -p lock_dlm -t NombrecLuster:gfs -j 10 \/dev\/volumenes_clusterizados\/Volumen1<\/p>\n<p>13 Montar el Volumen1<\/p>\n<p>pcs resource create Volumen1 Filesystem device=&#8221;\/dev\/volumenes_clusterizados\/Volumen1&#8243; directory=&#8221;\/mnt&#8221; fstype=&#8221;gfs2&#8243; options=&#8221;noatime,nodiratime&#8221; op monitor interval=10s on-fail=fence clone interleave=true<\/p>\n<p>mount \/dev\/volumenes_clusterizados\/Volumen1 \/puntodemontura<\/p>\n<p>Montar los volumenes despues de un reinicio&#8230; Debe ser hecho de forma manual, no en el fstab<\/p>\n<p>pcs resource debug-start dlm<br \/>\npcs resource debug-start clvmd<\/p>\n<p>mount \/dev\/volumenes_clusterizados\/Volumen1 \/puntodemontura<\/p>\n<p>Estado del cluster GFS para obtener nombre de cluster o de dispositivos creados en el cluster<\/p>\n<p>pcs status<\/p>\n<p><strong>El siguiente v\u00eddeo muestra un GFS2 funcionando.<\/strong><\/p>\n<p><iframe loading=\"lazy\" src=\"https:\/\/www.youtube.com\/embed\/Ua0qPdt0xkk\" width=\"560\" height=\"315\" frameborder=\"0\" allowfullscreen=\"allowfullscreen\"><\/iframe><\/p>\n","protected":false},"excerpt":{"rendered":"<p>En el art\u00edculo anterior sobre virtualizaci\u00f3n con software libre hable en una p\u00e1rrafo sobre migrar las maquinas vivas a otra m\u00e1quina dentro del data center y por qu\u00e9 no incluso hasta en otros datacenter fuera del pa\u00eds o remotamente alejados. Mientras se tenga el suficiente ancho de banda todo se puede se recomienda una conexi\u00f3n&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2],"tags":[],"class_list":["post-1574","post","type-post","status-publish","format-standard","hentry","category-consultoria-y-manuales"],"_links":{"self":[{"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=\/wp\/v2\/posts\/1574","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1574"}],"version-history":[{"count":3,"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=\/wp\/v2\/posts\/1574\/revisions"}],"predecessor-version":[{"id":2108,"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=\/wp\/v2\/posts\/1574\/revisions\/2108"}],"wp:attachment":[{"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1574"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1574"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1574"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}