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.


