Transcript
Page 1: ESGF + DOCKER · ESGF/Docker Solr Cloud Architecture Shard 1 Shard 2 Shard 3 ESGF SOLR CLOUD (Jetty) Shard 1 Shard 2 Shard 3 ESGF SOLR CLOUD (Jetty) Shard 7 Shard 8 Shard 9 •Solr-Cloud

ESGF + DOCKER

LucaCinquiniNASA/JetPropulsionLaboratory+CaliforniaIns:tuteofTechnology

ESGFF2FWorkshop,Washington,DC,December2016

Page 2: ESGF + DOCKER · ESGF/Docker Solr Cloud Architecture Shard 1 Shard 2 Shard 3 ESGF SOLR CLOUD (Jetty) Shard 1 Shard 2 Shard 3 ESGF SOLR CLOUD (Jetty) Shard 7 Shard 8 Shard 9 •Solr-Cloud

DockerinaNutshell

• Dockeristheleading“containeriza:on”technology:runanapplica:onasa“blackbox”onanyDocker-enabledserver‣ Build:imagesarebuiltasbundlesthatincludetheapplica:onitself,allofitsdependencies,and“just-enough-opera:ng-system”‣ Ship:imagesarehostedononlinerepositoriessuchasDockerHub‣ Run:imagesarerunascontainersonanyhostthatincludesaDockerdaemon

•WhyusingDockerforESGF?‣ Promisestogreatlyimproveinstalla:onandmaintenanceofanESGFnode‣ PartofDREAMstrategyformodularizingtheESGFarchitectureandpor:ngittootherdomains

Page 3: ESGF + DOCKER · ESGF/Docker Solr Cloud Architecture Shard 1 Shard 2 Shard 3 ESGF SOLR CLOUD (Jetty) Shard 1 Shard 2 Shard 3 ESGF SOLR CLOUD (Jetty) Shard 7 Shard 8 Shard 9 •Solr-Cloud

Demo:InstallandRunanESGFNode

• Pre-requisite:installDockerEngineonhost(Linux,MacOSX,Windows)• Instruc:ons:‣ gitcloneh`ps://github.com/ESGF/esgf-docker.git‣ cdesgf-docker‣ exportESGF_HOSTNAME=<hostFQDN>‣ exportESGF_CONFIG=<somedirectory>‣ ./esgf_node_init.sh‣ docker-composeup

h`ps://hub.docker.com/esggub/

h`ps://my-node.esgf.org/

CoG

TDS

Solr

Page 4: ESGF + DOCKER · ESGF/Docker Solr Cloud Architecture Shard 1 Shard 2 Shard 3 ESGF SOLR CLOUD (Jetty) Shard 1 Shard 2 Shard 3 ESGF SOLR CLOUD (Jetty) Shard 7 Shard 8 Shard 9 •Solr-Cloud

ESGF/DockercompleteNodeArchitecture

• AllESGFservicesarerunasindependent,interac:ngDockercontainers• SpecificNodeconfigura:on(cer:ficates,passwords,XMLfiles)savedin$ESGF_CONFIG• SpecificNodedata(Postgresdb,Solrindexes,TDScatalogs,NetCDFfiles,CoGsitemedia)storedonDockervolumes

• Customnetworksisolateapplica:onsforaddi:onalsecurity(forexample,Postgresdb)

Threads Data Server+ OpenID Relying Party

(Tomcat)

ESGF DATA NODE

ESGF POSTGRES DB

TDS CATALOGS

ESGF CONFIG DATA

ESGF SOLR(Jetty)

SOLR DATA

ESGF CONFIGURATION(site specific)

esgf-search webapp(Tomcat)

ESGF INDEX NODE

ESGF COG

COG DATA

httpd + mod_wsgi

ESGF WEBUI NODE

ESGF IDP NODE

esgf-idp webapp(Tomcat)

ESGF/Docker complete Node Architecture

POSTGRES DATA

ESGF DATA

ESGF FTP

docker-compose-fdocker-compose.ymlup

Page 5: ESGF + DOCKER · ESGF/Docker Solr Cloud Architecture Shard 1 Shard 2 Shard 3 ESGF SOLR CLOUD (Jetty) Shard 1 Shard 2 Shard 3 ESGF SOLR CLOUD (Jetty) Shard 7 Shard 8 Shard 9 •Solr-Cloud

DockerDetails

Dockerfile:“recipe”forbuildingaDockerimage

docker-compose.yml:configura:onfileforbundlingseveralimages

Page 6: ESGF + DOCKER · ESGF/Docker Solr Cloud Architecture Shard 1 Shard 2 Shard 3 ESGF SOLR CLOUD (Jetty) Shard 1 Shard 2 Shard 3 ESGF SOLR CLOUD (Jetty) Shard 7 Shard 8 Shard 9 •Solr-Cloud

ESGF/DockerDataNodeArchitecture

docker-compose-fdocker-compose-data-node.ymlup

Threads Data Server+ OpenID Relying Party

(Tomcat)

ESGF DATA NODE

ESGF POSTGRES DB

TDS CATALOGS

ESGF CONFIG DATA

ESGF CONFIGURATION(site specific)

ESGF/Docker Data Node Architecture

POSTGRES DATA

ESGF DATA

ESGF FTP

Page 7: ESGF + DOCKER · ESGF/Docker Solr Cloud Architecture Shard 1 Shard 2 Shard 3 ESGF SOLR CLOUD (Jetty) Shard 1 Shard 2 Shard 3 ESGF SOLR CLOUD (Jetty) Shard 7 Shard 8 Shard 9 •Solr-Cloud

ESGF/DockerIndexNodeArchitecture

docker-compose-fdocker-compose-index-node.ymlup

UsingstandardSolrreplica:on+distributedsearch

ESGF CONFIG DATA

ESGF SOLR(Jetty)SOLR DATA

ESGF CONFIGURATION(site specific)

esgf-search webapp(Tomcat)

ESGF INDEX NODE

httpd + mod_wsgi

ESGF WEBUI NODE

ESGF/Docker Index Node Architecture

Slave Shard Master Shard

Page 8: ESGF + DOCKER · ESGF/Docker Solr Cloud Architecture Shard 1 Shard 2 Shard 3 ESGF SOLR CLOUD (Jetty) Shard 1 Shard 2 Shard 3 ESGF SOLR CLOUD (Jetty) Shard 7 Shard 8 Shard 9 •Solr-Cloud

ESGF/DockerIndexNodewithSolrCloud

docker-compose-fdocker-compose-solr-cloud.ymlup

ESGF CONFIG DATA

ESGF SOLR CLOUD(Jetty)SOLR DATA

ESGF CONFIGURATION(site specific)

esgf-search webapp(Tomcat)

ESGF INDEX NODE

httpd + mod_wsgi

ESGF WEBUI NODE

ESGF/Docker Solr Cloud Architecture

Shard 1 Shard 2 Shard 3ESGF SOLR CLOUD

(Jetty)

Shard 1 Shard 2 Shard 3ESGF SOLR CLOUD

(Jetty)

Shard 7 Shard 8 Shard 9

• Solr-Cloudadvantages:‣ Automa:cdistributedindexingandsearching(nocustomconfigura:on)‣ Loadbalancingandhighavailability‣ Faulttolerance‣ Scalability

Page 9: ESGF + DOCKER · ESGF/Docker Solr Cloud Architecture Shard 1 Shard 2 Shard 3 ESGF SOLR CLOUD (Jetty) Shard 1 Shard 2 Shard 3 ESGF SOLR CLOUD (Jetty) Shard 7 Shard 8 Shard 9 •Solr-Cloud

AdvantagesofusingDockerforESGF

• Installa:on:‣ Installa:onscriptsaremuchmoremodularandmuchsmaller‣ Installa:onprocessismusheasier:simplydownloadtheimages,nocompila:oninvolved‣ Easierupgrades,possiblyonemoduleata:me,andreversible‣ Everybodyrunsexactlythesamesokware

• Architecture:‣ Candefineanddeploynewarchitecturesbysimplywri:ngnewconfigura:onfiles‣ Canintroducenewmodulesbysimplywri:ng&wiringnewimages(solr-cloud,nginx,…)

• Portability:ESGFnodewillrunonanyplanorm(Linux,MacOSx,Windows)includingCloud

• Scalability:modulescanbescaledarbitrarilybyrunningmorecontainers(e.g.TDS,WPS…)‣ Caveat:applica:onmustbewri`entoenabledistributedaccesstodata

• OtherDocker/Swarmadvancedfeatures:‣ Scalabilityontomul:plehostsclusters‣ Highavailability,faulttolerance,rollingupdates,…

Page 10: ESGF + DOCKER · ESGF/Docker Solr Cloud Architecture Shard 1 Shard 2 Shard 3 ESGF SOLR CLOUD (Jetty) Shard 1 Shard 2 Shard 3 ESGF SOLR CLOUD (Jetty) Shard 7 Shard 8 Shard 9 •Solr-Cloud

DisadvantagesofusingDockerforESGF

•Dockerisanewparadigmforbuildingandrunningapplica:ons:‣ Newknowledgeforapplica:ondevelopers‣ Newtrainingfornodeadministrators‣ Excellentandup-to-datedocumenta:onisamust

•MustporttheremainingESGFmodulestoDocker:‣ ESGFPublisherClient‣ Globus‣MyProxyornewOAuthserver‣ Desktop+Dashboard‣ LAS

•Mustdevelopaprocesstomigrateallapplica:ondata:‣ ESGFPostgresdatabase(usersanddata)‣ TDScatalogs‣ Solrindexes‣ CoGPostgresdatabaseandsitedata

Page 11: ESGF + DOCKER · ESGF/Docker Solr Cloud Architecture Shard 1 Shard 2 Shard 3 ESGF SOLR CLOUD (Jetty) Shard 1 Shard 2 Shard 3 ESGF SOLR CLOUD (Jetty) Shard 7 Shard 8 Shard 9 •Solr-Cloud

PossibleFutureRoadmap

•Establisha“whaleteam”ofexpertstoworkon:‣ Testthecurrentinfrastructure‣ Porttheremainingmodules‣Workonotheroutstanding:ckets‣ Developates:ngsuite‣ Developdatamigra:ontools‣ Reviseandexpandthedocumenta:on‣ Re-usecurrentesgf-iwtbiweeklymee:ngs?

•Migra:ngtoDockerwouldtake6-12months‣Mustsupportcurrentorupgradedinstalledinthemean:me‣MightwanttoswitchakerCMIP6-lookingintothelong-termlongevityofESGF…


Recommended