Instalar OpenShift Origin en Fedora 19 (Mega Tutorial) – Parte 1

openshift-origin-logo

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.

Install-Fedora

Instalar Fedora 19

y a la hora de elegir software seleccionamos instalación mínima.

Minimal-Install

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 bindbind-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.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *