3

我想在 Elastic Beanstalk 上运行 SOLR 服务器。但我在网上找不到那么多。

这一定是有可能的,因为有些人已经在使用它了。(https://forums.aws.amazon.com/thread.jspa?threadID=91276即)

任何想法我怎么能做到这一点?

好吧,我可以以某种方式将 solr warfile 上传到环境中,但是它变得复杂了。我将配置文件和索引目录放在哪里,以便每个实例都可以访问它?

4

1 回答 1

2

编辑:请记住,这个答案来自 2013 年。这里提到的产品可能已经进化了。我更新了文档链接以反映 solr clustering wiki 中的更改。我鼓励您在阅读此信息后继续您的研究。

原文:如果您打算只使用单服务器部署,那么在 beanstalk 实例上运行 solr 才真正有意义。在您想要扩展应用程序的那一刻,您需要配置 beanstalk 环境以创建solr 集群或迁移到 CloudSearch 之类的东西。如果您不熟悉 ec2 生命周期和 solr 部署,那么 CloudSearch 几乎肯定会为您节省时间(阅读成本)。

如果您确实想在单个实例上运行 solr,那么您可以使用 rake 通过将文件添加到本地 repo 来启动它,该文件名为.ebextensions/solr.config以下内​​容:

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

请记住,如果您使用自动缩放,这将导致混乱。

于 2013-11-19T06:42:40.493 回答