OpenShift Origin
A lo largo de varios posts voy a mostrar como instalar OpenShift Origin sobre Fedora 19.
El esquema será el siguiente:
1 máquina “broker”con al menos 1Gb de RAM y 10 Gb de HDD (yo lo haré en una máquina virtual)
1 máquina “node1” con al menos 1Gb de RAM y 30 Gb de HDD (lo haré en otra máquina virtual)
También se puede hacer en una única máquina, pero para entender bien el comportamiento de cada una es preferible hacerlo por separado.
Vamos a empezar.
Instalar el Sistema Operativo
Debemos instalar Fedora 19 en ambas máquinas.
y a la hora de elegir software seleccionamos instalación mínima.
Configurar Hosts
-
Sistemas afectados : broker y node1
Una vez instalados los sistemas debemos actualizarlos:
yum update -y systemctl reboot
Para poder realizar una instalación sin complicarnos, lo primero que haremos será configurar los repositorios de OpenShift Origin v3. Asumimos que somos “root” en ambos hosts.
cat <<EOF> /etc/yum.repos.d/openshift.repo [openshift-origin] name=openshift-origin baseurl=http://mirror.openshift.com/pub/origin-server/release/3/fedora-19/packages/x86_64/ gpgcheck=0 enabled=1 [openshift-origin-deps] name=openshift-origin-deps baseurl=http://mirror.openshift.com/pub/origin-server/release/3/fedora-19/dependencies/x86_64/ gpgcheck=0 enabled=1 EOF
Es importante que todos los sistemas tengan la hora sincronizada así que instalamos ntp y sincronizamos
yum install -y ntpdate ntp ntpdate clock.redhat.com systemctl enable ntpd.service systemctl start ntpd.service
Desinstalamos firewalld para una gestión simplificada y en su lugar vamos a instalar system-config-firewall
yum remove -y firewalld yum install -y system-config-firewall
Configurar DNS
-
Sistemas afectados: broker
Lo primero será instalar los paquetes bind y bind-utils, que nos ofrecen las herramientas necesarias para configurar el servidor de nombres.
yum install -y bind bind-utils
Broker será la máquina responsable de gestionar los nodos, sus espacios de nombres, etc. Por lo que necesita acceder al servidor DNS y modificar las entradas, así que para securizar el DNS usaremos DNSSEC.
Para no escribir demasiado, vamos a usar unas variables. En mi caso el dominio será “dmartin.es”, cambiadlo por el que mas os guste.
domain=dmartin.es keyfile=/var/named/${domain}.key
Ahora creamos el par de claves y guardamos el valor de la clave privada en una variable KEY
cd /var/named dnssec-keygen -a HMAC-MD5 -b 512 -n USER -r /dev/urandom ${domain} KEY="$(grep Key: K${domain}*.private | cut -d ' ' -f 2)" echo $KEY
Es necesario crear otra clave para que el script del servicio pueda acceder al servidor DNS.
rndc-confgen -a -r /dev/urandom
Configuramos los permisos y el usuario propietario de los ficheros. Además restauramos los contextos de SELinux (sí, lo vamos a mantener en modo Enforcing)
chown -v root:named /etc/rndc.key chmod -v 640 /etc/rndc.key restorecon -v /etc/rndc.* /etc/named.*
Ahora creamos una configuración de reenvío de peticiones a otro servidor DNS (para la resolución externa)
echo "forwarders { 8.8.8.8; 8.8.4.4; } ;" >> /var/named/forwarders.conf restorecon -v /var/named/forwarders.conf chmod -v 640 /var/named/forwarders.conf
Ahora vamos a crear el directorio de resolución dinámica, y creamos nuestro fichero de configuración
mkdir /var/named/dynamic cat << EOF >/var/named/dynamic/${domain}.db \$ORIGIN . \$TTL 1 ; 1 seconds (for testing only) ${domain} IN SOA ns1.${domain}. hostmaster.${domain}. ( 2014090100 ; serial 60 ; refresh (1 minute) 15 ; retry (15 seconds) 1800 ; expire (30 minutes) 10 ; minimum (10 seconds) ) NS ns1.${domain}. MX 10 mail.${domain}. \$ORIGIN ${domain}. ns1 A 127.0.0.1 EOF
Verificamos el contenido
cat /var/named/dynamic/${domain}.db $ORIGIN . $TTL 1 ; 1 seconds (for testing only) dmartin.es IN SOA ns1.dmartin.es. hostmaster.dmartin.es. ( 2014090100 ; serial 60 ; refresh (1 minute) 15 ; retry (15 seconds) 1800 ; expire (30 minutes) 10 ; minimum (10 seconds) ) NS ns1.dmartin.es. MX 10 mail.dmartin.es. $ORIGIN dmartin.es. ns1 A 127.0.0.1
Instalamos la clave DNSSEC para nuestro dominio y actualizamos propietario y contexto SELinux
cat < /var/named/${domain}.key key ${domain} { algorithm HMAC-MD5; secret "${KEY}"; }; EOF chown -Rv named:named /var/named restorecon -rv /var/named
Ahora el fichero de configuración principal de BIND
cat < /etc/named.conf // named.conf // // Provided by Red Hat bind package to configure the ISC BIND named(8) DNS // server as a caching only nameserver (as a localhost DNS resolver only). // // See /usr/share/doc/bind*/sample/ for example named configuration files. // options { listen-on port 53 { any; }; directory "/var/named"; dump-file "/var/named/data/cache_dump.db"; statistics-file "/var/named/data/named_stats.txt"; memstatistics-file "/var/named/data/named_mem_stats.txt"; allow-query { any; }; recursion yes; /* Path to ISC DLV key */ bindkeys-file "/etc/named.iscdlv.key"; // set forwarding to the next nearest server (from DHCP response forward only; include "forwarders.conf"; }; logging { channel default_debug { file "data/named.run"; severity dynamic; }; }; // use the default rndc key include "/etc/rndc.key"; controls { inet 127.0.0.1 port 953 allow { 127.0.0.1; } keys { "rndc-key"; }; }; include "/etc/named.rfc1912.zones"; include "${domain}.key"; zone "${domain}" IN { type master; file "dynamic/${domain}.db"; allow-update { key ${domain} ; } ; }; EOF chown -v root:named /etc/named.conf restorecon -v /etc/named.conf
Configuramos el firewall y activamos el servicio de DNS
systemctl start iptables systemctl enable iptables lokkit --service=dns systemctl start named
Añadimos nuestro broker al DNS
# nsupdate -k ${keyfile} > server 127.0.0.1 > update add broker.dmartin.es 180 A 10.10.10.2 > send #dig @127.0.0.1 broker.dmartin.es
Llega el turno de configurar nuestra red.
Si nuestra red tiene una configuración estática sólo necesitamos apuntar a nuestro servidor DNS.
Voy a mostrar la configuración de una red dinámica por DHCP, en el que tenemos que evitar que el servidor DHCP nos modifique el DNS y el dominio.
cat <<EOF> /etc/sysconfig/network-scripts/ifcfg-eth0 NAME="eth0" TYPE="Ethernet" BOOTPROTO="dhcp" PEERDNS="no" DNS1="127.0.0.1" EOF
Y ya por último modificar el hostname de la máquina
hostnamectl broker.dmartin.es cat /etc/hostname
En la próxima entrega del tutorial configuraremos la base de datos MongoDB y el gestor de mensajería entre nodos ActiveMQ. Disponible aquí.
Nos vemos.