SlideShare ist ein Scribd-Unternehmen logo
1 von 18
Retours d'expérience
31/05/2016
CrossKnowlegde
Qui sommes nous ?
CrossKnowledge est un leader mondial de la formation à distance pour le développement des
compétences en leadership et en management, en s'appuyant sur les nouvelles technologies.
Fondée en 2000, CrossKnowledge est une société internationale avec plus de 350 personnes.
Le département R&D se trouve à Sophia et compte près de 100 personnes.
Nous avons des bureaux en Belgique, Brésil, France, Allemagne, Italie, Pays-Bas, Espagne, Suisse,
Royaume-Uni, États-Unis, et des partenariats stratégiques au Maroc, la Finlande, l'Inde, la Chine, le
Japon, le Canada et beaucoup d'autres.
Depuis le 1er mai 2014, CrossKnowledge fait partie du groupe Wiley.
CrossKnowlegde
Notre mission
"We empower the transformation
of individuals, and entire
corporations with learning"
CrossKnowlegde
Notre produit
CrossKnowledge fournit une suite elearning en mode ‘Software As A Service’.
Il s'agit d'une application PHP basée sur LAMP permettant d’établir des parcours et des sessions pour
des apprenants, avec mise à disposition de contenus fournis par CrossKnowledge ou par le client.
Besoins
Le moteur de recherche inclu dans l'application CKLS s'appuyait, avant 05/2015, sur des requêtes SQL
effectuées directement dans la base de données dédiée au client. Il existait, en option, un moteur de
recherche basé sur un backend Solr standalone.
Pour accompagner notre croissance nous devions satisfaire certains critères :
➢ Respecter un environnement multi langues (19 langues officiellement supportés et en tout une 40aine de
langues ou localisations existantes sur le parc de clients) et une haute disponibilité du service car il
devait être implémenté non plus sous forme d'option mais comme une fonctionnalité du coeur de
l'application.
➢ Le cloisonement entre chaque client devait lui aussi être satisfait. Il existe des restrictions de visibilités
(certains contenus ne doivent pas être vus par certains apprenants (Ex. la stratégie de licenciement de
3000 personnes).
➢ La pertinence des recherches.
Choix de la solution
Audit
Nous avons effectué un audit des solutions disponibles sur le marché :
CloudSearch (Amazon): choix orienté SaaS qui a vite été éliminé pour des raisons de
limitations.
Elasticsearch: produit éliminé pour sa jeunesse (v1.0 sortie 2014) et sa communauté peu
développée à cette époque.
SolrCloud: choix final car la solution répondait à nos exigences en terme de HA et profitait par
ailleurs d’une communauté conséquente.
Proof Of Concept
Une fois le choix établi, nous avons donc élaboré une plateforme de POC en partant du principe que
notre base client (~500) devait doubler assez rapidement.
Le POC a donc eu lieu sur un maximum de 1200 collections chacune chargée dans un premier temps
à vide et ensuite avec les données de notre plus gros client en terme de contenus.
Nos infrastructures s’appuyant essentiellement sur des fournisseurs d’IaaS, notre choix s’est porté
vers AWS d’Amazon repondant déjà à nos exigences de disponibilité, de certification et de
géolocalisation.
Proof Of Concept
Problématiques rencontrées
➢ Obligation de passer par le mode asynchrone pour créer ou effacer des collections en masse (à
cause des timeout ).
➢ Temps de chargement des collections (d'un node) > 20min.
➢ Le reload de collections avec un nombre important de collections n'est pas préconisé car cela est
très gourmand et créé des timeout. Du coup il est impossible de savoir quelles collections ont été
rechargées.
➢ Lors d'un redémarrage des box certains shards restent en état « down » : obligation de faire une
requête WS (REQUESTRECOVERY) sur les shards impliqués. Ceci engendre l'ecriture de scripts.
(problème de cohérence du fichier clusterstate.json)
Proof Of Concept
Problématiques rencontrées
➢ Il y a une des situations où Zookeeper a déconnecté des cores. Dans cette situation particulière
ce qui peut se passer est que la taille de l'objet de l'overseer est devenu trop grande et
Zookeeper déconnecte toute connexion tentant de regarder cet objet, dans ce cas là il a fallu:
- se connecter au leader ZK.
- augmenter la taille du buffer (znode = 1M par défaut) de la JMV « -Djute.maxbuffer » pour
pouvoir lire le fichier /overseer/queue et ensuite l'effacer (rmr /overseer/queue).
- redémarrer les solr.
Proof Of Concept
Problématiques rencontrées
➢ Fonctionalités internes de type « status » du quorum (ZK) indisponibles à cause du trop grand nombre de collections.
➢ Beaucoup d'opérations manuelles lors de l'ajout d'un node :
- requête WS (addreplica) * le nombre de collections * nombre de shards.
- obligation de scripter l'ajout d'un node.
➢ Crash du quorum lorsque la JVM avoisine 95% d’utilisation.
➢ Problématique sur l'utilisation de dictionnaires, celui-ci n'est pas mutualisé entre les collections, donc chaque
collection charge le/les dictionnaires ce qui abouti à un crash de la JVM. Cependant les dictionnaire sont très difficiles
à obtenir surement très chers et très lourds ( problématique au niveau znode) et non partagés sur le web.
➢ Problématique au niveau des requêtes sur Solr, nous avons été obligé d'augmenter la valeur du paramètre
« maxBooleanClauses » (maximum number of clauses in a boolean query).
Architecture
Architecture finale de production :
1 x Elastic Load balancer qui porte le certificat et assure l’équilibrage de
charge.
3 x t2.medium (2 x vCPU + 4G RAM) assurant les fonctions Zookeeper.
3 x m4.4xlarge (16 x vCPU + 64G RAM) assurant les fonctions Solr (JVM 32G).
614 collections, entre 200 et 300 r/s en moyenne.
Solr cloud architecture
SOLR 2SOLR 1
Zone 1 Zone 2 Zone 3
SOLR 3
http http
ZK1 ZK2 ZK3
Quorum
zookeeper
Load Balancerinternet
http http
https
Clients requests
http http
Tests de charge
Tests de stabilité
Tests d'indexation
Conclusion
Malgré les problématiques rencontrées tout au long du POC, la solution SolrCloud répond à nos besoins :
➢ Séparation des données
➢ Performances (beaucoup de clients)
➢ Haute disponibilité
Merci !
On recrute :)
Contacts
olivier.damiot@crossknowledge.com
stephane.malinet@crossknowledge.com
yannick.milanetto@crossknowledge.com
Job offers
https://careers.smartrecruiters.com/CrossKnowledge
C’est l’heure du Quiz !
Combien de collections avons-nous 
sur le Solr Cloud en production ?
A) 1200
B) 614
C) 514
D) 9999
Répondez vite en tweetant sur @TechConfQuiz

Weitere ähnliche Inhalte

Was ist angesagt?

[Breizhcamp 2015] MongoDB et Elastic, meilleurs ennemis ?
[Breizhcamp 2015] MongoDB et Elastic, meilleurs ennemis ?[Breizhcamp 2015] MongoDB et Elastic, meilleurs ennemis ?
[Breizhcamp 2015] MongoDB et Elastic, meilleurs ennemis ?Sébastien Prunier
 
Oxalide Workshop #3 - Elasticearch, an overview
Oxalide Workshop #3 - Elasticearch, an overviewOxalide Workshop #3 - Elasticearch, an overview
Oxalide Workshop #3 - Elasticearch, an overviewLudovic Piot
 
Solr + Hadoop - Fouillez facilement dans votre système Big Data
Solr + Hadoop - Fouillez facilement dans votre système Big DataSolr + Hadoop - Fouillez facilement dans votre système Big Data
Solr + Hadoop - Fouillez facilement dans votre système Big Datafrancelabs
 
Paris data geek - Elasticsearch
Paris data geek - ElasticsearchParis data geek - Elasticsearch
Paris data geek - ElasticsearchDavid Pilato
 
Apache Zeppelin @DevoxxFR 2016
Apache Zeppelin @DevoxxFR 2016Apache Zeppelin @DevoxxFR 2016
Apache Zeppelin @DevoxxFR 2016Duyhai Doan
 
Lausanne JUG - Elasticsearch
Lausanne JUG - ElasticsearchLausanne JUG - Elasticsearch
Lausanne JUG - ElasticsearchDavid Pilato
 
Paris Spark meetup : Extension de Spark (Tachyon / Spark JobServer) par jlamiel
Paris Spark meetup : Extension de Spark (Tachyon / Spark JobServer) par jlamielParis Spark meetup : Extension de Spark (Tachyon / Spark JobServer) par jlamiel
Paris Spark meetup : Extension de Spark (Tachyon / Spark JobServer) par jlamielModern Data Stack France
 
Elasticsearch - Esme sudria
Elasticsearch - Esme sudriaElasticsearch - Esme sudria
Elasticsearch - Esme sudriaDavid Pilato
 
DataStax Enterprise et Cas d'utilisation de Apache Cassandra
DataStax Enterprise et Cas d'utilisation de Apache CassandraDataStax Enterprise et Cas d'utilisation de Apache Cassandra
DataStax Enterprise et Cas d'utilisation de Apache CassandraVictor Coustenoble
 
Relational databases & NoSQL databases
Relational databases & NoSQL databasesRelational databases & NoSQL databases
Relational databases & NoSQL databasesCédric Villa
 
Présentation de Apache Zookeeper
Présentation de Apache ZookeeperPrésentation de Apache Zookeeper
Présentation de Apache ZookeeperMichaël Morello
 
Atelier : Développement rapide d’une application basée surXWiki
Atelier : Développement rapide d’une application basée surXWikiAtelier : Développement rapide d’une application basée surXWiki
Atelier : Développement rapide d’une application basée surXWikiKorteby Farouk
 
DataStax Enterprise - La plateforme de base de données pour le Cloud
DataStax Enterprise - La plateforme de base de données pour le CloudDataStax Enterprise - La plateforme de base de données pour le Cloud
DataStax Enterprise - La plateforme de base de données pour le CloudVictor Coustenoble
 
June Spark meetup : search as recommandation
June Spark meetup : search as recommandationJune Spark meetup : search as recommandation
June Spark meetup : search as recommandationModern Data Stack France
 
Quelles stratégies de Recherche avec Cassandra ?
Quelles stratégies de Recherche avec Cassandra ?Quelles stratégies de Recherche avec Cassandra ?
Quelles stratégies de Recherche avec Cassandra ?Victor Coustenoble
 

Was ist angesagt? (16)

[Breizhcamp 2015] MongoDB et Elastic, meilleurs ennemis ?
[Breizhcamp 2015] MongoDB et Elastic, meilleurs ennemis ?[Breizhcamp 2015] MongoDB et Elastic, meilleurs ennemis ?
[Breizhcamp 2015] MongoDB et Elastic, meilleurs ennemis ?
 
Oxalide Workshop #3 - Elasticearch, an overview
Oxalide Workshop #3 - Elasticearch, an overviewOxalide Workshop #3 - Elasticearch, an overview
Oxalide Workshop #3 - Elasticearch, an overview
 
Solr + Hadoop - Fouillez facilement dans votre système Big Data
Solr + Hadoop - Fouillez facilement dans votre système Big DataSolr + Hadoop - Fouillez facilement dans votre système Big Data
Solr + Hadoop - Fouillez facilement dans votre système Big Data
 
Paris data geek - Elasticsearch
Paris data geek - ElasticsearchParis data geek - Elasticsearch
Paris data geek - Elasticsearch
 
Apache Zeppelin @DevoxxFR 2016
Apache Zeppelin @DevoxxFR 2016Apache Zeppelin @DevoxxFR 2016
Apache Zeppelin @DevoxxFR 2016
 
Lausanne JUG - Elasticsearch
Lausanne JUG - ElasticsearchLausanne JUG - Elasticsearch
Lausanne JUG - Elasticsearch
 
Paris Spark meetup : Extension de Spark (Tachyon / Spark JobServer) par jlamiel
Paris Spark meetup : Extension de Spark (Tachyon / Spark JobServer) par jlamielParis Spark meetup : Extension de Spark (Tachyon / Spark JobServer) par jlamiel
Paris Spark meetup : Extension de Spark (Tachyon / Spark JobServer) par jlamiel
 
Elasticsearch - Esme sudria
Elasticsearch - Esme sudriaElasticsearch - Esme sudria
Elasticsearch - Esme sudria
 
DataStax Enterprise et Cas d'utilisation de Apache Cassandra
DataStax Enterprise et Cas d'utilisation de Apache CassandraDataStax Enterprise et Cas d'utilisation de Apache Cassandra
DataStax Enterprise et Cas d'utilisation de Apache Cassandra
 
Relational databases & NoSQL databases
Relational databases & NoSQL databasesRelational databases & NoSQL databases
Relational databases & NoSQL databases
 
Présentation de Apache Zookeeper
Présentation de Apache ZookeeperPrésentation de Apache Zookeeper
Présentation de Apache Zookeeper
 
Atelier : Développement rapide d’une application basée surXWiki
Atelier : Développement rapide d’une application basée surXWikiAtelier : Développement rapide d’une application basée surXWiki
Atelier : Développement rapide d’une application basée surXWiki
 
DataStax Enterprise - La plateforme de base de données pour le Cloud
DataStax Enterprise - La plateforme de base de données pour le CloudDataStax Enterprise - La plateforme de base de données pour le Cloud
DataStax Enterprise - La plateforme de base de données pour le Cloud
 
June Spark meetup : search as recommandation
June Spark meetup : search as recommandationJune Spark meetup : search as recommandation
June Spark meetup : search as recommandation
 
introduction à MongoDB
introduction à MongoDBintroduction à MongoDB
introduction à MongoDB
 
Quelles stratégies de Recherche avec Cassandra ?
Quelles stratégies de Recherche avec Cassandra ?Quelles stratégies de Recherche avec Cassandra ?
Quelles stratégies de Recherche avec Cassandra ?
 

Ähnlich wie Solr retour d'experience

JFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-grâce-à-Docker.pdf
JFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-grâce-à-Docker.pdfJFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-grâce-à-Docker.pdf
JFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-grâce-à-Docker.pdfqsdqsd4
 
JFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-gr__ce-__-Docker.pptx
JFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-gr__ce-__-Docker.pptxJFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-gr__ce-__-Docker.pptx
JFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-gr__ce-__-Docker.pptxAnisSalhi3
 
Un Voyage dans le Cloud: Les Meilleures Pratiques Pour Démarrer Dans Le Cloud...
Un Voyage dans le Cloud: Les Meilleures Pratiques Pour Démarrer Dans Le Cloud...Un Voyage dans le Cloud: Les Meilleures Pratiques Pour Démarrer Dans Le Cloud...
Un Voyage dans le Cloud: Les Meilleures Pratiques Pour Démarrer Dans Le Cloud...Amazon Web Services
 
AWS Paris Summit 2014 - T3 - Architecturer avec AWS pour des millions d'util...
AWS Paris Summit 2014 - T3 -  Architecturer avec AWS pour des millions d'util...AWS Paris Summit 2014 - T3 -  Architecturer avec AWS pour des millions d'util...
AWS Paris Summit 2014 - T3 - Architecturer avec AWS pour des millions d'util...Amazon Web Services
 
Déploiement, orchestration & sécurisation d’APIs
Déploiement, orchestration & sécurisation d’APIsDéploiement, orchestration & sécurisation d’APIs
Déploiement, orchestration & sécurisation d’APIsNicolas Herbaut
 
Dossier de competences MA
Dossier de competences MADossier de competences MA
Dossier de competences MAClementine D.
 
Architectures microservices
Architectures microservicesArchitectures microservices
Architectures microservicesRiadh MNASRI
 
Scalabilité et haute performance d'application PHP légacy
Scalabilité et haute performance d'application PHP légacy Scalabilité et haute performance d'application PHP légacy
Scalabilité et haute performance d'application PHP légacy Arnaud LEMAIRE
 
Cloud design patterns
Cloud design patternsCloud design patterns
Cloud design patternsPascal Laurin
 
AWS Summit Paris - Track 2 - Session 2 - Préparez-vous à l'imprévu
AWS Summit Paris - Track 2 - Session 2 - Préparez-vous à l'imprévuAWS Summit Paris - Track 2 - Session 2 - Préparez-vous à l'imprévu
AWS Summit Paris - Track 2 - Session 2 - Préparez-vous à l'imprévuAmazon Web Services
 
TechDays 2014 : retour d'expérience Kompass migration Java dans Azure
TechDays 2014 : retour d'expérience Kompass migration Java dans AzureTechDays 2014 : retour d'expérience Kompass migration Java dans Azure
TechDays 2014 : retour d'expérience Kompass migration Java dans AzureThomas Conté
 
Agile lille 2015 devops etapres
Agile lille 2015 devops etapresAgile lille 2015 devops etapres
Agile lille 2015 devops etapresLaurent Tardif
 
Microservices depuis les tranchées
Microservices depuis les tranchéesMicroservices depuis les tranchées
Microservices depuis les tranchéesyannick grenzinger
 
Déploiements avec Docker
Déploiements avec DockerDéploiements avec Docker
Déploiements avec DockerLuis Lopez
 
"J'ai migré mon SI intégralement en Java dans Windows Azure et je me porte bi...
"J'ai migré mon SI intégralement en Java dans Windows Azure et je me porte bi..."J'ai migré mon SI intégralement en Java dans Windows Azure et je me porte bi...
"J'ai migré mon SI intégralement en Java dans Windows Azure et je me porte bi...Microsoft
 
AWS Paris Summit 2014 - T2 - Déployer des environnements entreprises hybrides
AWS Paris Summit 2014 - T2 - Déployer des environnements entreprises hybridesAWS Paris Summit 2014 - T2 - Déployer des environnements entreprises hybrides
AWS Paris Summit 2014 - T2 - Déployer des environnements entreprises hybridesAmazon Web Services
 
Implentation d'une solution Cloud IAAS
Implentation d'une solution Cloud IAASImplentation d'une solution Cloud IAAS
Implentation d'une solution Cloud IAASmohamed hadrich
 

Ähnlich wie Solr retour d'experience (20)

Cerberus Testing
Cerberus TestingCerberus Testing
Cerberus Testing
 
JFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-grâce-à-Docker.pdf
JFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-grâce-à-Docker.pdfJFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-grâce-à-Docker.pdf
JFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-grâce-à-Docker.pdf
 
JFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-gr__ce-__-Docker.pptx
JFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-gr__ce-__-Docker.pptxJFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-gr__ce-__-Docker.pptx
JFTL-2018-Comment-mettre-en-place-des-plateformes-de-test-gr__ce-__-Docker.pptx
 
Un Voyage dans le Cloud: Les Meilleures Pratiques Pour Démarrer Dans Le Cloud...
Un Voyage dans le Cloud: Les Meilleures Pratiques Pour Démarrer Dans Le Cloud...Un Voyage dans le Cloud: Les Meilleures Pratiques Pour Démarrer Dans Le Cloud...
Un Voyage dans le Cloud: Les Meilleures Pratiques Pour Démarrer Dans Le Cloud...
 
Dev opsday case study
Dev opsday   case studyDev opsday   case study
Dev opsday case study
 
AWS Paris Summit 2014 - T3 - Architecturer avec AWS pour des millions d'util...
AWS Paris Summit 2014 - T3 -  Architecturer avec AWS pour des millions d'util...AWS Paris Summit 2014 - T3 -  Architecturer avec AWS pour des millions d'util...
AWS Paris Summit 2014 - T3 - Architecturer avec AWS pour des millions d'util...
 
Déploiement, orchestration & sécurisation d’APIs
Déploiement, orchestration & sécurisation d’APIsDéploiement, orchestration & sécurisation d’APIs
Déploiement, orchestration & sécurisation d’APIs
 
Dossier de competences MA
Dossier de competences MADossier de competences MA
Dossier de competences MA
 
Architectures microservices
Architectures microservicesArchitectures microservices
Architectures microservices
 
Scalabilité et haute performance d'application PHP légacy
Scalabilité et haute performance d'application PHP légacy Scalabilité et haute performance d'application PHP légacy
Scalabilité et haute performance d'application PHP légacy
 
Cloud design patterns
Cloud design patternsCloud design patterns
Cloud design patterns
 
AWS Summit Paris - Track 2 - Session 2 - Préparez-vous à l'imprévu
AWS Summit Paris - Track 2 - Session 2 - Préparez-vous à l'imprévuAWS Summit Paris - Track 2 - Session 2 - Préparez-vous à l'imprévu
AWS Summit Paris - Track 2 - Session 2 - Préparez-vous à l'imprévu
 
TechDays 2014 : retour d'expérience Kompass migration Java dans Azure
TechDays 2014 : retour d'expérience Kompass migration Java dans AzureTechDays 2014 : retour d'expérience Kompass migration Java dans Azure
TechDays 2014 : retour d'expérience Kompass migration Java dans Azure
 
Agile lille 2015 devops etapres
Agile lille 2015 devops etapresAgile lille 2015 devops etapres
Agile lille 2015 devops etapres
 
Microservices depuis les tranchées
Microservices depuis les tranchéesMicroservices depuis les tranchées
Microservices depuis les tranchées
 
The DevOps Wonder @ PHPTour Lyon 2014
The DevOps Wonder @ PHPTour Lyon 2014The DevOps Wonder @ PHPTour Lyon 2014
The DevOps Wonder @ PHPTour Lyon 2014
 
Déploiements avec Docker
Déploiements avec DockerDéploiements avec Docker
Déploiements avec Docker
 
"J'ai migré mon SI intégralement en Java dans Windows Azure et je me porte bi...
"J'ai migré mon SI intégralement en Java dans Windows Azure et je me porte bi..."J'ai migré mon SI intégralement en Java dans Windows Azure et je me porte bi...
"J'ai migré mon SI intégralement en Java dans Windows Azure et je me porte bi...
 
AWS Paris Summit 2014 - T2 - Déployer des environnements entreprises hybrides
AWS Paris Summit 2014 - T2 - Déployer des environnements entreprises hybridesAWS Paris Summit 2014 - T2 - Déployer des environnements entreprises hybrides
AWS Paris Summit 2014 - T2 - Déployer des environnements entreprises hybrides
 
Implentation d'une solution Cloud IAAS
Implentation d'une solution Cloud IAASImplentation d'une solution Cloud IAAS
Implentation d'une solution Cloud IAAS
 

Solr retour d'experience

  • 2. CrossKnowlegde Qui sommes nous ? CrossKnowledge est un leader mondial de la formation à distance pour le développement des compétences en leadership et en management, en s'appuyant sur les nouvelles technologies. Fondée en 2000, CrossKnowledge est une société internationale avec plus de 350 personnes. Le département R&D se trouve à Sophia et compte près de 100 personnes. Nous avons des bureaux en Belgique, Brésil, France, Allemagne, Italie, Pays-Bas, Espagne, Suisse, Royaume-Uni, États-Unis, et des partenariats stratégiques au Maroc, la Finlande, l'Inde, la Chine, le Japon, le Canada et beaucoup d'autres. Depuis le 1er mai 2014, CrossKnowledge fait partie du groupe Wiley.
  • 3. CrossKnowlegde Notre mission "We empower the transformation of individuals, and entire corporations with learning"
  • 4. CrossKnowlegde Notre produit CrossKnowledge fournit une suite elearning en mode ‘Software As A Service’. Il s'agit d'une application PHP basée sur LAMP permettant d’établir des parcours et des sessions pour des apprenants, avec mise à disposition de contenus fournis par CrossKnowledge ou par le client.
  • 5. Besoins Le moteur de recherche inclu dans l'application CKLS s'appuyait, avant 05/2015, sur des requêtes SQL effectuées directement dans la base de données dédiée au client. Il existait, en option, un moteur de recherche basé sur un backend Solr standalone. Pour accompagner notre croissance nous devions satisfaire certains critères : ➢ Respecter un environnement multi langues (19 langues officiellement supportés et en tout une 40aine de langues ou localisations existantes sur le parc de clients) et une haute disponibilité du service car il devait être implémenté non plus sous forme d'option mais comme une fonctionnalité du coeur de l'application. ➢ Le cloisonement entre chaque client devait lui aussi être satisfait. Il existe des restrictions de visibilités (certains contenus ne doivent pas être vus par certains apprenants (Ex. la stratégie de licenciement de 3000 personnes). ➢ La pertinence des recherches.
  • 6. Choix de la solution Audit Nous avons effectué un audit des solutions disponibles sur le marché : CloudSearch (Amazon): choix orienté SaaS qui a vite été éliminé pour des raisons de limitations. Elasticsearch: produit éliminé pour sa jeunesse (v1.0 sortie 2014) et sa communauté peu développée à cette époque. SolrCloud: choix final car la solution répondait à nos exigences en terme de HA et profitait par ailleurs d’une communauté conséquente.
  • 7. Proof Of Concept Une fois le choix établi, nous avons donc élaboré une plateforme de POC en partant du principe que notre base client (~500) devait doubler assez rapidement. Le POC a donc eu lieu sur un maximum de 1200 collections chacune chargée dans un premier temps à vide et ensuite avec les données de notre plus gros client en terme de contenus. Nos infrastructures s’appuyant essentiellement sur des fournisseurs d’IaaS, notre choix s’est porté vers AWS d’Amazon repondant déjà à nos exigences de disponibilité, de certification et de géolocalisation.
  • 8. Proof Of Concept Problématiques rencontrées ➢ Obligation de passer par le mode asynchrone pour créer ou effacer des collections en masse (à cause des timeout ). ➢ Temps de chargement des collections (d'un node) > 20min. ➢ Le reload de collections avec un nombre important de collections n'est pas préconisé car cela est très gourmand et créé des timeout. Du coup il est impossible de savoir quelles collections ont été rechargées. ➢ Lors d'un redémarrage des box certains shards restent en état « down » : obligation de faire une requête WS (REQUESTRECOVERY) sur les shards impliqués. Ceci engendre l'ecriture de scripts. (problème de cohérence du fichier clusterstate.json)
  • 9. Proof Of Concept Problématiques rencontrées ➢ Il y a une des situations où Zookeeper a déconnecté des cores. Dans cette situation particulière ce qui peut se passer est que la taille de l'objet de l'overseer est devenu trop grande et Zookeeper déconnecte toute connexion tentant de regarder cet objet, dans ce cas là il a fallu: - se connecter au leader ZK. - augmenter la taille du buffer (znode = 1M par défaut) de la JMV « -Djute.maxbuffer » pour pouvoir lire le fichier /overseer/queue et ensuite l'effacer (rmr /overseer/queue). - redémarrer les solr.
  • 10. Proof Of Concept Problématiques rencontrées ➢ Fonctionalités internes de type « status » du quorum (ZK) indisponibles à cause du trop grand nombre de collections. ➢ Beaucoup d'opérations manuelles lors de l'ajout d'un node : - requête WS (addreplica) * le nombre de collections * nombre de shards. - obligation de scripter l'ajout d'un node. ➢ Crash du quorum lorsque la JVM avoisine 95% d’utilisation. ➢ Problématique sur l'utilisation de dictionnaires, celui-ci n'est pas mutualisé entre les collections, donc chaque collection charge le/les dictionnaires ce qui abouti à un crash de la JVM. Cependant les dictionnaire sont très difficiles à obtenir surement très chers et très lourds ( problématique au niveau znode) et non partagés sur le web. ➢ Problématique au niveau des requêtes sur Solr, nous avons été obligé d'augmenter la valeur du paramètre « maxBooleanClauses » (maximum number of clauses in a boolean query).
  • 11. Architecture Architecture finale de production : 1 x Elastic Load balancer qui porte le certificat et assure l’équilibrage de charge. 3 x t2.medium (2 x vCPU + 4G RAM) assurant les fonctions Zookeeper. 3 x m4.4xlarge (16 x vCPU + 64G RAM) assurant les fonctions Solr (JVM 32G). 614 collections, entre 200 et 300 r/s en moyenne.
  • 12. Solr cloud architecture SOLR 2SOLR 1 Zone 1 Zone 2 Zone 3 SOLR 3 http http ZK1 ZK2 ZK3 Quorum zookeeper Load Balancerinternet http http https Clients requests http http
  • 16. Conclusion Malgré les problématiques rencontrées tout au long du POC, la solution SolrCloud répond à nos besoins : ➢ Séparation des données ➢ Performances (beaucoup de clients) ➢ Haute disponibilité