lunes, 27 de octubre de 2014

Tips rápidos - Escanear Discos, Camio de hora, Liberar cache.

Tips rápidos del día.

Escanear Discos
Cuando se presentan discos desde Storage o Vmware, donde host0 es la controladora.

echo "- - -" > /sys/class/scsi_host/host0/scan

Luego buscar la unidad nueva con fdisk, crear partición, volumen y formatear

Cambiar hora manualmente
Formato AAMMDD HH:MM

date -s "20141027 12:00"

Liberar Cache
Para cache en memoria, con esto estamos forzando a nuestro kernel a liberar la pagecache, los inodos y las dentries.

sync; echo 3 > /proc/sys/vm/drop_caches

jueves, 23 de octubre de 2014

Clúster RHEL 7 con Pacemaker

Voy a compartir con ustedes una guía que nació de un proyecto realizado por mi. La instalación de un clúster activo-pasivo para aplicación web, usando la nueva versión de Red Hat Enterprise Linux 7 (RHEL 7), de más decir que es compatible con Centos 7 y Fedora. Para ello creamos un clúster con un Filesystem compartido, IP de servicios virtual, Apache, Tomcat y MariaDB. En primera instancia vamos a Tratar solo la Ip virtual y Apache. Copiaré la guía en borrador para luego hacer correcciones.

Configuración de software y nodos

En ambos nodos realizar:
Agregar nodos a tabla hosts.
10.132.42.160   nodo1 nodo1.unix.com
10.132.42.161   nodo2 nodo1.unix.com
10.132.42.162   vipmysql
10.132.42.163   vipapache
10.132.42.168   ilo_nodo1
10.132.42.169   ilo_nodo2

Deshabilitar firewalld y selinux
# systemctl stop firewalld
# systemctl disable firewalld

Instalar software Cluster
# yum install pcs fence-agents-all

Cambiar password de usuario
# passwd hacluster

Habilitar servicio
# systemctl start pcsd.service
# systemctl enable pcsd.service

Autorizar nodos y usuario (hacluster), realizar en un solo nodo
# pcs cluster auth nodo1 nodo2

Creación de Clúster y servicios

Crear clúster con el nombre “wcluster” y  habilitar cluster al iniciar maquinas
# pcs cluster setup --start --name wcluster nodo1 nodo2
# pcs cluster enable –-all

Validar estado
# pcs cluster status

Como es un clúster de 2 nodos solamente, deshabilitar quorum
# pcs property set no-quorum-policy=ignore

Configurar Fencing para los nodos
Se debe crear un dispositivo de fencing, con el fin de recuperar el servicio en nodo con fallas. Existen distintos agentes dependiendo del tipo de máquina, pueden ser ILO, SMNP, APC, Vmware, Kvm. Se debe configurar el fencing antes que los recursos para que estos inicien automáticamente o después si prefieren.

Para ver lista de agentes disponibles
# pcs stonith list

La sintaxis es:
# pcs stonith create “nombre” agente params var1=1 var2=1

Si no existen dispositivos para fencing, es posible deshabilitarlo
# pcs property set stonith-enabled=false

Ver Fencing para ejemplos.

Instalar servicio para cluster, ejemplo Apache
# yum group install web-server php

Para que el clúster pueda obtener el status de apache agregar al archivo httpd.conf

<Location /server-status>
  SetHandler server-status
  Order deny,allow
  Deny from all
  Allow from 127.0.0.1
</Location>

Configuración de volumen compartido
Se toma como supuesto que existe un grupo y volumen generado en ambos nodos, indistinto del método de replicación u origen (storage, drbd, rsync,etc), llamado vgdata y lvdata respectivamente. Se debe evitar que el volumen sea activado por el sistema. En el archivo /etc/lvm/lvm.conf, descomentar la línea y agregar los grupos de volúmenes que si serán activados al inicio del SO.

Identificar vg
# vgs --noheadings -o vg_name
vg_root vg_home vgdata

Modificar /etc/lvm/lvm.conf
# volume_list = [ "vg_root", "vg_home" ]

Reconstruir initrd
# dracut -H -f /boot/initramfs-$(uname -r).img $(uname -r)

Reiniciar ambos nodos y validar cluster
# pcs cluster status

Configurar recursos y grupo de servicio
Agregar grupo de volumen (opcional)
# pcs resource create my_lvm LVM volgrpname=vgdata exclusive=true --group apachegroup

Agregar volumen y montaje de filesystem
# pcs resource create w_fs Filesystem device="/dev/vgdata/lvdata" directory="/var/www" fstype="xfs" --group apachegroup

Agregar IP Virtual
# pcs resource create vipapache IPaddr2 ip=10.132.42.163 cidr_netmask=24 --group apachegroup

Agregar Apache
# pcs resource create website apache configfile="/etc/httpd/conf/httpd.conf" statusurl="http://127.0.0.1/server-status" --group apachegroup

Configurar orden y preferencia
Los recursos están agrupados y en orden de creación, para asegurar el orden de los servicios es opcional.
# pcs constraint order w_fs then vipapache
# pcs constraint order vipapache then website

Para asignar preferencia al grupo de servicios sobre un nodo (por defecto es infinito)
# pcs constraint location apachegroup prefers nodo1=50
# pcs constraint location apachegroup prefers nodo2=0

Fencing

Es posible crear dispositivos de fencing utilizando distintos agentes.

Ejemplo fencing con vwmare
Ver lista de servidores
#  fence_vmware_soap -z -l vmwareuser -p passwd -a esxhost -o list --ssl-insecure

NODO1,564daf6c-c3d9-3089-c448-c5f70ddb6609
NODO2,564dce63-1623-c585-18a4-c48700f4104f

Crear fencing device usando nombre o UUID, host, usuario y password vmware.
# pcs stonith create fence_nodo1 fence_vmware_soap params ipaddr="esxhost" login="vmwareuser" passwd="passwd" ssl=1 port="NODO1" action="reboot" ssl_insecure=1 pcmk_host_list="nodo1"

# pcs stonith create fence_nodo2 fence_vmware_soap params ipaddr="esxhost" login="vmwareuser" passwd="passwd" ssl=1 port="NODO2" action="reboot" ssl_insecure=1 pcmk_host_list="nodo2"

Ejemplo fencing con ILO / ILO2
# pcs stonith create fence_nodo1 fence_ilo params ipaddr="ilo_nodo1" login="admin" passwd="admin123" action="reboot" pcmk_host_list=nodo1  pcmk_host_check=static-list

Ejemplo fencing con ILO3 / ILO4 usar ipmilan
pcs stonith create fence_nodo1 fence_ipmilan params ipaddr="ilo_nodo1" login="admin" passwd="admin123" action="reboot" pcmk_host_list=nodo1  pcmk_host_check=static-list

Tomcat
Agregar servicio tomcat personalizado
# pcs resource create tomcat tomcat java_home="/usr/java/default" catalina_home="/usr/share/tomcat" --group apachegroup

Como alternativa agregar servicio tomcat del sistema
# pcs resource create tomcat systemd:tomcat --group apachegroup

MySQL o MariaDB

Montar volumen manualmente y cambiar los permisos primero (suponiendo que hay un fs para MySQL)

Instalar MariaDB
# yum install mariadb-server

Configurar recursos y grupo de servicio
Agregar volumen y montaje de filesystem
# pcs resource create fs_mysql Filesystem device="/dev/vgdata/lvbase" directory="/var/lib/mysql" fstype="xfs" --group mysqlgp

Agregar IP Virtual
# pcs resource create vipmysql IPaddr2 ip=10.132.42.162 cidr_netmask=24 --group mysqlgp

Agregar MySQL del sistema
# pcs resource create mysqldb mysql config=/etc/my.cnf enable_creation=1

O MySQL como servicio del sistema
# pcs resource create mysqldb systemd:mariadb --group mysqlgp

Tips

Si el periodo de monitoreo es muy bajo, es necesario subir timeout por defecto antes de generar los recursos
# pcs resource op defaults timeout=240s
# pcs resource op defaults

Verificar configuración
# crm_verify -L

Para evitar que los servicios cambien de nodo al levantar un servidor se configura el “stickiness”, tiene que ser mayor al valor más alto de “location” (defecto 0).
# pcs resource defaults resource-stickiness=100

Fin

Finalmente, después de todo se ve más o menos así:








jueves, 19 de junio de 2014

Crear Logical Volume

Un tip rápido para crear Volúmenes Lógicos en Linux.

- Primer paso identificar el disco, para nuestro ejemplo será "sdb"

fdisk -l /dev/sdb

- Crear partición física en disco, usamos "c" para apagar DOS compatible y "u" para mostrar sectores en vez de cilindros.

fdisk -cu /dev/sdb

Dentro de "fdisk", utilizamos opción "p" para ver particiones, "n" crear nueva partición, seleccionamos nuevamente "p" para partición primaria, a continuación indicara el cilindro o sector donde comienza, presionamos "Enter", mostrará el último sector o cilindro "Enter". Luego debemos cambiar el tipo de partición con "t", seleccionando "8e" que corresponde a LVM. Con esto se creará una nueva partición física, marcada como LVM, finalmente presionamos "w" para guardar y salir de "fdisk".

- Nuestro disco y su partición se llamará /dev/sdb1, con esto creamos nuestro "volumen físico".

pvcreate /dev/sdb1

- Ahora debemos crear un nuevo "grupo de volumen". El grupo de volumen puede contener varios "volúmenes lógicos".

vgcreate vgnuevo /dev/sdb1

-Crear el "volumen lógico". Con -L indicamos el tamaño en KB, MB o GB, en este caso 20G suponiendo que el disco o espacio libre en grupo de volumen usado es mayor.

lvcreate -n lvnuevo -L 20G vgnuevo

- A continuación debemos dar formato a nuestro volumen, con el comando mkfs, puede ser en ext3 o ext4 según quieran.

mkfs -t ext4 /dev/mapper/vgnuevo-lvnuevo

- Y finalmente debemos montar nuestro volumen en algún directorio para poder utilizarlo.

mount /dev/mapper/vgnuevo-lvnuevo /datos

Recuerden que para que monte automáticamente al iniciar el sistema deben agregar la entrada en /etc/fstab

/dev/mapper/vgnuevo-lvnuevo /datos             ext4    defaults        0 0

Al principio es un poco difícil de entender. Tenga en cuenta que primero deben crear una partición física, luego volumen físico (pv), después grupo de volumen (vg), y finalmente el volumen lógico (lv). Este es el que finalmente es formateado y montado para usar.


viernes, 2 de mayo de 2014

Instalar Samba RHEL o Centos 6


A continuacion una pequeña guía para instalar samba server.

yum install samba

Configurar /etc/samba/smb.conf

workgroup = WORKGROUP
server string = Samba Server Version %v
netbios name = MYSERVER
hosts allow = 127., 192.168.0

# Directorio a compartir
[carpeta]
comment = FTP Linux
path = /data/carpeta
writable = yes
directory mask = 0755
create mask = 0644


Cliente y servidores en la red /etc/samba/lmhosts

127.0.0.1 localhost
192.168.0.10 server


Crear usuario y password samba


useradd -c "Usuario para Windows" -s /sbin/nologin usuario
smbpasswd -a usuario


Agregar servicio al inicio e iniciar

chkconfig smb on
service smb start


Probar configuración

testparm

Probar servidor localmente o desde un cliente

smbclient –L server

miércoles, 30 de abril de 2014

Instalar FTP con chroot en RHEL 5 y 6

Una guía rápida para habilitar FTP con chroot. Esto permite enjaular a los usuarios en su directorio, así no podrán ver ni navegar directorios de sisetma u otros usuarios.

Instalar paquetes vsftpd

yum install vsftpd

Para enjaular al usuario en su propio directorio, se debe activar la opción chroot_local_user

Modificar el archivo

vi /etc/vsftpd/vsftpd.conf

Agregar o modificar

chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list


Crear el archivo

touch /etc/vsftpd/chroot_list

Directorio /etc/vsftpd debe contener:

chroot_list
user_list
vsftpd.conf


Como siempre debemos subir el servicio y habilitar su inicio automático.

service vsftpd start
chkconfig vsftpd on


Por defecto todos los usuarios creados estarán enjaulados. El archivo chroot_list contiene las excepciones. El archivo user_list contiene los usuario que no tienen FTP.

El directorio para los usuarios FTP será /data/ftp. Es necesario crear los usuarios de la siguiente manera, indicando directorio home, comentario y la consola.

useradd -c "Usuario FTP" -d /data/ftp/usuario -m -s /sbin/nologin usuario

passwd usuario

Guía para Montar discos con formato NTFS en RHEL 5

Vamos a empezar con cosas sencillas. En esta ocasión instalar el modulo fuse-ntfs, para que linux pueda leer y escribir en este sistema de archivos.

Pueden descargar los paquetes desde este sitio o el que deseen:

http://pkgs.repoforge.org/fuse-ntfs-3g/

- Instalar fuse, fuse-ntfs-3g y kmod-fuse

     yum localinstall fuse-xxx.rpm fuse-ntfs-3g-xxx.rpm kmod-fuse-xxx.rpm

- Montar modulo del kernel

     modprobe fuse

- Montar disco

     mount -t ntfs-3g /dev/sdx /media/disco

Listo, con estos sencillos pasos ya deberían poder ver el filesystem y leer o escribir datos.

martes, 29 de abril de 2014

Ingeniero Linux

Hola, mi nombre es Fernando, soy Ingeniero de Sistemas. Trabajo para una compañía dedicada a los servicios IT en Chile. Tengo certificación RHCE, con experiencia de más de 10 años en uso y administración de sistemas basados en GNU/Linux.
Espero que este blog sea de gran ayuda para novatos y no tanto. Subiré algunas guías y apuntes personales, que nos puedan ser útiles en el día a día o para sacar "cachos".