Esta guia la hago para que ustedes puedan sacar sus propias conclusiones de como funciona cada uno de los distintos sistemas de ficheros en cluster, uno creado por RHEL y otro creado por ORACLE. Esta vez lo realizare en un sistema operativo fuera del mundo de YUM y los RPM, para hacer mas transparentes las pruebas usaremos UBUNTU 14.04 LTS
iscsi: El protocolo iSCSI es un protocolo de red de área de almacenamiento (SAN), que permite a los iniciadores iSCSI usar los dispositivos de almacenamiento de forma remota utilizando el cableado de Ethernet normal. Para el iniciador iSCSI, el almacenamiento remoto se ve como un disco duro normal, conectada localmente.
gfs2: Es un sistema de ficheros nativo creado por Red Hat y distribuido bajo licencia GNU, que puede ser utilizado de forma local (como por ejemplo ext3) o en cluster, de manera que varios nodos puedan estar trabajando simultáneamente sobre él sin peligro a que se corrompan los datos. La capacidad máxima de almacenamiento de GFS2 es de 8 EB.
ocfs2: Es un Sistema de ficheros en Cluster que permite el acceso simultáneo de multiples nodos. Deberemos definir nuestro dispositivo drbd para acceder a los nodos de la red simultaneamente. Cada nodo OCFS2 dispone de un sistema de ficheros montado, regularmente escribe un fichero meta-data permitiendo a los otros nodos saber que se encuentra disponible.
1.- Crearemos 3 maquinas virtuales para estas pruebas
Nameserver : SVRiSCSI
Funcion : Servidor iSCSI target
IP : 192.168.254.105
S.O (sda) : 4GB (UBUNTU 14.04 LTS )
HDD1 (sdb) : 1.5GB
HDD1 (sdc) : 1.5GB
Nameserver : SERV1
Funcion : Servidor cluster 1
IP : 192.168.254.106
S.O (sda) : 4GB (UBUNTU 14.04 LTS )
HDD1 (sdb) : 1.5GB
HDD1 (sdc) : 1.5GB
Nameserver : SERV2
Funcion : Servidor cluster 2
IP : 192.168.254.107
S.O (sda) : 4GB (UBUNTU 14.04 LTS )
HDD1 (sdb) : 1.5GB
HDD1 (sdc) : 1.5GB
Lo primero que haremos sera ajustar los nombres de las maquinas en el archivo de hosts de cada 1 de ellos /etc/resolv.conf
vim /etc/hosts192.168.254.105 SVRiSCSI192.168.254.106 SERV1192.168.254.107 SERV2
Configuracion de Target iSCSI
1.- Instalar el controlador de target iscsi
apt-get install iscsitarget
2.- Habilitar el target ISCSI, editar /etc/default/iscsitarget y cambiar el valor false a true
vim /etc/default/iscsitargetISCSITARGET_ENABLE=true
3.- Editar /etc/iet/ietd.conf y asignar nuestro iqn
Aquà tendremos que configurar tres cosas principalmente:
- El nombre de nuestro target
- El nombre de usuario y la contraseña para la conexión del iniciador
- Los dispositivos que presentaremos como targets
El estándar iSCSI define que tanto los target como los iniciadores deben tener un nombre que sigue un patrón, el cual es el siguiente:
iqn.[yyyy-mm].[nombre del dominio invertido]:[identificador]
Donde:
iqn es un término fijo y debe figurar al principio.
yyyy-mm es la fecha de alta del servidor o la fecha de publicacion de los targets
A continuación debe figurar el nombre del dominio invertido un jemplo podria ser:
cl.svriscsi.xentech
Luego de los “:”, un identificador que podemos ponerlo a nuestro gusto, y que puede en muchos casos brindar información del target.
Un ejemplo válido serÃa:
iqn.2015-11.cl.svriscsi.xentech:san.2G.gfs2
Como vemos el identificador aunque es variable y personalizable, puede reflejar el nombre dado al target, la capacidad y el servicio donde lo usaremos.
Si queremos que nuestro target requiera autenticación., podemos definir un usuario y una contraseña para que solo se conecten los iniciadores que nosotros queremos.
debemos descomentar la linea y dejar a nuestro gusto esta información
#IncomingUser joe secret
un ejemplo valido seria:
IncomingUser xentech lab123
donde xentech es el nombre de usuario y lab123 nuestra contraseña
Como ultimo paso devemos declarar los dispositivos que se presentaran para ser iniciados en los clientes, se debe descomentar y editar la linea siguiente:
#Lun 0 Path=/dev/sdc,Type=fileio,ScsiId=xyz,ScsiSN=xyz
como nuestro sistema presentara dos discos los declararemos de la siguiente manera:
Lun 0 Path=/dev/sdb,Type=fileioLun 1 Path=/dev/sdc,Type=fileio
En este ejemplo el primer dispositivo que estamos ofreciendo es la partición /dev/sdb del servidor y el segundo en /dev/sdc. La documentación nos dice que además de particiones podemos usar discos enteros, volúmenes LVM y RAID, e incluso archivos. En cualquier caso solo hay que definir el path.
4.- Una vez que hemos configurado el servidor y que tenemos listos nuestros discos a ofrecer, debemos levantar el servicio.
service iscsitarget restart
5.- Por último si queremos que nuestro servicio iSCSI target inicie junto con el servidor, debemos agregarlo al inicio del sistema.
update-rc.d iscsitarget defaults
Configuración de nuestro iniciador
Lo primero que vamos a hacer es instalar el software iniciador. usaremos open-iscsi, además está dentro de la paqueterÃa de Debian y Ubuntu. Lo instalamos de la siguiente manera en los server clientes SEVR1 y SERV2
apt-get install open-iscsi
una vez instalado debemos editar el archivo de iniciacion de open-iscsi y cambiar
vim /etc/iscsi/iscsid.confnode.startup = manual
debe quedar
node.startup = automatic
Habilitar login, descomentar las lineas destacadas
...node.session.auth.authmethod = CHAP...node.session.auth.username = xentechnode.session.auth.password = lab123...discovery.sendtargets.auth.authmethod = CHAP...discovery.sendtargets.auth.username = xentechdiscovery.sendtargets.auth.password = lab123
reiniciar el iniciador
/etc/init.d/open-iscsi restart
Configuración de open-iscsi
La configuración de open-iscsi se realiza a través del comando iscsiadm y la misma se guarda en una base de datos. Si queremos cambiar algún parámetro de la configuración tenemos que hacerlo a través de iscsiadm.
Detección del target
En primer lugar tenemos que indicarle a iscsiadm que detecte nuestro target iSCSI y lo agregue a su base de datos. Hay que aclarar que iscsiadm tiene tres formas de operación
discovery: En este modo se pueden descubrir targets y agregarlos a la base de datos.
node: En este modo se administran los targets ya descubiertos y se pueden visualizar datos acerca de estos nodos, asà como conectarse a ellos.
session: En este modo se administran los targets a los que se está conectados (en los que se ha hecho login).
Para descubrir nuestro target usamos obviamente discovery, se debe ejecutar:
iscsiadm -m discovery -t st -p 192.168.1.100
Confirmar el estado de la conexion
iscsiadm -m node -o show | grep node.name
ahora debemos conectarnos con nuestro Target
iscsiadm -m node --login
con esto ya deberiamos tener conectadas las dos unidades presentadas desde nuestro servidor iSCSI, para comprobarlo basta hacer un dmesg del sistema y veremos lo que conecto
dmesg
Creacion de particiones, formateos y armados del cluster
Instalar los siguientes paquetes en los servidores clientes
apt-get install pacemaker cman resource-agents fence-agents gfs2-utils gfs2-cluster ocfs2-tools-cman openais rgmanager
Desabilitar o2cb del inicio
update-rc.d -f o2cb remove
Trabajaremos con el sistema de archivos gfs2 en el servidor SERV1 y con ocfs2 en SERV2
GSF2
Creacion de particion sdb en SERV1
fdisk /dev/sdb
- presione n para la creacion de una nueva particion
- presione w para la escritura de la nueva particion
una vez terminada la creacion ya podremos formatear nuestra unidad con un sistema de archivos gfs2
mkfs.gfs2 -p lock_dlm -t clusterxentech:gfs2 -j 2 /dev/sdb1
- donde:
- mkfs.gfs2: Tipo de formato que en este caso sera el nuevo sistema de archivos en cluster de RedHat
- p lock_dlm: El parámetro lock_dlm indica el protocolo de bloqueo a emplear, siendo lock_dlm (DLM – Distributed Lock Manager) para el caso de acceso concurrente y lock_nolock para el caso de acceso de un único nodo.
- -t clusterme:gfs2: Con la opción de -t se especifica el nombre del cluster y el nombre que le queremos dar al sistema de archivos
- -j 2: indica el número de nodos que accederán concurrentemente al sistema de archivos
- /dev/sdb1: Unidad a formatear
Creacion de archivo de cluster para gfs2
Cree el archivo cluster en ambos servidores clientes y Pegue la siguiente informacion en /etc/cluster/cluster.conf
<?xml version="1.0"?> <cluster name="clusterxentech" config_version="3"> <cman two_node="1" expected_votes="1"/> <gfs_controld enable_plock="1"/><clusternodes> <clusternode name="SERV1" votes="1" nodeid="1"> <fence> <method name="single"> <device name="manual" ipaddr="192.168.254.106"/> </method> </fence> </clusternode> <clusternode name="SERV2" votes="1" nodeid="2"> <fence> <method name="single"> <device name="manual" ipaddr="192.168.254.107"/> </method> </fence> </clusternode></clusternodes> <fence_daemon clean_start="1" post_fail_delay="0" post_join_delay="3"/> <fencedevices> <fencedevice name="manual" agent="fence_manual"/> </fencedevices></cluster>
Lineas Importantes:
<cluster name="clusterxentech" config_version="3">
Esta linea indica el nombre del cluster, el cual definimos al momento de formatear la unidad sdb1, un punto muy importante este archivo funciona al igual que los archivos de zonas de DNS con un numero de serie, el cual con cada cambio tbm debe ser cambiado el numero de serie config_version=»3″
<clusternode name="SERV1" votes="1" nodeid="1">
Linea que hace la llamada al primer nodo y le da como identificador de nodeid=1, en el caso de ser el nodo 2 cambia la informacion a la que tiene el servidor 2
<device name="manual" ipaddr="192.168.254.106"/>
Linea que indica la ip del servidor
NOTA: el resto de las lineas no se tocan.
Montaje de sdb1 como sistema de archivos gfs2
El montaje lo realizaremos en el cliente1 SERV1, crearemos nuestro punto de montage en /mnt/
mkdir /mnt/gfs2
Procedemos a montar la particion en /mnt/gfs2
mount -t gfs2 /dev/sdb1 /mnt/gfs2
Realizamos el mismo procedimiento en el servidor cliente2 SERV2
Por último, sólo tendremos que reiniciar los servicios gfs2, cman, rgmanager y en ambos servidores, partiendo por SVRCluster1 y mediante el comando chkconfig haremos que dichos demonios se inicien automáticamente cada vez que arranque el nodo.
/etc/init.d/gfs2-cluster restart/etc/init.d/cman restart/etc/init.d/rgmanager restartupdate-rc.d gfs2 defaultupdate-rc.d cman defaultupdate-rc.d rgmanager default
Montaje automatico desde el inicio FSTAB
Es fundamental dejar el disco montado desde el inicio del sistema para lo cual yo hago lo siguiente.
1.- Descubrir el identificador unico del disco
blkid
2.- Agregar disco a tabla de particiones, deberia quedar como la linea destacada
vim /etc/fstabUUID=18da39a5-f3b4-d3a8-11a8-a28d1bac077b /mnt/gfs2 gfs2 defaults 0 0
3.- repetir los mismos pasos en SERV2
Si ejecutamos el comando clustat, podremos ver la configuración actual del cluster que acabamos de levantar.
haremos la prueba creando un archivo de 10 megas en el disco compartido
dd if=/dev/zero of=/mnt/gfs2/Disc10M bs=1M count=10
revisar en ambos servidores que este se haya creado sin problemas
ls -l /mnt/gfs2/Disc10M
OCFS2
Ya tenemos instalados los paquetes necesarios en nuestro servidor segun los pasos anteriores por lo que comenzaremos inmediatamente con la configuracion.
Trabajaremos con el sistema de archivos ocfs2 en el servidor SERV2
Creacion de particion sdb en SERV2
fdisk /dev/sdc
- presione n para la creacion de una nueva particion
- presione w para la escritura de la nueva particion
una vez terminada la creacion ya podremos formatear nuestra unidad con un sistema de archivos gfs2
mkfs.ocf2 /dev/sdc1
- mkfs.ocfs2: Tipo de formato que en este caso sera el nuevo sistema de archivos en cluster de Oracle
- /dev/sdc1: Unidad a formatear
Creacion de archivo de cluster para ocfs2
Crear archivo cluster en ambos servidores clientes y Pegue la siguiente informacion en /etc/ocfs2/cluster.conf
node: ip_port = 7777 ip_address = 192.168.1.107 number = 0 name = SERV2 cluster = xentechocfsnode: ip_port = 7777 ip_address = 192.168.1.106 number = 1 name = SERV1 cluster = xentechocfscluster: node_count = 2 name = xentechocfs
habilitar el cluster
dpkg-reconfigure ocfs2-tools
Seleccionar <Si>
Ingresamos el nombre de nuestro cluster xentechocsf y presionamos <Aceptar> al resto de las opciones le dan OK y ya nuestro cluster esta iniciado
Iniciar servicios y dejarlos al inici
/etc/init.d/o2cb restartupdate-rc.d cman o2cb
Montaje de sdc1 como sistema de archivos ocfs2
El montaje lo realizaremos en el cliente2 SERV2, crearemos nuestro punto de montage en /mnt/
mkdir /mnt/ocfs2
Procedemos a montar la particion en /mnt/ocfs2
mount -t ocfs2 /deb/sdb1 /mnt/ocfs2
Realizamos el mismo procedimiento en el servidor cliente1 SERV1
revisar estado
/etc/init.d/o2cb status
Revisar los discos y los diferentes tipos de formato
blkid
No agregare el montaje automatico en FSTAB, ya que es igual al de gfs2
Espero que les sirva este lab, por lo menos a mi me sirvio mucho para revisar los comportamientos del sistema de red-hat (gfs2) V/S el de oracle (ocfs2), no hare las pruebas ya que las conclusiones las debe sacar cada uno de que sistema es mejor que el otro, aunque esto dependera mucho de la distribucion que se use ya que son nativos de sus propios sistemas y optimazados para ello.
No hay comentarios.:
Publicar un comentario