sábado, 21 de enero de 2017

Configuración básica nodos cluster Orange Pi

En la entrada anterior vimos el cluster que estamos construyendo sobre las placas OrangePi (en específico la Plus2E). En esta entrada empezaremos con la instalación básica de cualquier nodo que forme parte de nuestro Bramble (como dicen en el mundillo de la agrupación de varias Raspberry Pi en cluster)

Recordad que todo lo que se explica funciona en cualquier tipo de placas de este estilo, sean Orange Pi, Raspberry Pi, Banana Pi, etc. en cualquiera de sus modelos.

Primeros pasos
Instalación del sistema operativo armbiam (podéis ver como transferir una imágen a la SD/microSD en este enlace).
  1. Arrancar por SD/microSD
  2. Cambiar password (la contraseña por defecto en armbian es 1234)
Transferir como en el caso de la OrangePi Plus2E el sistema operativo a la eMMC de la placa, con lo que nos ahorraremos tener que utilizar la tarjeta SD para el sistema operativo, y así optimizar los costes en cada nodo (sólo una microSD será necesaria para tener el SO armbian y poder copiarlo a cada una de las placas/nodos que formen parte del cluster)

Para tal caso utilizaremos la instrucción siguiente que nos facilitará el trabajo.
sudo nand-sata-install

Sacamos las SD/microSD y arrancamos ya por eMMC.


Configuración de red
Para la gestión de red lanzaremos un conjunto de instrucciones que podemos ver a continuación:

sudo nano /etc/network/interfaces
# En cada nodo será necesario modificar el campo address
iface eth0 inet static
address 192.168.1.101
netmask 255.255.255.0
gateway 192.168.1.1

Añadir la lista de los nodos planificados en el fichero de hosts
sudo nano /etc/hosts
Añadir las lineas:
192.168.1.100 bpi0
192.168.1.101 cl01
192.168.1.102 cl02
192.168.1.103 cl03
192.168.1.104 cl04
192.168.1.105 cl05
192.168.1.106 cl06
192.168.1.107 cl07
192.168.1.108 cl08
192.168.1.109 cl09
192.168.1.110 cl10

En mi caso en particular, el primer nodo (x.y.z.100 / bpi0) es un LoginNode utilizando una BananaPI M1. Direcciones IP, nombre de Nodos, como veáis, en algunos lugares utilizan como nombres la siguiente nomenclatura: dcXXrYYnZZ (siendo dc:DataCenter, r:Rack, n:Nodo)

Y dar el nombre
sudo nano /etc/hostname
donde en el primer nodo seria:
cl01

Todos los pasos indicados previamente deben de hacer para cada uno de los nodos.

Seguridad SSH
Para la configuración de los permisos de cada nodo, se muestran a continuación un conjunto de instrucciones para proteger y intercomunicar cada uno de estos.

sudo usermod -a -G sudo pi

sudo nano /etc/sudoers
Añadir linea:
pi ALL=(ALL) NOPASSWD: ALL

sudo nano /etc/hosts.deny
Añadir la linea:
ALL: ALL

sudo nano /etc/hosts.allow
Añadir las lineas:
ALL: localhost
ALL: 192.168.1.0/255.255.255.0

Borrar las SSH Keys del nodo que por defecto vienen en la distribución de debian / raspbian / armbian.
sudo rm /etc/ssh/ssh_host_*

Recrear las claves
sudo dpkg-reconfigure openssh-server

Vamos a proteger el servidor de SSH con algunas instrucciones más:
sudo nano /etc/ssh/sshd_config
Añadir las lineas:
UseDNS no
ClientAliveInterval 30
ClientAliveCountMax 6
AllowUsers pi

Ahora, llegados a este punto, reiniciamos el nodo y acabaremos de configurar los últimos pasos.

Configuraciones del entorno SSH
Para cada nodo, será necesario generar las claves SSH del usuario.
cd ~
mkdir bin
mkdir ~/.ssh
chmod 700 ~/.ssh
ssh-keygen -t rsa -C pi@cl01
cd .ssh
cat id_rsa.pub >> authorized_keys

Para probar que todo funciona:
ssh localhost

NOTA: Recordad que es necesario realizarlo en cada nodo cambiando el valor del parámetro -C de la instrucción ssh-keygen poniendo el usuario y nombre del nodo local.

Actualizar el entorno
Actualizar las librerías y paquetes, mediante las instrucciones siguientes:
sudo aptitude update
sudo aptitude upgrade

Cambiar idioma/hora
sudo dpkg-reconfigure locales
sudo dpkg-reconfigure tzdata

Instalación Java
sudo aptitude install openjdk-8-jdk

En el caso de la OrangePi podemos hacer un par de cosas interesantes:
  1. Configurar el botón de apagado (ver el siguiente enlace)
  2. Desactivar la gráfica hdmi (sudo h3consumption -g off)
Desactivar IP6
Este paso es totalmente opcional, pero reduciremos tráfico innecesario y consumo al desactivar el protocolo IP6 ya que nuestros nodos que forman parte del cluster se encuentran en una red local.

Un par de instrucciones para ver el tráfico activo

sudo netstat -tulpn
sudo ifconfig | grep inet6

sudo nano /etc/sysctl.conf
y añadimos las siguientes lineas:
# IPv6 disabled
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1

Recargamos y comprobamos:
sudo sysctl -p
sudo ifconfig

Y las últimas instruccciones:
sudo nano /etc/hosts
comentamos las lineas de IP6
# comment these IPv6 hosts
# ::1     ip6-localhost ip6-loopback
# fe00::0 ip6-localnet
# ff00::0 ip6-mcastprefix
# ff02::1 ip6-allnodes
# ff02::2 ip6-allrouters

Permitiendo sólo flujo IP4 en SSH
sudo nano /etc/ssh/sshd_config
añadir solo 
AddressFamily inet

Permitiendo sólo flujo IP4 en el servicio de hora
sudo nano /etc/default/ntp
siendo el texto
NTPD_OPTS='-4 -g'

Y por ahora suficiente, hemos visto varios pasos para tener la configuración básica mínima en el nodo. En las siguientes entradas de este blog se explicarán de forma detallada los servicios y aplicaciones, y algunas configuraciones básicas que faltan y de vital importancia para la intercomunicación de los nodos del cluster.


Entradas relacionadas:



No hay comentarios: