Implementaciones libres de S3
Lista de implementaciones open source del protocolo S3 para almacenamiento en red:
RustFS
PetaSAN
Minio
Garage
SeaweedFS
Ceph+RadosGateway
Etiquetas: Administracion, Linux
Lista de implementaciones open source del protocolo S3 para almacenamiento en red:
RustFS
PetaSAN
Minio
Garage
SeaweedFS
Ceph+RadosGateway
Etiquetas: Administracion, Linux
Anoto por aquí una serie de cosas a tener en cuenta al instalar un nuevo sistema Linux para optimizarlo todo lo posible:
- Habilitar zram. En Debian instalo el paquete zram-tools y habilito el servicio zramswap.service en systemctl
- Usar noatime,nodiratime o relatime en los sistemas de ficheros de Linux para evitar escrituras innecesarias (/etc/fstab)
- Añadir los parámetros --disk-cache-dir=/dev/null --disk-cache-size=1 al arranque de Chrome / Chromium para deshabilitar la caché y evitar escrituras innecesarias en disco (/etc/chromium.d/default-flags).
- Establecer browser.cache.disk.enable=false en about:config de Firefox para deshabilitar la caché y evitar escrituras innecesarias en disco.
- Deshabilitar servicios innecesarios en systemctl.
- Deshabilitar ipv6 si no vamos a usarlo:
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
net.ipv6.conf.tun0.disable_ipv6 = 1
- Deshabilitar ipv6 en NetworkManager, ya que por defecto escucha en el puerto 546/udp:
nmcli connection modify <nombre_conexion> ipv6.method ignore
- Montar /tmp y /var/tmp como tmpfs
Etiquetas: Administracion, Configuración, Linux
strings /sys/firmware/acpi/tables/MSDM | grep -E '[A-Z0-9]{5}(-[A-Z0-9]{5}){4}'
Necesitaremos ejecutarlo como usuario root para que el comando funcione.
En Windows se puede consultar ejecutando este comando en PowerShell como administrador:
wmic path softwarelicensingservice get OA3xOriginalProductKey
Etiquetas: Administracion, Linux, Windows
La web cheat.sh es una maravilla que permite obtener una referencia rápida y ejemplos de uso de comandos Linux.
Para consultar algo desde línea de comandos de forma rápida podemos añadir al fichero .bashrc lo siguiente:
alias cheat='function _cheat(){ curl cheat.sh/$1; };_cheat'
Y lo usaríamos de la siguiente forma para consultar ejemplos de openssl:
cheat openssl
Etiquetas: Administracion, Documentacion, Linux
Etiquetas: Administracion, Configuración, Curiosidades, Hardware, Linux, Navegadores
inst.ks=http://IP_SERVIDOR_WEB/ks.cfg ip=IP_ESTATICA::GATEWAY:NETMASK:HOSTNAME.DOMAIN:INTERFAZ:none
IP_SERVIDOR_WEB es la ip del servidor web donde alojamos el fichero kickstart
IP_ESTATICA es la ip de la interfaz de red local que se configura inicialmente donde instalamos para poder acceder al servidor web anterior
GATEWAY ip del gateway
NETMASK máscara de subred de la interfaz de red local
HOSTNAME.DOMAIN nombre y dominio que tendrá inicialmente el equipo
INTERFAZ nombre de la interfaz de red, normalmente enp1s0 o eth0
Un ejemplo de fichero kickstart sería el siguiente:
# Generated by Anaconda 34.25.0.29 # Generated by pykickstart v3.32 #version=RHEL9 text repo --name="AppStream" --baseurl=file:///run/install/sources/mount-0000-cdrom/AppStream %addon com_redhat_kdump --disable %end # Keyboard layouts keyboard --xlayouts='es' # System language lang es_ES.UTF-8 # Network information network --bootproto=dhcp --device=enp1s0 --noipv6 --no-activate # Use CDROM installation media cdrom %packages @^minimal-environment %end # Run the Setup Agent on first boot firstboot --enable # Generated using Blivet version 3.4.0 ignoredisk --only-use=vda autopart # Partition clearing information clearpart --none --initlabel timesource --ntp-disable # System timezone timezone Europe/Madrid --utc # Root password rootpw --iscrypted $6$d2fDfieZew3$7dP/2Movv18TJoIZ9KEM4Iwei0NF6m6a9dDAGMj013f2qu6ReLIv9geB/BFBcQ1vrjKFA5VICIo0yS8S4ze0r/
Etiquetas: Administracion, Linux
udisksctl power-off -b /dev/sdb udisks --detach /dev/sdbEl disco /dev/sdb debe cambiarse por el que queramos desconectar de forma segura.
Etiquetas: Administracion, Linux
ansible localhost -m debug -a 'var=groups' ansible localhost -m debug -a 'var=groups.keys()'
Etiquetas: Administracion, Ansible, Linux
for servicio in $(docker service ls -f label=com.docker.lb.hosts --format "{{.Name}}")
do
docker service inspect "$servicio" --format '{{ range $k, $v := .Spec.Labels }}{{ $k }}={{ $v }} {{end}}' | \
tr " " "\n" | awk -F= '/com.docker.lb.hosts/ { print $NF }'
done;
kubectl get virtualservice -A --no-headers -o custom-columns=HOSTS:.spec.hosts | sed 's/\[//; s/\]//; s/ /\n/'
Etiquetas: Administracion, Docker, Kubernetes, Linux
Etiquetas: Administracion, Linux, Optimización, swap, zram
python -c "import socket; print ( socket.gethostbyname('google.com') )"
perl -e 'use Socket; use Data::Dumper;
@addrs = gethostbyname("google.com") or die "No puedo resolver el nombre$!\n";
@addrs = map { inet_ntoa($_) } @addrs[4 .. $#addrs];
foreach my $addr (@addrs) { print "$addr\n"; }'
Etiquetas: Administracion, Linux
Etiquetas: Administracion, Grub, Linux
Etiquetas: Administracion, Linux
Etiquetas: Distribuciones, Linux, Seguridad
Etiquetas: Conferencias, Linux, OpenSource, Vídeos
Etiquetas: Conferencias, Linux, Vídeos
for usuario in `grep -v -e "nologin$\|false$" passwd|awk -F":" '{ print $1 }'`;
do
grep -E "^${usuario}:[^*\!]:" /etc/shadow|grep -v -e '^root:'
done;
Se aceptan sugerencias y correcciones Etiquetas: Administracion, Linux, Seguridad
The authenticity of host '111.222.333.444 (111.222.333.444)' can't be established. RSA key fingerprint is f3:cf:58:ae:71:0b:c8:04:6f:34:a3:b2:e4:1e:0c:8b. Are you sure you want to continue connecting (yes/no)?Usando el parámetro -o StrictHostKeyChecking=no al ejecutar SSH se evita la dichosa pregunta. Ejemplo:
ssh -o StrictHostKeyChecking=no usuario@servidorSi nos conectamos a servidores que pueden estar apagados, no necesitaremos esperar el timeout por defecto reduciendo el tiempo con el parámetro -o ConnectTimeout=segundos
ssh -o ConnectTimeout=5 usuario@servidor
Etiquetas: Administracion, Linux, SSH
SNMPDRUN=no TRAPDRUN=yesEn el fichero /etc/snmp/snmptrapd.conf debemos configurar la comunidad de la que recibiremos los traps, por ejemplo: authCommunity log public Reiniciamos el servicio snmpd con service snmpd restart y debemos tener el proceso snmptrapd en ejecución y el puerto UDP 162 a la escucha. Para que rsyslog filtre el mensaje que snmptrapd generará en el log del sistema podemos poner una regla como la siguiente en /etc/rsyslog.conf:
if ($programname == 'snmptrapd') then /var/log/snmptrapd.log & ~La cadena "& ~" sirve para que al aplicarse la regla de filtrado del if el mensaje se guarde en el fichero indicado y no se apliquen más reglas que dupliquen el mensaje en otros ficheros de log.
use strict;
use vars qw($session $error $response);
use Net::SNMP;
($session, $error) = Net::SNMP->session(
-hostname => shift || '192.168.1.12',
-community => shift || 'public',
-port => shift || 162
);
if (!defined($session)) {
printf("ERROR: %s.\n", $error);
exit 1;
}
my $count = 0;
$response = 1;
while ( $response ) {
$response = $session->trap();
$count++;
sleep 5;
print "Sending trap ($count)\n";
}
$session->close();
exit 0;
Etiquetas: Administracion, Debian, Linux, SNMP
aptitude install corosync pacemakerEsto crea un usuario hacluster en un grupo llamado haclient
interface {
# The following values need to be set based on your environment
ringnumber: 0
bindnetaddr: 192.168.1.81 # ip de la interfaz a usar por el cluster
mcastaddr: 226.94.1.1
mcastport: 5405
}
Aprovecharemos para configurar el log en un fichero separado puesto que el cluster generará mucha información y hará que el log del sistema sea inmanejable. Para ellos pondremos en el apartado logging de /etc/corosync/corosync.conf lo siguiente:
to_syslog: no # cambiar el valor por defecto yes a no to_logfile: yes # cambiar el valor por defecto no a yes para desviar la salida a un fichero logfile: /var/log/cluster.log # esta línea no existe y hay que añadirla para indicar el nombre del fichero de log3º Para que el servicio arranque, pondremos START=yes en /etc/default/corosync y ejecutaremos:
service corosync start4º Configurar el resto de nodos del cluster de la misma forma si no lo hemos hecho en los pasos anteriores y arrancar el servicio corosync.
property $id="cib-bootstrap-options" \
dc-version="1.1.7-ee0730e13d124c3d58f00016c3376a1de5323cff" \
cluster-infrastructure="openais" \
expected-quorum-votes="2" \
no-quorum-policy="ignore" \
stonith-enabled="false"
Si tenemos un cluster de sólo dos nodos es necesaria la propiedad no-quorum-policy="ignore" para que al fallar un nodo se mantengan levantados los servicios en otro nodo ya que se pierde el quorum. Si tenemos más de un nodo no es necesario y además contrapropucente porque puede darse una situación de split brain.
El comando crm_verify -L nos mostrará errores de configuración del cluster si no arranca algún servicio.
En versiones anteriores de Pacemaker se arrancaba el servicio con el script en /etc/init.d pero en la versión actual, incluida en Debian Wheezy el servicio pacemaker es ejecutado como plugin de Corosync y no hay que ejecutarlo como servicio del sistema.
primitive ip-apache ocf:heartbeat:IPaddr2 \ params cidr_netmask="24" ip="192.168.1.88" \ op stop interval="0" timeout="20s" \ op start interval="0" timeout="20s" \ op monitor interval="10s" timeout="20s"Con el comando crm_mon podremos comprobar que se está ejecutando el recurso en uno de los nodos (con un ping se puede probar que la ip del ejemplo, 192.168.1.88, responde). Ahora podemos añadir/quitar recursos en el cluster y configurar el recurso stonith para que un servidor inestable se reinicie o apague. No nos olvidemos de poner la propiedad stonith-enabled="true" cuando configuremos stonith.
Etiquetas: Administracion, HA, Linux