andre
andre

Reputation: 1738

SOLR on Elastic Beanstalk

I would like to run a SOLR Server on an Elastic Beanstalk. But I cannot find that much about that in the web.

It must be possible somehow, 'cause some are using it already. (https://forums.aws.amazon.com/thread.jspa?threadID=91276 i.e.)

Any Ideas how I could do that?

Well, somehow I can upload the solr warfile into the environment, but then it gets complicated. Where do I put the config files and the index directory, so that each instance can reach it?

Upvotes: 3

Views: 2062

Answers (1)

Gardner Bickford
Gardner Bickford

Reputation: 1963

EDIT: Please keep in mind that this answer is from 2013. The products mentioned here have likely evolved. I have updated the documentation link to reflect changes in the solr clustering wiki. I encourage you to continue your research after reading this information.

ORIGINAL: It only really makes sense to run solr on beanstalk instances if you are planning to only ever use the single server deploy. The minute that you want to scale your app you will need to configure your beanstalk environment to either create a solr cluster or move to something like CloudSearch. If you are unfamiliar with ec2 lifecycles and solr deployments then CloudSearch will almost certainly save you time (read money).

If you do want to run solr on a single instance then you can use rake to launch it by adding a file to your local repo named .ebextensions/solr.config with the following contents:

container_commands:
  01create_post_dir:
    command: "mkdir -p /opt/elasticbeanstalk/hooks/appdeploy/post"
    ignoreErrors: true
  02killjava:
    command: "killall java"
    test: "ps uax | grep java | grep root"
    ignoreErrors: true

files:
  "/opt/elasticbeanstalk/hooks/appdeploy/post/99_start_solr.sh":
    mode: "755"
    owner: "root"
    group: "root"
    content: |
        #!/usr/bin/env bash
        . /opt/elasticbeanstalk/support/envvars
        cd $EB_CONFIG_APP_CURRENT
        su -c "RAILS_ENV=production bundle exec rake sunspot:solr:start" $EB_CONFIG_APP_USER
        su -c "RAILS_ENV=production bundle exec rake db:seed" $EB_CONFIG_APP_USER
        su -c "RAILS_ENV=production bundle exec rake sunspot:reindex" $EB_CONFIG_APP_USER

Please keep in mind that this will cause chaos if you are using autoscaling.

Upvotes: 2

Related Questions