viernes, 30 de septiembre de 2016

Implementación de Servidor de Aplicaciones WildFly Standalone con Base de Datos PostgreSQL sobre CentOS 7

En este lab vamos a implementar el servidor WildFly sobre CentOS 7, este sera en modo standalone con un conector de base de datos postgresql, para ello necesitamos un servidor de centos de preferencia en perfil minimal

intranet.example.com 192.168.0.122




Primero debemos actualizar nuestro servidor de intranet e instalamos la versión de java 1.8
[root@intranet ~]# yum update -y
[root@intranet ~]# yum install -y java-1.8.0-openjdk

Para este lab también necesitamos la ultima versión de wildfly descargada de la pagina y el conector de postgresql

Movemos el instalador de wildfly a opt
[root@intranet ~]# mv wildfly-10.1.0.Final.tar.gz /opt/

Ingresamos a opt y descomprimimos el instalador
[root@intranet ~]# cd /opt/
[root@intranet opt]# tar -xzvf wildfly-10.1.0.Final.tar.gz

Renombramos la carpeta para que sea mas facil de configurar
[root@intranet opt]# mv wildfly-10.1.0.Final wildfly

Ingresamos a la ruta de wildfly y a la carpeta bin
[root@intranet opt]# cd wildfly/bin/

Con el script add-user podemos crear un usuario de administración


Ingresamos al siguiente archivo de configuracion
[root@intranet bin]# vi /opt/wildfly/standalone/configuration/standalone.xml

Cambiamos todas las definiciones de 127.0.0.1 a 192.168.0.122

Ahora creamos una carpeta para nuestro conector de postgresql
[root@intranet ~]# mkdir -p postgresql/main

Copiamos el archivo .jar descargado a la nueva ruta
[root@intranet ~]# cp postgresql-9.2-1004.jdbc41.jar postgresql/main/

Creamos el archivo
[root@intranet ~]# vi postgresql/main/module.xml
<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="urn:jboss:module:1.1" name="org.postgresql">
<resources>
<resource-root path="postgresql-9.2-1004.jdbc41.jar"/>
</resources>
<dependencies>
<module name="javax.api"/>
<module name="javax.transaction.api"/>
</dependencies>
</module>

Ahora copiamos la carpeta creada a la ruta de wildfly
[root@intranet ~]# cp -prf postgresql /opt/wildfly/modules/system/layers/base/org/

Volvemos a ingresar al archivo y agregamos el driver de postgres en la seccion de drivers donde ya existe el driver de h2
[root@intranet bin]# vi /opt/wildfly/standalone/configuration/standalone.xml
<drivers>
<driver name="h2" module="com.h2database.h2">
<xa-datasource-class>org.h2.jdbcx.JdbcDataSource</xa-datasource-class>
</driver>
<driver name="postgresql" module="org.postgresql">
<xa-datasource-class>org.postgresql.xa.PGXADataSource</xa-datasource-class>
</driver>
</drivers>


Ahora si podemos iniciar nuestro servicio de wildfly en modo standalone
[root@intranet bin]# ./standalone.sh


Con el servicio de wildfly activado podemos instalar nuestra base de datos

Primero instalamos la base de datos
[root@intranet ~]# yum install -y postgresql-server

Para inicializar la base de datos usamos
[root@intranet ~]# postgresql-setup initdb

Modificamos el archivo pg_hba para que acepte conexiones externas de nuestra red de servidores
[root@intranet ~]# vi /var/lib/pgsql/data/pg_hba.conf
host all all 192.168.0.0/24 md5

También modificamos el servicio para que escuche todas la interfaces
[root@intranet ~]# vi /var/lib/pgsql/data/postgresql.conf
Cambiamos la linea
#listen_addresses = 'localhost'
Por la linea
listen_addresses = '*'

Ahora iniciamos y habilitamos el servicio
[root@intranet ~]# systemctl enable postgresql
[root@intranet ~]# systemctl start postgresql

Podemos crear una base de datos de prueba
[root@intranet ~]# su - postgres
# psql

postgres=# create user andy with password 'centos';
postgres=# create database controlandy owner=andy;
postgres=# \q

Para finalizar con la configuración por comandos, abrimos los puertos de firewalld de wildfly y de postgresql

[root@intranet ~]# firewall-cmd --zone=public --add-port=9990/tcp --permanent
[root@intranet ~]# firewall-cmd --zone=public --add-port=8080/tcp --permanent
[root@intranet ~]# firewall-cmd --zone=public --add-port=5432/tcp --permanent
[root@intranet ~]# firewall-cmd --reload

Ahora podemos ingresar por explorador web y empezar a configurar nuestro servicio, empesemos con el login con el usuario/password creados en pasos previos



Ingresamos a la sección de datasources para configurar la integracion con postgres



Seleccionamos custom



Nombramos el datasource como postgresql


Seleccionamos el driver de postgresql



Ingresamos el url de conexión referenciando el servidor intranet y la base de datos de prueba, también el usuario y clave de la base de datos


Aceptamos la creación del datasource



Podemos verificar la conexión



Validamos que sea correcta



Ahora que terminamos de integrarnos a la base de datos postgresql, podemos desplegar un war/ear de un proyecto



Generamos un nuevo proyecto



Seleccionamos el archivo war/ear



Activamos el proyecto



Ingresamos al servidor con el puerto 8080 y el nombre del proyecto para validarlo via navegador


Como mencionamos esta es la implementación mas simple en modo standalone, en futuras entradas a este blog crearemos una configuración similar en modo cluster y con balanceo de carga


sábado, 17 de septiembre de 2016

Implementación de Zimbra Collaboration Suite (ZCS) sobre CentOS 7

En esta oportunidad vamos a implementar zimbra, una solución de mensajería integral muy completa sobre nuestros servidores de CentOS 7




Para este lab requerimos lo siguiente

mail.example.com 192.168.0.123 - CentOS 7
un registro DNS del tipo A para mail
un registro DNS del tipo MX para que redireccione el correo al registro anterior mail
instalador de zimbra para centos zcs-8.7.0_GA_1659.RHEL7_64.20160628202714.tgz

Primero validamos nuestro registro DNS con el comando nslookup


Es muy probable que tengamos alertas en la instalación producto del DNS, para ellos podemos ejecutar los siguientes pasos

Para registrar el hostname localmente
[root@mail ~]# echo "192.168.0.123 mail.example.com mail" >> /etc/hosts

En caso de tener el postfix instalado por default
[root@mail ~]# systemctl stop postfix
[root@mail ~]# systemctl disable postfix

Debemos descargar el instalador y copiaro al servidor, lo descomprimimos con
[root@mail ~]# tar -xzvf zcs-8.7.0_GA_1659.RHEL7_64.20160628202714.tgz


Ahora si podemos ejecutar el instalador



Aceptamos el acuerdo


Aceptamos el uso del repositorio de zimbra para instalar los paquetes



En mi caso tuve un error de DNS, para ello vuelvo a setear el dominio así



Una vez instalado, podemos cambiar la configuración



Específicamente cambiamos el password del admin



Ahora podemos salir del instalador y grabar los cambios



En mi caso no deseo enviar información a zimbra



Por ultimo si deseamos cerrar o abrir puertos en el firewall, podemos usar el siguiente cuadro para configurarlo



Ahora que tenemos el servidor listo, podemos acceder a la web de administración (puerto 7071) con el usuario admin



Ingresamos a HOME > MANAGE > ACCOUNTS y creamos algunos usuarios



Ahora podemos ir a un cliente web, celular o tablet y accedemos a la web de usuarios de correo (puerto 443)



Podemos enviar y recibir correos mientras nuestros clientes resuelvan el dominio example.com a través de los DNS


sábado, 10 de septiembre de 2016

Implementación de GlusterFS para plataformas de virtualización OVirt v4

En esta oportunidad vamos a implementar volúmenes de almacenamiento sobre servidores glusterfs y registraremos estos volúmenes en la plataforma de virtualización





Nuestro lab consta de los siguientes servidores:

Gestión:
ovirt.example.com 192.168.0.135

Virtualización:
server01.example.com 192.168.0.171
server02.example.com 192.168.0.171

Almacenamiento:
gluster01.example.com 192.168.0.81
gluster02.example.com 192.168.0.82
gluster03.example.com 192.168.0.83

Adicionalmente usaremos una red 192.168.100.X para el almacenamiento

Todos los servidores son CentOS 7 con el repositorio de ovirt y al menos 2 interfaces de red disponibles


Primero implementamos una infraestructura de virtualización, esta debería tener al menos 2 servidores de virtualización en un cluster de nivel funcional 4.0, para ellos nos podemos apoyar en entradas anteriores de este blog para tener una similar a esta







Antes de registrar nuestros equipos de gluster, necesitamos almacenamiento local en estos 3 servers, por ahora agregue un disco de 500GB en cada nodo de gluster para nuestros volúmenes

El procedimiento para crear volumenes lógicos de linux es el siguiente, en mi caso usare un disco de 500GB para un VG llamado data y luego creare 6 LV de 32G, este procedimiento lo debemos repetir en los 3 nodos de gluster

Primero creo una partición con el disco disponible, en mi caso sdb




Ahora creamos el VG con el disco sdb1




Con el VG data creado podemos crear los 6 LVs




Formateamos los volumenes creados al formato xfs



Debemos montar estos discos en los directorios /data* para que sean usados por el sistema operativo




Por ultimo creamos unos subdirectorios dentro de los data para que el sistema gluster los pueda usar mas adelante, también cambiamos los permisos a 36.36




Recordemos que debemos ejecutar este procedimiento en los 3 servidores o mas de gluster

Ahora ya podemos registrar los servidores gluster en la consola de OVIRT, primero creamos un cluster del tipo de almacenamiento






Antes de registrar los nodos agregamos el repositorio de ovirt en cada uno de los nodos de gluster con el comando

yum install -y http://resources.ovirt.org/pub/yum-repo/ovirt-release40.rpm

Ahora procedemos a registrar los 3 nodos de almacenamiento












Cuando los 3 nodos estén registrados podemos crear nuestros primeros volúmenes, primero crearemos un volumen replicado en 3 nodos para darle la mayor seguridad posible, para ello usaremos los discos data01 de cada nodo








También podemos crear un volumen distribuido para nuestros recursos de almacenamiento menos críticos como por ejemplo el volumen de isos, para esto usaremos los discos data02 de los 3 nodos





Con los volúmenes creados podemos iniciarlos con el botón START y empezar a utilizarlos en la plataforma de virtualización




A fin de tener una infraestructura mas eficiente, vamos a separar el trafico de gestion y el de almacenamiento en 2 redes diferentes, para ellos en cada servidor de almacenamiento y virtualización vamos a implementar la red 192.168.100.X para storage, primero creamos la red






Ahora registramos la red y le damos una IP en cada HOST






Repetimos el procedimiento en cada uno de los HOSTs, no necesitamos default gateway en la red de storage porque no necesita ser enrutada, ademas si uno implementa VLANs estas son soportadas perfectamente sobre las interfaces disponibles

Con esto podemos registrar los volúmenes vol01 y vol02 en la plataforma de virtualización con la red de almacenamiento, empesemos con el volumen vol01 para datos utilizando el protocolo glusterfs






Tambien creamos el volumen vol02 distribuido con el mismo protocolo glusterfs




Ahora tenemos los volúmenes del tipo data y tipo iso para nuestra infraestructura, observemos el detalle que el vol01 por ser replicado usa aproximadamente 32GB pero el vol02 tiene 32GB*3




Ahora podemos ir a nuestro ovirt-manager y subir la iso de CentOS al volumen de isos

ovirt-iso-uploader -i vol02 --insecure upload CentOS-7-x86_64-Minimal-1511.iso -v

Validamos que tengamos la iso cargada en el iso domain



Con el iso podemos empezar una instalación de una VM basada en CentOS








Por ultimo cuando termines de instalar la virtual seria bueno instalar el agente de integración de OVIRT dentro de la VM con el siguiente comando, esto permitirá que la VM envíe información a la plataforma de virtualización y tener estadísticas mas precisas

yum install -y ovirt-guest-agent-common.noarch

Ahora tenemos una plataforma de virtualización altamente disponible con almacenamiento redundante, esta es la configuración mas básica, podemos testear otras funcionalidades que mejoren el rendimiento de los volúmenes, tiempo de replicación, backups, monitoreo, etc para ellos tenemos los demás data* para las pruebas, en futuras entradas del blog ire documentando configuraciones mas complejas