Snapshot best practices for staging/production scenario


I have a single-node ES instance which serves as the backend for a web app. Nginx is accessing this node via reverse proxy. Both ES and Nginx are running on the same server.

I am trying to set up a staging/production type environment with a snapshot of the database on the staging server. I am new to distributed server environments and would like guidance about best practices in this case. For example, I'm not sure if I should add the elasticsearch instance on the staging server as a node on one big cluster or if I ought to have two parallel single-node es servers.

The backup solution in place is to export the document json upon document creation. Frankly I find the backup and restore documentation confusing.

Anybody willing to advise?

(Magnus B├Ąck) #2

I think you should have different clusters for production and testing. However, they can share the same snapshot repository (e.g. via an NFS share) so that you can make snapshots of the production cluster and restore them to the other cluster.

If you can be more specific about why the snapshot/restore documentation is confusing it would be easier to help.


Starting with the basics: I created a local filesystem repository but the snapshot fails due to a permissions error.

I'm not sure how to securely set permissions since elasticsearch is not running as its own pid. Do I have to put java in a permissions group?


Ahh never mind I got it finally. There is an elasticsearch user. Fixed the permissions. Tried to snapshot prod. Had an issue because of es version mismatch. Staging cluster did not require repo.path in yml. Added the line to yml config in prod. Thing works. It's in the damn manual.

(system) #5