sábado, 21 de noviembre de 2015

Píldora: MySQL Replicación Maestro - esclavo



Hola! hoy te traigo mi receta para montar una replicación M/s MySQL
Espero que te sea tan útil como me resulta a mí!



Ten en cuenta que está basada en distribuciones RHEL, pero se puede adaptar a cualquier otra
[ (M): ejecutar en Master ]
[ (s): ejecutar en slave]

# Actualizar sistema en (M) y (s)


sudo yum update

# Añadir a los repositorios los oficiales de Percona en (M) y (s)


sudo yum install http://www.percona.com/downloads/percona-release/redhat/0.1-
3/percona-release-0.1-3.noarch.rpm

# Instalamos, levantamos y securizamos MySQL en (M) y (s)

sudo yum install Percona-Server-server-55
sudo service mysql start
sudo mysql_secure_installation

(tendremos que introducir los datos que nos solicite)

# Abro puertos de comunicación de MySQL en (M) y (s)

sudo firewall-cmd --zone= --add-service=mysql
iptables -L -n # y compruebo que ya aparece el servicio mysql

# Configurar en (M)

sudo vi /etc/my.cnf

# y añado en [mysql]
------
log-bin=mysql-bin
server-id=1
------
guardo, salgo y ejecuto

sudo service mysql restart

y en (s) hago casi lo mismo

sudo vi /etc/my.cnf

# y añado en [mysql]
------
server-id=2
------
sudo service mysql restart

# Configurar usuarios de replicación (M)

mysql -p -u root
mysql > CREATE USER 'repl'@'%.mydomain.com' IDENTIFIED BY 'slavepass123';
mysql > GRANT REPLICATION SLAVE ON *.* TO 'repl';
mysql > FLUSH TABLES WITH READ LOCK;
mysql > SHOW MASTER STATUS;

En el último paso, guardamos los datos File y Position para seguir en la provisión
Seguimos en (s)

mysql -p -u rootmysql >  CHANGE MASTER TO MASTER_HOST="Master_Host",
MASTER_USER="repl", MASTER_PASSWORD="slavepass123";,
MASTER_LOG_FILE=";mysql-bin.000001", MASTER_LOG_POS=551;

Como prueba creo una BD y compruebo que se crea automáticamente en el otro servidor
Después vuelco una BD pequeña y compruebo que se crea igualmente en el otro servidor

lunes, 28 de septiembre de 2015

Subvolúmenes (bricks) no montan en volúmenes gluster

Para ver el estado de un volumen gluster, hago:

[root@gest ~]# gluster volume status drupriv
Status of volume: drupriv
Gluster process Port Online Pid
------------------------------------------------------------------------------
Brick 172.17.229.77:/mnt/gluster/data 49152 Y 5270
Brick 172.17.230.164:/mnt/gluster/data 49152 Y 28083
Brick 172.17.229.250:/mnt/gluster/data 49152 Y 16775
NFS Server on localhost 2049 Y 5282
Self-heal Daemon on localhost N/A Y 5295
NFS Server on 172.17.229.124 2049 Y 2287
Self-heal Daemon on 172.17.229.124 N/A Y 2292
NFS Server on 172.17.229.113 2049 Y 2327
Self-heal Daemon on 172.17.229.113 N/A Y 2332
NFS Server on 172.17.229.250 2049 Y 16788
Self-heal Daemon on 172.17.229.250 N/A Y 16796
NFS Server on 172.17.230.164 2049 Y 28096
Self-heal Daemon on 172.17.230.164 N/A Y 28104
Task Status of Volume drupriv
------------------------------------------------------------------------------
There are no active volume tasks

y lo que obtengo es:

- por un lado el estado de los bricks que forman el volumen:


Brick 172.17.229.77:/mnt/gluster/data 49152 Y 5270
Brick 172.17.230.164:/mnt/gluster/data 49152 Y 28083
Brick 172.17.229.250:/mnt/gluster/data 49152 Y 16775

- por otro lado, los servidores que están montando ese volumen (por NFS en este caso)


NFS Server on localhost 2049 Y 5282
Self-heal Daemon on localhost N/A Y 5295
NFS Server on 172.17.229.124 2049 Y 2287
Self-heal Daemon on 172.17.229.124 N/A Y 2292
NFS Server on 172.17.229.113 2049 Y 2327
Self-heal Daemon on 172.17.229.113 N/A Y 2332
NFS Server on 172.17.229.250 2049 Y 16788
Self-heal Daemon on 172.17.229.250 N/A Y 16796
NFS Server on 172.17.230.164 2049 Y 28096
Self-heal Daemon on 172.17.230.164 N/A Y 28104

En el caso de que algún subvolumen no esté online (esto es cuando en lugar de una Y
tenemos una N), podemos levantarlo de la siguiente manera (se hacen todos a la vez, no
por partes)


gluster volume start drupriv

y si falla o no los levanta, podemos llegar a forzarlos:


gluster volume start drupriv force

Una vez forzado, comprueba que se han montado todas las unidades, remonta los glusters
y debería verse todo con normalidad

martes, 21 de julio de 2015

Píldora: montar / en un freebsd que no arranca por un problema en (otro) disco

Si un día un servidor FreeBSD no os levanta porque tiene algún problema con un disco, este es el procedimiento para montar el disco / y arreglar lo que sea necesario (como por ejemplo, editar el /etc/fstab y comentar el disco que da problemas)

(una vez entráis en la shell)


fsck -y
mount -u /
mount -a -t ufs
swapon -a


Por descontado, esto no sirve si el disco con problemas es el root ("/")

miércoles, 6 de mayo de 2015

Píldora: Activar logs de MySQL sin reiniciar

Queréis habilitar/deshabilitar los de las slow queries de MySQL pero no podéis reiniciar el servicio MySQL?
Venga, puedes hacerlo fácilmente. Entra en la shell de MySQL y haz

 
SHOW VARIABLES;
SET GLOBAL slow_query_log = 'ON';  
FLUSH LOGS; 

  
En el caso de querer deshabilitar los logs (u otras funciones), lo ponemos en OFF
Recuerda que cuando reinicies el servicio, la configuración que prevalece es la del my.cnf. Este cambio es temporal.

martes, 20 de enero de 2015

Configurar un servidor sFTP y chrootear usuarios

Después de pasarme media mañana para configurar una estructura concreta de usuarios con una escalera de permisos a los que además había que chrootear, he encontrado una página (la única en internet, diría yo) en la que se explica COMPLETAMENTE y PASO POR PASO cómo chrootear un usuario sFTP. Y como nota mental, me lo apunto aquí, que no se diga!


Primero creamos un grupo de trabajo, que será al que pertenecerán los usuarios que tenga que enjaular

groupadd sftp

Después creo el usuario 'pedro' y lo asigno este grupo

useradd -G sftp -s /bin/false pedro

Si el usuario está creado, sólo hay que definirle su nuevo grupo; yo lo hago editando el

/etc/passwd

y cambiando el grupo antiguo por el nuevo. Tal vez no sea bonito, pero sí efectivo. Ah, y recuerda cambiarle los permisos a la home de 'pedro', para que coincidan con los que acabas de definirle:

chgrp sftp pedro

Ahora editamos el archivo de configuración del SSHd, donde también definimos los parámetros del sFTP

vi /etc/ssh/sshd_config

Busca y comenta la línea

Subsystem sftp /usr/libexec/openssh/sftp-server

y añade esta en su lugar

Subsystem sftp internal-sftp

y al final de todo, añade estas líneas:

Match Group sftp
   X11Forwarding no
  AllowTcpForwarding no
  ChrootDirectory %h                    
  ForceCommand internal-sftp  

donde
"Match Group sftp" indica que las siguientes líneas se aplicaran a los usuarios que pertenezcan a este grupo
"ChrootDirectory %h" es el directorio (la home del usuario) que se utilizará para hacer chroot cuando el usuario se autentifique.
"ForceCommand internal-sftp" fueza la ejecucuón del 'internal-sftp' e ignora cualquier comando que sea mencionado en el archivo ~/.ssh/rc

Después, reinicia el servicio SSHd


service ssh restart

Y por último, los permisos; esta es la parte que menos se explica porque todos sabemos de permisos, pero no! cuidado... no es lo que esperas a primera vista.

chmod 755 /home/pedro
chown root /home/pedro
chgrp -R sftp /home/pedro --- (por si aún no lo habías hecho)

y ya está. Con esto el directorio está enjaulado, pero no podrás escribir. Si además necesitas subir archivos o escribir de alguna manera en el directorio, tendrás que crear uno nuevo dentro de este que será el que tenga permisos para todo

mkdir /home/pedro/uploads
chown pedro /home/pedro/uploads

Y ya lo tienes; haz las pruebas que necesites, que ya es tuyo!
No parece mucho, pero la verdad es que me ha costado un poquito, y si puede servirle de ayuda a alguien, mejor que mejor...



Ah, casi me olvido; la fuente original es ésta, lo mío es prácticamente una traducción

jueves, 15 de enero de 2015

Píldora: uso de memoria por proceso en Linux

Cuando estás analizando un sistema con problemas y necesitas saber cuánta RAM consume cada proceso, aquí un pequeño truco...

ps -e -orss=,args= | sort -b -k1,1n | pr -TW$COLUMNS


Aviso: depende del sistema, la última variable es posible que tengas que ponerla tras un espacio