Archivo

Archive for the ‘Tech – Infrastructure’ Category

¿Problemas de configuración del storage en entornos Linux?

Lynux storage_avanttic

by Maura Condrick

En esta entrada intentaré describir un problema común de configuración del storage en entornos Linux x86_64 antiguos. Un problema que en los peores casos puede deteriorar el rendimiento de la entrada/salida a disco hasta un 10%.

Este defecto lo causa la combinación entre las particiones usadas en los discos y el propio sistema de discos, independientemente del uso al que destinemos la máquina, o de si ejecutamos o no una BBDD.

Las máquinas con una entrada/salida intensiva advertirán más el problema, el cual puede aparecer de repente al actualizar la cabina de discos (sin haber modificado nada en el servidor). En estos casos la mejora del rendimiento de la nueva cabina tiende a enmascarar el problema.

En primer lugar os comentaré las suposiciones que doy por hechas:

  • Supongo que usamos discos o luns presentados al servidor mediante iSCSI, FC o FCoE, no aplicaría, por ejemplo, en el caso de NFS.
  • Supongo que la cabina que presenta los discos es relativamente moderna, esto es que usa bloques de 4Kb (los discos y cabinas antiguas usan bloques de 512 bytes).

Leer más…

Autoescalado con Kubernetes

septiembre 22, 2017 Deja un comentario

Una de las funcionalidades más demandadas últimamente es el autoescalado de aplicaciones.

¿Por qué siempre se colapsa la web de venta de entradas y me tengo que quedar sin ver a Guns n’Roses? ¿Nunca podré comprar un billete barato en RENFE? En los momentos de alta interacción su web me deja en espera indefinidamente…

Para esta prueba vamos a utilizar un clúster de Kubernetes de 2 nodos y el típico ejemplo de aplicación:
servidor web (ohs) -> servidor de aplicaciones (weblogic 12c) -> BBDD (12c)

Recordad, tal y como mostramos en un post anterior sobre kubernetes, que el pod corresponde a cada instancia levantada de nuestra aplicación. Empezamos con 2 pods de ohs, 2 de weblogic y uno de BBDD.

Selection_040

Desplegamos con Ansible una sencilla aplicación en weblogic que solo hace una consulta a BBDD.

Se suele crear un autoescalado sobre la CPU cuando llega al 80%. En nuestro caso como es una prueba y debe saltar antes, lo vamos a hacer sobre el 20%. Kubernetes está en continua evolución y actualmente se están añadiendo otros criterios a parte de CPU.

Leer más…

Introdución a Kubernetes: Orquestando dockers

Resultado de imagen de kubernetesEn anteriores entradas vimos una introducción a docker, además de cómo crearlos y manternerlos.

Pero, ¿cómo los gestionamos y utilizamos? Hay diferentes herramientas para orquestar docker, como swarn, apache mesos o kubernetes. En esta entrada nos vamos a centrar en la herramienta que google donó al software libre en 2015: kubernetes. A Google siempre le ha gustado hacer trabajar a otros y que éstos le aporten contenidos: maps, youtube, etc…. Y no iba a ser diferente con kubernetes, una de las herramientas que tiene ahora mismo más desarrolladores y commits.

Kubernetes consta de diferentes componentes que nos ayudan a gestionar nuestros contenedores docker, como dns, red, proxy, monitorización, apis, scheduler, etc. La instalación es bastante complicada, pero vamos a ver dos formas que nos la facilitan: minikube y kubeadm.

Minikube levanta máquinas virtuales con todos los componentes para que funcione kubernetes. Podemos elegir virtualbox, kvm, hyperv… Es muy sencillo y nos servirá para probarlo. Es poco operativo porque levanta los contenedores dentro de las máquinas virtuales, con la limitación que pueden tener éstas de memoria o espacio.

Kubeadm nos levanta en local contenedores docker con los componentes de kubernetes y se conecta al demonio local de docker.

En avanttic tenemos un cluster con dos nodos de kubernetes instalados con kubeadm, los llamamos kubernetes1 y kubernetes 2, vamos a ver unos ejemplos.

Selection_027

Primero vamos a ver unos conceptos importantes:

  • Deployment: es el contenedor docker que vamos a desplegar que contiene la aplicación. Por ejemplo un servidor web.
  • Pod: un pod es cada unidad de Deployment que tenemos funcionando. Con kubernetes gestionamos cuantos pods queremos levantar de cada aplicación.
  • Services: son los servicios que exponemos que hacen referencia a los PODS

Vamos a desplegar una aplicación, por ejemplo, un servidor web o un weblogic que podemos descargar de nuestro repositorio docker de avanttic https://hub.docker.com/u/avanttic. Como estos últimos son privados por tener licencias, vamos a probar con un apache.

Leer más…

OHS 12.2.x privilege ports (<1024) UNIX

junio 29, 2017 Deja un comentario

En versiones previas a la 12.2.x, como ya se indicaba en este post, el procedimiento para iniciar el OHS en los puertos inferiores a 1024 ha ido modificando con el tiempo y esta versión no iba a ser menos que las anteriores.

Dicho procedimiento se ha simplificado en esta última versión y las tareas a realizar son las siguientes:

  1. Parar los procesos de OHS:
    $DOMAIN_HOME/bin/stopComponent.sh ohs1
    
  2. Como usuario root modificar el propietario del fichero “launch” y sus permisos:
    chown root $ORACLE_HOME/ohs/bin/launch
    chmod 4750 $ORACLE_HOME/ohs/bin/launch
    
  3. Modificar el fichero $DOMAIN_HOME/config/fmwconfig/components/OHS/ohs1/httpd.conf (o ssl.conf si se va a securizar). En este caso modificamos ssl.conf:
    ###################################################################
    # Oracle HTTP Server mod_ossl configuration file: ssl.conf        #
    ###################################################################
    
    # The Listen directive below has a comment preceding it that is used
    # by tooling which updates the configuration.  Do not delete the comment.
    #[Listen] OHS_SSL_PORT
    Listen 443
    [...]
    #[VirtualHost] OHS_SSL_VH
    <VirtualHost *:443>
    
  4. Iniciar el proceso OHS y verificar el puerto:
    $DOMAIN_HOME/bin/startComponent.sh ohs1
    

Oracle Enterprise Linux for SPARC

El pasado 3 de abril Oracle liberó el nuevo sistema operativo de la compañía, procedente de un proyecto SSO (Open Source) y vinculado a una nueva versión de “Oracle Enterprise Linux” para sistemas SPARC.

Solaris podría perder la exclusiva en plataformas SPARC

La apuesta de la compañía por ofrecer prioritariamente su hardwarelinux es indiscutible, después de conocer a principios de año que el Exadata incorporará máquinas con chips M7 para los Database Servers en su versión SL6, y otras noticias como la oferta de sistemas operativos para dicha plataforma con un núcleo Linux. Todo ello poco después de conocer que Solaris, pese haber ampliado su soporte hasta 2031, no dispondrá de una versión 12; y que Oracle aplicará desarrollo continuo en Solaris 11 renunciando a nuevas “major releases”.

La primera versión liberada de OEL para SPARC se basa en la releaseOEL 6u7 (sin systemd) y está orientada a la experimentación de desarrolladores/partners, por lo que Oracle tan sólo ofrecerá soporte para esta plataforma sobre el núcleo UEK R2 en los “Exadata Database Machine SL6”. En cuanto a equipos, sólo estarán certificados T7 y T5 a partir de una versión de firmware concreta (9.6.6.a para los T5 y 9,7,4 para los T7).

OEL for SPARC 6u7 sólo tiene soporte en Exadata Database Machine SL6 UEK R2

oracle-sparc-m7Podemos descargar la iso de instalación desde OTN; para los interesados en probarla, funciona sobre Oracle VM Server y como guest domain en Oracle VM for SPARC. Tenemos que tener en cuenta que se trata de una primera versión con carencias significativas en los paquetes de software, la lista de aplicaciones soportadas es la siguiente.

En cuanto a la principal novedad de la última generación de chips SPARC, Software in Silicon; esta versión de Linux tan sólo soporta las funciones sobre chip DAX (Data Analytics Accelerator) y “Silicon Secured Memory”. Dejando fuera de soporte otras funciones como “In-Line Decompression”, “In-Memory Querys”y las opciones criptográficas.

Las funciones “Software in Silicon” están parcialmente soportadas en esta primera versión

Pese a que el proyecto todavía es muy joven, no podemos evitar pensar en la posibilidad de que en un futuro tengamos que escoger entre Solaris o Linux, como SO al comprar un equipo SPARC, plataforma que hasta la fecha era sinónimo de Solaris.  Por el momento tan sólo podemos probar la primera versión liberada.

Docker: Imágenes y vida de los contenedores

Al iniciarse en Docker suelen surgir dudas sobre la volatilidad del contenedor, es decir, su tiempo de vida.

Dicha volatilidad depende en gran medida de la utilidad que le queramos asignar al contenedor. Por ejemplo, si lo utilizamos para hacer una prueba de una configuración tendremos que levantar el Docker desde cero hasta que demos con la configuración buena, o podamos grabarla y seguir trabajando sobre él. Además, una de las utilidades de Docker es que todo está en un script y no tenemos que ir recordando los pasos previos, por lo tanto, se recomienda ir pasando los cambios a script.

Para este ejemplo vamos a crear un servicio en el Service bus de Oracle. Para hacer la prueba nos descargaremos una imagen del Service Bus 11.1.1.7 como ya indicamos en la entrada anterior del blog.

docker pull avanttic/osb1117

Si visualizamos las imágenes que tenemos, aparecerá la recién descargada.

# docker images
REPOSITORY              TAG        IMAGE ID        CREATED           SIZE
avanttic/osb1117       latest   e558b012f4a5   3 minutes ago    10.1 GB

Aquí es donde tenemos que diferenciar entre imagen y contenedor. Una imagen es la base a partir de la cual se ejecutan los contenedores. Es decir, cada vez que hacemos un run sobre la imagen nos levanta un contenedor con esa configuración. Si modificamos el contenedor, lo paramos y arrancamos otra vez la imagen, los datos no estarán, porque arrancará un nuevo contenedor.

Por ejemplo, arrancamos nuestra imagen de Service Bus:

# docker run -ti avanttic/osb1117

Para mirar los contenedores que tenemos se usa el comando:

# docker ps -a
CONTAINER ID         IMAGE                    CREATED            STATUS
ac43456e2203      avanttic/osb1117    4 minutes ago      Up 4 minutes

Sobre ella, creamos un proyecto que moverá mensajes entre dos colas:

selection_717

Leer más…

Introducción a Docker: Creación y utilidades

febrero 9, 2017 1 comentario

docker

En este post queremos hacer una breve introducción al mundo docker (containers) del cual  seguiremos ampliando información en futuras entradas.

Docker es una palabra que actualmente está muy de moda. Tecnológicamente no es nada nuevo, ya existían los containers, chroot, debootstrap, plantillas para crear máquinas… Pero docker ha facilitado todo el proceso y lo ha orientado más a servidores que a servicios.

¿Qué utilidades tiene un docker?

Se pueden diferenciar dos líneas, una de desarrollo y otra de negocio.

En el área de desarrollo, un docker nos sirve para levantar un entorno específico en el que hacer pruebas con sistemas operativos, y también, realizar versiones concretas de la aplicación sin tener que realizar cambios en nuestro equipo; además, permite que otra persona desde otro lugar y sin tener que hacer ninguna configuración especial, levante exactamente el mismo docker.

En el área de negocio, sirve para levantar servicios en muy poco tiempo en función de la carga o necesidades. Cada vez hay más herramientas para orquestar y monitorizar este tipo de acciones. Por ejemplo, si tenemos un frontal web, podemos monitorizar la carga e insertar umbrales, de tal forma que si la carga llega a un 80% continúe levantando más dockers para balancearla; y una vez, disminuya del 30% espere el tiempo que deseemos, 5 minutos por ejemplo, y empiece a detener los containers. Esto es útil en plataformas como aws, digital ocean, etc… en las que se paga por uso.

¿Cómo se crea un docker?

Leer más…

Categorías:Tech - Infrastructure Etiquetas: , ,