Se ha denunciado esta presentación.
Utilizamos tu perfil de LinkedIn y tus datos de actividad para personalizar los anuncios y mostrarte publicidad más relevante. Puedes cambiar tus preferencias de publicidad en cualquier momento.

Jvmmx docker jvm

1.799 visualizaciones

Publicado el

Experiencias en el desarrollo del Repositorio Nacional usando Docker, JavaEE7, Payara y HAProxy

Publicado en: Software
  • Sé el primero en comentar

  • Sé el primero en recomendar esto

Jvmmx docker jvm

  1. 1. Docker y JVM Experiencias en la construcción del Buscador del Repositorio Nacional @SuperSerch
  2. 2. La aplicación La información se debe cosechar de otros repositorios, incluyendo el contenido de archivos adjuntos La información se debe procesar para trabajarse con SPARQL Las búsquedas pueden entregar demasiados resultados
  3. 3. Problemática Funciones devoradoras de memoria Canibalización del HEAP Grandes pausas al liberar la memoria Competencia por puertos de red
  4. 4. Elementos parte de la Solución
  5. 5. Docker
  6. 6. ¿Qué es Docker? Plataforma de Contenerización Aislamiento de procesos Construcción basada en capas Stack interno de red Ligado entre contenedores
  7. 7. JVM y "Microservicios"
  8. 8. Java Enterprise Edition Java EE 7 Servlet JAX-RS CDI JSON-P
  9. 9. Payara Basado en Glassfish Dos versiones: Normal y Blue (IBM) Ediciones: Server, Embedded y Micro Cluster mediante hazelcast Soporte 7/24
  10. 10. Poniendo todo junto
  11. 11. JVM en Docker ¿Cuál JVM? OpenJDK (si está disponible para el SO del contenedor) Oracle JVM (no se puede redistribuir) Instalar vía el repo que acepta automáticamente los términos de uso (ppa:webupd8team) Proporcionar el archivo vía ADD en el Dockerfile
  12. 12. Dockerfile base FROM debian:8.3 ENV LANG C.UTF-8 ADD jdk-8u92-linux-x64.tar.gz /opt COPY payara-micro-4.1.1.162.jar /opt ENV JAVA_HOME /opt/jdk1.8.0_92 ENV PATH $PATH:$JAVA_HOME/bin CMD ["/bin/bash"]
  13. 13. Dockerfile base El contenedor base da la pauta a las instrucciones y el tamaño del contenedor ADD desempaqueta el archivo en la ruta que se le indica COPY coloca un archivo en la ruta específica.
  14. 14. Dockerfile de una app FROM serch/payara COPY portal.war / ENV SEARCH_ENDPOINT http://search:8080/resource ENV STATISTICS_ENDPOINT http://statistics:8080/resource CMD ["java", "-Xmx1024m", "-jar", "/opt/payara-micro-4.1.1.162.jar", "--noCluster", "—deploy","/portal.war"]
  15. 15. El ENV para configurar Utilizar variables de ambiente para la configuración. En especial para datos sensibles. --env MYVAR2=foo -e MYVAR1 --env-file ./env.list
  16. 16. HAProxy
  17. 17. Reverse Proxy y SSL Terminator Single-process Event-driven Soporte nativo a SSL (1.5) Opera a nivel TCP y HTTP
  18. 18. Dockerfile HAProxy FROM debian:8.3 ENV LANG C.UTF-8 RUN echo deb http://httpredir.debian.org/debian jessie-backports main | sed 's/(.*)-sloppy (.*)/&@1 2/' | tr @ 'n' | tee /etc/apt/sources.list.d/backports.list RUN apt-get update && apt-get install -y haproxy -t jessie-backports && rm -rf /var/lib/apt/lists/* COPY haproxy.cfg /etc/haproxy/ COPY haproxy.sh / COPY repositorionacionalcti.mx.pem /etc/haproxy/certs/ WORKDIR /etc/haproxy CMD ["/bin/bash", "/haproxy.sh"] EXPOSE 80 EXPOSE 443
  19. 19. HAProxyfrontend http_proxy bind *:80 reqadd X-Forwarded-Proto: http acl is_oai_pmh hdr_beg(host) -i oai-pmh acl is_portal_www hdr_beg(host) -i www acl is_portal_top hdr_beg(host) -i repositorionacionalcti use_backend app1 if is_portal_www || is_portal_top use_backend app2 if is_oai_pmh frontend www-https bind *:443 ssl crt /etc/haproxy/certs/repositorionacionalcti.mx.pem reqadd X-Forwarded-Proto: https acl is_oai_pmh hdr_beg(host) -i oai-pmh acl is_portal_www hdr_beg(host) -i www acl is_portal_top hdr_beg(host) -i repositorionacionalcti use_backend app1 if is_portal_www || is_portal_top use_backend app2 if is_oai_pmh backend app1 redirect scheme https if !{ ssl_fc } server app1_serv1 portal:8080
  20. 20. Conclusiones
  21. 21. Conclusiones El diseccionado de las aplicaciones por funciones facilita su construcción El uso de REST - JSON como medio de interoperabilidad entre partes de la aplicación ¿Microservicios? ¿Alta disponibilidad?
  22. 22. ¿Preguntas? Gracias!!!!

×