Steps to switch the production elasticsearch server.
-
Preparations
- write down current
ELASTIC_URL
of republik-api - test on staging first
- export / import kibana (management -> saved objects -> export everything)
- write down current
-
Stop writing to elasticsearch;
- publikator-api:
DISABLE_PUBLISH=true
- republik-api:
SEARCH_PG_LISTENER=false
(postgresql <-> elasticsearch sync)
- publikator-api:
-
pull data into new elastic
- dpcuments, comments, users, ...
heroku run "DEBUG=search:* ELASTIC_URL=https://elastic:PASSWORD@NEW_URL yarn run pull:elasticsearch --flush" -a republik-publikator-api --size=performance-l
- searches
elasticdump \ --input=OLD_ELASTIC_URL/republik-searches \ --output=NEW_ELASTIC_URL/republik-searches
-
switch address
- publikator-api and republik-api:
ELASTIC_URL=new
- publikator-api and republik-api:
-
Checks
- articles on https://www.republik.ch
- articles on autopage (https://www.republik.ch/~mruegg)
- list view in publikator (links to frontend) https://publikator.republik.ch
- elasticsearch metrics https://elastic.co
- metrics https://dashboard.heroku.com/apps/republik-api/metrics/web?starting=2-hours-ago
- apollo engine https://engine.apollographql.com
- for rollback: reverse step 3, then continue.
-
reenable writing to elasticsearch
- publikator-api:
DISABLE_PUBLISH=false
- republik-api:
SEARCH_PG_LISTENER=true
- publikator-api:
-
check again
- for rollback: begin anew and reverse step 3
-
profit