Instalación
Instalación de Ambiente de Mercap FIX Engine
Last updated
Was this helpful?
Instalación de Ambiente de Mercap FIX Engine
Last updated
Was this helpful?
Para instalar correctamente el servicio Mercap FIX Engine, se debe considerar un sistema que cumpla con los siguientes requisitos mínimos:
Ubuntu Server (18.04, LTS u otro Linux similar)
Memoria RAM: 8 GB
Disco: 50 GB
Partiendo de esta base, se debe tener un usuario a disposición, que sea distinto de root y que no pertenezca al grupo de usuarios sudoers, con permisos de ejecución para los siguientes comandos instalados:
docker (versión 19.03.12 o superior)
Documentación oficial:
docker-compose (versión 1.26.2 o superior)
Documentación oficial:
vim
bash
htop
git
A modo de ejemplo, proponemos las siguientes sentencias a ejecutar durante la configuración, para permitir la ejecución de los comandos docker y docker-compose por parte del usuario disponibilizado (al que en el presente documento llamaremos usr-mercap y recordemos, no debe ser root ni tener permisos de sudoer) a traves del grupo de usuarios de docker:
Al finalizar las configuraciones previas, el usuario usr-mercap debería ser capaz de ejecutar los siguientes comandos de ejemplo sin necesidad de invocar el programa sudo:
El servicio Mercap FIX Engine será ejecutado mediante docker, usando los contenedores entregados por Mercap e instalados en un registry local, para evitar acceder a registries públicos en Internet. Para que docker pueda acceder a dicho registry local, es necesaria la siguiente configuración en el archivo /etc/docker/daemon.json
.
Si dicho archivo existe, agregar las siguientes líneas a la configuración. Sino, crearlo con el siguiente contenido:
De ser necesario modificar dicha red y su máscara (por ya estar en uso, por políticas de seguridad o por cualquier otro motivo), en este mismo archivo json (ubicado en /etc/docker/daemon.json
) se puede agregar la siguiente configuración, cambiando la subnet default por ejemplo a la 10.20.30.0/26
:
Todo junto nos quedaría de la siguiente manera:
Se debe reiniciar el servidor una vez configurado el archivo. Por otro lado, el servicio Mercap FIX Engine se puede instalar en cualquier directorio. Como ejemplo, en esta guía tomaremos el path: /opt/mercap
.
Por último, mencionaremos que el servicio hace uso de tres contenedores, cada uno requiere una dirección IP. Sumando la dirección IP utilizada por el servidor de docker, se requerirán cuatro direcciones IP en total, que serán mapeadas dentro de un nuevo segmento de red exclusivo para Mercap FIX Engine. Cuando profundicemos en la configuración del servicio, entraremos en detalle sobre este punto particular.
Además, el servicio se comunica con el aplicativo Mercap Order Management mediante un puerto en el servidor host. Dicho puerto también se especificará en la configuración del Mercap FIX Engine y debe ser alcanzable desde fuera del servidor.
Finalmente debe ser posible rutear los paquetes hacía la dirección pública (y el puerto) del mercado contra cual se realizará la conexión mediante Internet (ya sea IP ó DNS). Para tal fin, será necesario agregar reglas de firewall, etc. La responsabilidad de esta configuración es ajena a Mercap.
Tomaremos el archivo Mercap_FIX_Engine.zip
de la ruta de entrega y lo descomprimimos en el directorio /opt/mercap/
. Corroboramos que tenemos todos los archivos necesarios en dicho path del servidor:
mercap-fix-engine.bundle
docker-images.tar.gz
registry.tar.gz
Dentro de dicho path crearemos el directorio registry
y moveremos allí el archivo registry.tar.gz
. Finalmente clonamos la versión del engine y preparamos el ambiente, todo con los siguientes comandos:
Ya estamos en condiciones de instalar las imágenes entregadas.
La instalación se divide en dos etapas. Primero hay que instalar el registry local. Recién luego instalaremos el aplicativo Mercap FIX Engine. Para ello copiamos el inicializador del registry, provisto dentro de la carpeta oculta deploy
:
Una vez hecho esto, podemos configurar el inicializador con el id del usuario adecuado:
Supongamos que obtenemos los siguientes resultados:
Con los id’s devueltos, editamos las variables USER_ID y GROUP_ID del inicializador (con vim, nano, etc), guardamos los cambios y lo ejecutamos:
Si no ocurre ningún inconveniente, al finalizar el proceso deberíamos poder ejecutar los siguientes comandos y observar un resultado similar:
Ahora que ya tenemos preparado el ambiente y el registry local está levantado, debemos cargar el resto de las imágenes, correspondientes con la versión entregada de Mercap FIX Engine:
Como fue mencionado al principio de este documento, Mercap FIX Engine se compone de tres contenedores (el core mercap-fix-engine, el broker de mensajes rabbitmq y el cifrador de conexiones stunnel). Debemos corroborar que las tres imágenes fueron correctamente cargadas en el registry local. Para ello, nuevamente, si no surge ningún error, podremos ejecutar los siguientes comandos y esperar obtener resultados similares:
De esta manera, comparamos que la versión entregada sea equivalente a la cargada en el registry y corroboramos que el aplicativo está listo para ser usado.
Nuevamente necesitaremos el User ID del usuario que levantará el servicio (no root, no sudoer) y su Group ID. Los podemos volver a obtener con el siguiente comando:
Nuevamente, supongamos que el resultado es:
Editaremos el archivo /opt/mercap/mercap-fix-engine/.env
(mediante nano, vim, etc) con los valores de User ID y Group ID devueltos. Se pueden cambiar otros parámetros presentes en el archivo de ser necesario, especialmente los relacionados con la comunicación FIX, provistos por el mercado. Se detallan a continuación los mas relevantes:
Parámetro
Obligatorio
Default
Descripción
USER_ID
SI
N/A
ID de usuario para Docker
GROUP_ID
SI
N/A
ID de grupo para el usuario de Docker
SUBNET
SI
N/A
Segmento de subred a utilizar
STUNNEL_CONNECT_PORT
SI
N/A
Puerto del mercado
STUNNEL_CONNECT_IP
SI
N/A
Dirección del mercado
QFIX_TARGET
SI
N/A
Nombre FIX del mercado
QFIX_SENDER
SI
N/A
Nombre FIX del broker en dicho mercado
QFIX_USERNAME
SI
N/A
Usuario provisto por el mercado
QFIX_PASSWORD
SI
N/A
Contraseña provista por el mercado
QFIX_ACCOUNT
SI
N/A
Nombre de la cuenta FIX provista por el mercado
QFIX_APPL_DATA_DICT
SI
FIX50SP2.xml
Nombre del archivo del diccionario FIX de aplicación (solo nombre, sin el path)
QFIX_TRANSPORT_DICT
SI
FIXT11.xml
Nombre del archivo del diccionario FIX de transporte (solo nombre, sin el path)
RABBIT_MQ_HOST_PORT
NO
5672
Puerto de RabbitMQ. Debe ser accesible desde el servidor de Mercap OM.
Notar que en el presente archivo de configuración (además de muchas otras variables con sus respectivos valores default), figura el puerto para comunicarse con RabbitMQ, el servicio de mensajería utilizado para vincular Mercap FIX engine con el aplicativo Mercap Order Management (parámetro RABBIT_MQ_HOST_PORT).
Finalmente, guardamos los cambios.
Solo resta levantar el servicio con el siguiente comando (en modo verbose, es decir mostrará todo el log por el standard output):
Ó podemos levantar el servicio en background (agregando el flag -d):
Importante: Por ser la primera vez que se despliega el servicio, es recomendable hacerlo de la primer manera, para poder corroborar fácilmente que el servicio pudo ser levantado con éxito.
Si igualmente se utiliza la opción de background, será útil el siguiente comando, que mostrará por ejemplo las últimas 20 líneas del archivo de log mas completo (el más descriptivo, llamado all.log
, de nivel debug):
Con el flag -n especificamos la cantidad de líneas (que claramente puede ser distinta a 20). Por el otro lado, con el flag -f, lograremos que si una nueva línea se agrega al final del log, la misma aparezca en la consola, renovando continuamente los últimos 20 mensajes.
También existen otros dos logs relevantes. El archivo info.log
, que es menos verbose que el anterior:
Y finalmente, errors.log
que solo contiene los mensajes que produjeron errores (si es que existe alguno), para una consulta mas rápida de los mismos:
Por último, si observamos algo como lo indicado en la imagen siguiente (ya sea visualizando los logs o el stdout) el servicio Mercap FIX Engine ya estaría listo para operar.
Para detener el servicio Mercap FIX engine, se debe ejecutar las siguientes instrucciones en una consola de comandos del sistema operativo:
Para reiniciar el servicio Mercap FIX engine, se debe ejecutar las siguientes instrucciones en una consola de comandos del sistema operativo:
Importante: Vale la pena aclarar que el comando restart puede ser útil para reflejar modificaciones externas al servicio (I.e. configuración de puertos en el firewall del Sistema Operativo), pero si se hacen modificaciones internas (por ejemplo, se cambian las variables de entorno definidas en el archivo /opt/mercap/mercap-fix-engine/.env
), el comando restart no será suficiente para actualizar los contenedores ya creados. En este caso, lo mejor será ejecutar los siguientes comandos:
Puede darse el caso (poco probable) que luego de iniciar y detener el servicio de Mercap FIX Engine varias veces seguidas, queden contenedores de Docker consumiendo recursos. Docker dispone de varios comandos para estas tareas de mantenimiento, cada uno de ellos mas recomendable para ciertas situaciones.
A modo de ejemplo, a continuación se menciona el comando mas drástico
Importante: El comando anterior elimina todos los contenedores, liberando los recursos usados. Luego se deberá iniciar el servicio como hemos visto en secciones previas:
o en su defecto:
De ser necesario instalar una nueva versión entregada por Mercap, el proceso será muy similar a las secciones:
Preparando el ambiente
Instalación del FIX Engine
Iniciar el servicio
Repasemoslos brevemente:
Obtener el archivo Mercap_FIX_Engine.zip
de la ruta de entrega y descomprimirlo en el directorio /opt/mercap/
, reemplazando el posible contenido preexistente. Actualizaremos el ambiente, no sin antes corroborar que tenemos todos los archivos necesarios en dicho path del servidor (notar que el .zip no incluye un archivo registry, ya que el mismo se instala una única vez, solo debe contener los archivos mercap-fix-engine.bundle
y docker-images.tar.gz
):
Instalar la nueva versión:
Corroborar que las imágenes se cargaron correctamente chequeando sus versiones:
Y finalmente, iniciar el servicio:
Existe la posibilidad de requerir observar el tráfico TCP entre el engine y el mercado. Para dicho propósito se adjunta con la instalación un cuarto contenedor de Docker, con el aplicativo tcpdump. El mismo se encuentra dentro del zip de la entrega, en el archivo tcpdump.tar.gz
. Para instalarlo, procedemos a ejecutar los siguientes comandos:
Podemos corroborar que la imagen de tcpdump se haya registrado exitosamente:
Finalmente, como el componente genera un archivo “dump” del tráfico TCP, no es la idea ejecutarlo todo el tiempo, solo cuando se requiera analizar situaciones particulares. Dicho esto, se proveen dos scripts para iniciarlo y detenerlo. Los mismos son:
El resultado obtenido es un archivo con formato pcap, cuyo nombre será el timestamp del momento capturado. Dicho archivo se puede visualizar en herramientas de redes como Wireshark.