lunes, 23 de mayo de 2016

cluster de 2 nodos en centos/redhat

* Crear cluster

Video del funcionamiento del cluster

* Es requerido el grupo de paquetes "High Availability Management"
* Iniciar servicio ricci y hacerlo persistente para autoinicio
* Establecer password para el usuario ricci
* Asegurar comunicacion entre los nodos del clsuter
* En el archivo hosts son requeridas las ips y hostname de los nodos

ccs -h rhelcluster01 --createcluster rhelcluster
* Añadir nodos

ccs -h rhelcluster01 --addnode rhelcluster02
ccs -h rhelcluster01 --addnode rhelcluster01


* Listar nodos

ccs -h rhelcluster01 --lsnodes
* Agregar fence del cluster

ccs -h rhelcluster01 --addfencedev myfence agent=fence_virt 


Si es equipo fisico hp y tiene ILO

<fencedevice agent="fence_ilo4" auth="password" ipaddr="ip_ilo" login="cluster" name="nodo1" passwd="cluster123"/>
* Agregar un metodo al fence del cluster

ccs -h rhelcluster01 --addmethod mthd1 rhelcluster01
ccs -h rhelcluster01 --addmethod mthd1 rhelcluster02


* Agregar un dominio del failover (ordered) tomando en cuenta la prioridad de los nodos el dominio de failover

ccs -h rhelcluster01 --addfailoverdomain rhelcluster ordered
* Se agregan nodos el dominio del failover

ccs -h rhelcluster01 --addfailoverdomainnode rhelcluster rhelcluster01
ccs -h rhelcluster01 --addfailoverdomainnode rhelcluster rhelcluster02


* Visualiza configuracion del dominio failover

ccs -h rhelcluster01 --lsfailoverdomain
* Agregar un filesystem para failover

ccs -h rhelcluster01 --addresource fs name=cluster_fs device=/dev/vg_cluster/lv_datos mountpoint=/cluster_fs fstype=ext4
* Agregar un servicio al dominio del failover

ccs -h rhelcluster01 --addservice cluster_filesystem domain=rhelcluster recovery=relocate autostart=1
* Agregar un subservicio del dominio del failover

ccs -h rhelcluster01 --addsubservice cluster_filesystem fs ref=cluster_fs

ccs -h rhelcluster01 --addsubservice cluster_filesystem ip address=10.188.18.76 monitor_link=yes sleeptime=10



* Crear un disco quorum (disco compartido)

mkqdisk -c /dev/vdc -l clusterqdisk
* Agregar el quorum al cluster

ccs -h rhelcluster01 --setquorumd label=clusterqdisk 



** Es posible agregar una heuristica para el voto del quorum
  

 <heuristic program="ping -c1 -w2 10.188.18.1"/>

* Listar quorum y status del quorum

ccs -h rhelcluster01 --lsquorum
mkqdisk -L


* Propagar configuracion del cluster

ccs -h rhelcluster01 --sync --activate
* Validar configuracion de cluster

ccs -h rhelcluster01 --checkconf
* Activar todos los nodos

ccs -h rhelcluster01 --startall
* Activar un nodo

ccs -h rhelcluster01 --start

* Desactivar un nodo

ccs -h rhelcluster01 --stop
* Ver estado del cluster

clustat
Ejemplo de salida

[root@rhelcluster02 ~]# clustat
Cluster Status for rhelcluster @ Mon May 23 12:52:41 2016
Member Status: Quorate

Member Name                                 ID   Status
------ ----                                 ---- ------
rhelcluster01                                   1 Online, rgmanager
rhelcluster02                                   2 Online, Local, rgmanager
/dev/block/252:32                               0 Online, Quorum Disk

Service Name                       Owner (Last)                       State        
------- ----                       ----- ------                       -----        
service:cluster_filesystem         rhelcluster01                      started      
service:cluster_filesystem2        rhelcluster02                      started


* Si se requiere gfs2 (shared filesystem )

service clvmd start
chkconfig clvmd on
mkfs -t gfs2 -p lock_dlm -t rhelcluster:lvgfs -j 2 /dev/vg_compartido/lvgfs

       - Monstar gfs2
       mount -t gfs2 -o noatime /dev/vg_compartido/lvgfs /gfs/
       - En el fstab
       /dev/mapper/vg_compartido-lvgfs /gfs gfs2 defaults,noatime,nodiratime 0 0


* Salida de archivo de configurcion /etc/cluster/cluster.conf
________________________
<?xml version="1.0"?>
<cluster config_version="25" name="rhelcluster">
       <fence_daemon/>
       <clusternodes>
               <clusternode name="rhelcluster01" nodeid="1">
                       <fence>
                               <method name="mthd1">
                                       <device name="myfence"/>
                               </method>
                       </fence>
               </clusternode>
               <clusternode name="rhelcluster02" nodeid="2">
                       <fence>
                               <method name="mthd1">
                                       <device name="myfence"/>
                               </method>
                       </fence>
               </clusternode>
       </clusternodes>
       <cman/>
       <fencedevices>
               <fencedevice agent="fence_virt" name="myfence"/>
       </fencedevices>
       <rm>
               <failoverdomains>
                       <failoverdomain name="rhelcluster" nofailback="0" ordered="1" restricted="0">
                               <failoverdomainnode name="rhelcluster01" priority="1"/>
                               <failoverdomainnode name="rhelcluster02" priority="2"/>
                       </failoverdomain>
                       <failoverdomain name="rhelcluster2" nofailback="0" ordered="1" restricted="0">
                               <failoverdomainnode name="rhelcluster02" priority="1"/>
                               <failoverdomainnode name="rhelcluster01" priority="2"/>
                       </failoverdomain>
               </failoverdomains>
               <resources>
                       <fs device="/dev/vg_cluster/lv_datos" fstype="ext4" mountpoint="/cluster_fs" name="cluster_fs"/>
                       <fs device="/dev/vg_cluster2/lvcluster2" fstype="ext4" mountpoint="/cluster2" name="cluster2"/>
                       <fs device="/dev/vg_cluster3/lv_cluster3" fstype="ext4" mountpoint="/cluster3" name="cluster3"/>
               </resources>
               <service autostart="1" domain="rhelcluster" name="cluster_filesystem" recovery="relocate">
                       <fs ref="cluster_fs"/>
                       <ip address="8.8.8.76" monitor_link="yes" sleeptime="10"/>
               </service>
               <service autostart="1" domain="rhelcluster2" name="cluster_filesystem2" recovery="relocate">
                       <fs ref="cluster2"/>
                       <ip address="
8.8.8.77" monitor_link="yes" sleeptime="10"/>
                       <fs ref="cluster3"/>
               </service>
       </rm>
       <quorumd label="clusterqdisk"/>
</cluster>
________________________

<?xml version="1.0"?>
<cluster config_version="60" name="ccc">
       <clusternodes>
               <clusternode name="ccc01" nodeid="1" votes="1">
                       <fence>
                               <method name="mthd1">
                                       <device name="nodo1"/>
                               </method>
                       </fence>
               </clusternode>
               <clusternode name="ccc02" nodeid="2" votes="1">
                       <fence>
                               <method name="mthd1">
                                       <device name="nodo2"/>
                               </method>
                       </fence>
               </clusternode>
       </clusternodes>
       <cman transport="udpu"/>
       <totem token="27000"/>
       <fencedevices>
               <fencedevice agent="fence_ilo4" auth="password" ipaddr="8.8.8.82" login="cluster" name="nodo1" passwd="ilo123"/>
               <fencedevice agent="fence_ilo4" auth="password" ipaddr="8.8.8.83" login="cluster" name="nodo2" passwd="ilo123"/>
       </fencedevices>
       <rm>
               <failoverdomains>
                       <failoverdomain name="ccc_pakcge1" nofailback="0" ordered="1" restricted="0">
                               <failoverdomainnode name="ccc01" priority="1"/>
                               <failoverdomainnode name="ccc02" priority="2"/>
                       </failoverdomain>
                       <failoverdomain name="ccc_pakcge2" nofailback="0" ordered="1" restricted="0">
                               <failoverdomainnode name="ccc02" priority="1"/>
                               <failoverdomainnode name="ccc01" priority="2"/>
                       </failoverdomain>
               </failoverdomains>
               <resources>
                       <fs device="/dev/vgxxn1/lvaaa" fstype="ext4" mountpoint="/opt/app/aaa/" name="lvaaa"/>
                       <fs device="/dev/vgxxn1/lvrrr_prm" fstype="ext4" mountpoint="/opt/app/rrr/prm/" name="lvrr_prm"/>
                       <fs device="/dev/vgxxn1/lvwww" fstype="ext4" mountpoint="/opt/app/www/" name="lvwww"/>
                       <fs device="/dev/vgxxn2/lvaaa2" fstype="ext4" mountpoint="/opt/app/aaa2/" name="lvaaa2"/>
                       <fs device="/dev/vgxxn2/lvrrr_sec" fstype="ext4" mountpoint="/opt/app/rrr/sec/" name="lvrrr_sec"/>
               </resources>
               <service autostart="1" domain="ccc_pakcge1" name="pakcge1" recovery="relocate">
                       <fs ref="lvaaa"/>
                       <fs ref="lvrrr_prm"/>
                       <fs ref="lvwww"/>
                       <ip address="8.8.8.84" monitor_link="yes" sleeptime="10"/>
               </service>
               <service autostart="1" domain="ccc_pakcge2" name="pakcge2" recovery="relocate">
                       <fs ref="lvaaa2"/>
                       <fs ref="lvrrr_sec"/>
                       <ip address="
8.8.8.85" monitor_link="yes" sleeptime="10"/>
               </service>
       </rm>
       <quorumd label="cluster_ccc" votes="2">
               <heuristic program="ping -c1 -w2 
8.8.8.1"/>
       </quorumd>
</cluster>


________________________

martes, 3 de mayo de 2016

Cyanogen 13 en moto g3

Anexo procedimiento para la instalación de cyanogen mod 13 en un equipo moto g 3, usando una estacion de trabajo con linux arch se requiere instalar los siguientes paquetes a travez de aur

yaourt ncurses5-compat-libs

Posteriormente habilitar multilib en los repos:

tail /etc/pacman.conf  -n 1
Include = /etc/pacman.d/mirrorlist

yaourt android-sdk

Ya teniendo instaladas las herramientas para ejecutar comandos desde nuestra terminal linux, es requerido desbloquear el bootloader del telefono:

Obtener id de nuestro telefono

fastboot oem get_unlock_data

Una vez obtenidos los datos ingresarlos en la pagina:


Para proceder al desbloqueo

fastboot oem unlock 6C67...

Una vez desbloqueado el bootloader mandar el reinicio del telefono en modo bootloader

adb reboot bootloader

Lo siguiente es cargar el kernel y el sistema operativo

Se puede obtener desde:


Carga de kernel:

fastboot flash recovery ~/Downloads/cm-13.0-20160502-NIGHTLY-osprey-recovery.img

Después de procede al reinicio del teléfono en modo recovery:

adb reboot recovery

Ya una vez cargado el modo recovery, se elige la opción install update,y instalar desde el modo ADB,el teléfono se quedara en modo espera hasta que enviaron el sistema operativo a tra vez de adb

adb sideload ~/Downloads/cm-13.0-20160502-NIGHTLY-osprey.zip
Al terminar el proceso podemos reiniciar el teléfono y cargar el sistema ahora con cyanogen.

Para instalar la tienda de aplicaciones de google es posible hacerlo con twrp


fastboot flash recovery ~/Downloads/twrp-osprey-3.0.2-r1.img


La tienda de aplicaciones la obtenemos en:


Y la podemos enviar al telefono una vez que este en modo recovery

adb push ~/Downloads/open_gapps-arm-6.0-nano-20160501.zip  /data/media/0

Desde el menú del modo recovery de twrp en la opcion de install procedemos a buscar el zip de las gapps e instalarlo, es posible que se deba de limpiar el cache desde twrp si es que manda error al instalar las gapps