Skip to content

tulibraries/funcake-solr

Repository files navigation

Funnel Cake (funcake) Solr Configurations

CircleCI

These are the Solr configuration files for the Funnel Cake (PA Digital) internal metadata search & faceting Solr collection.

Prerequisites

  • These configurations are built for Solr 8.1
  • The instructions below presume a SolrCloud multi-node setup (using an external Zookeeper)

Local Testing / Development

You need a local SolrCloud cluster running to load these into. For example, use the make commands + docker-compose file in https://github.com/tulibraries/ansible-playbook-solrcloud to start a cluster. That repository's makefile includes this set of configurations and collection (funcake) in its make create-release-collections and make create-aliases commands.

If you want to go through those steps yourself, once you have a working SolrCloud cluster:

  1. clone this repository locally & change into the top level directory of the repository
$ git clone https://github.com/tulibraries/funcake-solr.git
$ cd funcake-solr
  1. zip the contents of this repository without the top-level directory
$ zip -r - * > funcake.zip
  1. load the configs zip file into a new SolrCloud ConfigSet (change the solr url to whichever solr you're developing against)
$ curl -X POST --header "Content-Type:application/octet-stream" --data-binary @funcake.zip "http://localhost:8081/solr/admin/configs?action=UPLOAD&name=funcake"
  1. create a new SolrCloud Collection using that ConfigSet (change the solr url to whichever solr you're developing against)
$ curl "http://localhost:8090/solr/admin/collections?action=CREATE&name=funcake-1&numShards=1&replicationFactor=2&maxShardsPerNode=1&collection.configName=funcake"
  1. create a new SolrCloud Alias pointing to that Collection (if you want to use an Alias; and change the solr url to whatever solr you're developing against):
$ curl "http://localhost:8090/solr/admin/collections?action=CREATEALIAS&name=funcake-1-dev&collections=funcake-1"

SolrCloud Deployment

All PRs merged into the main branch are not deployed anywhere. Only releases are deployed.

Production

Once the main branch has been adequately tested and reviewed, a release is cut. Upon creating the release tag (generally just an integer), the following occurs:

  1. new ConfigSet of funcake-{release-tag} is created in Production SolrCloud;
  2. new Collection of funcake-{release-tag}-init is created in Production SolrCloud w/the requisite ConfigSet (this Collection is largely ignored);
  3. a new Dev alias of funcake-{release-tag}-dev is created in Production SolrCloud, pointing to the init Collection;
  4. a new Prod alias of funcake-{release-tag}-prod is created in Production SolrCloud, pointing to the init Collection;
  5. and, manually, a full reindex DAG is kicked off from Airflow Production to this new funcake alias. Upon completion of the reindex, relevant clients are redeployed pointing at their new alias, and then QA & UAT review occur.

See the process outlined here: https://github.com/tulibraries/docs/blob/main/services/solrcloud.md

After some time (1-4 days, as needed), the older funcake collections are manually removed from Prod SolrCloud.