Versión: 31 de Mayo de 2021
DISEÑO Y DESARROLLO DE UN ENTORNO BASADO EN MICROSERVICIOS SECURIZADOS DOCKER PARA LA MIGRACIÓN DE UNA PLATAFORMA DE CONCIENCIA CIBERSITUACIONAL
Desarrollo de imágenes Docker de cada uno de los subsistemas PLICA, proyecto de la Universidad Politécnica de Madrid, con orquestación del despliegue con Docker-Compose, identificación de dependencias entre contenedores, securización de comunicación entre estos con SSL/TLS, mejora del escalado, la portabilidad y la resiliencia. De este modo, se permite su despliegue en entornos distribuidos en microservicios securizados.
-
Directorio Elastalert: Contiene el dockerfile, docker-compose y el .env para compilar y desplegar Elastalert, así como otros archivos de configuración necesarios para adicionarlos como volumen.
-
Directorio Elasticsearch-Kibana: Contiene el dockerfile, docker-compose y el .env para compilar y desplegar Elasticsearch y la interfaz visual de Kibana.
-
Directorio Kafka-ZooKeeper y Kafka-ZooKeeperSSL: Contiene el dockerfile, docker-compose y el .env para compilar y desplegar Apache Kafka y Zookeper sin/con SSL. Adicionalmente, cuenta con los ficheros de configuración necesarios y un script para generar certificados.
-
Directorio Spark-Hadoop: Contiene el dockerfile, docker-compose y el .env para compilar y desplegar Apache Spark, permitiendo su clusterización y el despliegue escalable de workers, cifrando también las comunicaciones con Kafka.
-
Directorio Fuseki: Contiene el dockerfile, docker-compose y el .env para compilar y desplegar Fuseki, así como otros archivos necesarios para su funcionamiento.
-
Directorio PLICA-Ubuntu_based_PandoraFMS: Contiene todo el proyecto PLICA pero basado en la imagen base de Ubuntu y con un agente de Pandora FMS corriendo en los contenedores para la monitorización.
-
Directorio scripts_pruebas: Contiene todos los archivos necesarios para crear topics, productores, consumidores, las tramas a enviar, ejecutar servicios en Spark y olvidar EDCA de los contenedores en el host local.
- Clonar el repositorio en el directorio de trabajo con el siguiente comando:
git clone https://github.com/acallejasz/TFG.git
. - Instalar la herramienta Docker y Docker-Compose.
- Para el servicio de Spark, incluir los binarios y ficheros necesarios en el directorio PLICAv6, que esta en la ruta /TFG/PLICA-Ubuntu_based_PandoraFMS/Spark-Hadoop/base/ o usar la carpeta del proyecto y sustituir lo archivos /PLICAv6/XXXX/StructuredStreaming/DistanceKMeans/structuredXX.py por los del repositorio.
- Añadir en el susbsitema de ontologías de Fuseki, en la ruta /TFG/PLICA-Ubuntu_based_PandoraFMS/Fuseki el .jar de PLICA, ya que no se incluye en este repositorio.
Sobre el directorio PLICA-Ubuntu_based_PandoraFMS realizar:
docker-compose build
Sobre el directorio PLICA-Ubuntu_based_PandoraFMS, realizar:
docker-compose up --scale base=0 --scale spark-base=0
Todas las versiones de las aplicaciones, direcciones de red, puertos, usuarios, credenciales y otras variables pueden ser modificadas en el fichero .env que se encuentra en la misma ruta indicada anteriormente.
Sobre el directorio del subsistema que se desee desplegar, incluido en el directorio PLICA-Ubuntu_based_PandoraFMS, realizar:
docker-compose up
- Para el caso de Spark añadir, a continuación:
--scale spark-base=0
Todas las versiones de las aplicaciones, direcciones de red, puertos, usuarios, credenciales y otras variables pueden ser modificadas en el fichero .env que se encuentra en el propio directorio del subsistema.
Sobre el directorio del subsistema, incluido en PLICA-Ubuntu_based_PandoraFMS, realizar:
Finalizar:
docker-compose stop
Reiniciar:
docker-compose start
Para este módulo hay que utilizar el docker-compose.yml para crear el contenedor de ZooKeeper, el primero de nuestros brokers, sobre el que se hará la conexión SSL de los clientes, los volumenes donde se encuentran los diversos certificados y ficheros de configuración y la network PLICA, en la que la ip del gateway debe coincidir con el ADVERTISED_HOST_NAME.
Tras esto pueden usar los scripts de la carpeta scripts_pruebas para crear topics, brokers, productores o consumidores. El de los brokers necesita de dos parámetros, donde el pirmero de ellos se corresponde con el puerto que utiizará ese broker y que debe ser distinto a los de cualquier otro y siempre +3 con respecto al último y el segundo parámetro que será el id del broker, y que no puede coincidir con el de ningún otro. Por su parte los dos últimos requieren de un parámetro, que se corresponde con el nombre del topic al que queremos conectarnos.
Para este módulo simplemente se utilizan las imagenes oficiales proporcionadas por la compañía que se encuentran disponibles en DockerHub. Cuentan con una mínima configuración, permitiendo ver la interfaz visual de Kibana en localhost:5601, con usuario elastic y contraseña xxxx. Utiliza la versión básica (No de pago ni el free trial).
Usar el docker-compose.yml con --scale spark-base=0 (Se necesita construir la imagen pero no hay que levantarla). Tras esto, utilizar el script con ./startPy.sh $1, donde se añada el tipo de aplicación que se quiere desplegar en spark (wifi,bluetooth,etc). Se cuenta con un docker-compose adicional con el que se pueden escalar nuevos workers dentro de la carpeta /Spark-Hadoop/worker.
Basta con arrancar el docker-compose global. Si se quiere probar individualmente con su docker-compose recordar eliminar el sleep y tener siempre levantado el contenedor de Elasticsearch.
Basta con arrancar el docker-compose global. Si se quiere probar individualmente con su docker-compose recordar eliminar el sleep y tener siempre levantado el contenedor de Elasticsearch. Apunte importante: El servicio del .jar (que no el incio del servidor) estará en un bucle while infinito hasta que todos los indices que esten indicados en el .env en ELASTICSEARCH_INDEX sean creados en Elasticsearch, para evitar así errores al intentar buscar o trabajar sobre estos.
- Se encuentra habilitado el acceso por ssh a todos los contenedores, excepto a los de Elasticsearch y Kibana.
- Se dispone un agente configurado de Pandora FMS en las imagenes basadas en Ubuntu, excepto en las de Elasticsearch y Kibana.
- Adrián Callejas Zurita - acallejasz