首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Elasticsearch上安装存储库-se插件

在Elasticsearch上安装存储库-se插件
EN

Stack Overflow用户
提问于 2018-09-17 21:31:58
回答 2查看 1K关注 0票数 2

当然,我们让EKS和工作节点在AWS上运行。我们使用的是gcr.io/google_containers/elasticsearch:v6.3.0.然而,现在我们想要添加策展人来获取ES索引的快照,并将它们存储在S3桶中。为此,ES需要一个存储库-S3插件。

因此,我们决定扩展这个映像,并通过安装插件来创建自己的插件。Dockerfile是:

代码语言:javascript
复制
FROM gcr.io/google_containers/elasticsearch:v6.3.0
RUN /usr/share/elasticsearch/bin/elasticsearch-plugin install --batch repository-s3

这将返回:

代码语言:javascript
复制
Step 2/2 : RUN /usr/share/elasticsearch/bin/elasticsearch-plugin install --batch repository-s3
 ---> Running in 8d96a792a7e3
Exception in thread "main" java.lang.IllegalArgumentException: Could not resolve placeholder 'MINIMUM_MASTER_NODES'
    at org.elasticsearch.common.settings.PropertyPlaceholder.parseStringValue(PropertyPlaceholder.java:116)
    at org.elasticsearch.common.settings.PropertyPlaceholder.replacePlaceholders(PropertyPlaceholder.java:69)
    at org.elasticsearch.common.settings.Settings$Builder.replacePropertyPlaceholders(Settings.java:1263)
    at org.elasticsearch.common.settings.Settings$Builder.replacePropertyPlaceholders(Settings.java:1213)
    at org.elasticsearch.node.InternalSettingsPreparer.initializeSettings(InternalSettingsPreparer.java:128)
    at org.elasticsearch.node.InternalSettingsPreparer.prepareEnvironment(InternalSettingsPreparer.java:107)
    at org.elasticsearch.cli.EnvironmentAwareCommand.createEnv(EnvironmentAwareCommand.java:95)
    at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:86)
    at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:124)
    at org.elasticsearch.cli.MultiCommand.execute(MultiCommand.java:79)
    at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:124)
    at org.elasticsearch.cli.Command.main(Command.java:90)
    at org.elasticsearch.plugins.PluginCli.main(PluginCli.java:48)
The command '/bin/sh -c /usr/share/elasticsearch/bin/elasticsearch-plugin install --batch repository-s3' returned a non-zero code: 1

当我试图在运行的es实例上安装插件时,也会发生同样的情况。

我可以向elasticsearch用户做一些操作,并再次运行该命令,结果仍然是相同的问题:

环境似乎缺少以下变量,因为当我用ARG在Dockerfile中添加它们时,它似乎完成了图像(当然,这些值是硬编码的,但只是为了证明这一点):

代码语言:javascript
复制
MINIMUM_MASTER_NODES
HTTP_PORT
NODE_DATA
NODE_MASTER
NODE_NAME
TRANSPORT_PORT

我不知道我在这整个故事里遗漏了什么。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-09-17 23:10:56

插件安装程序期望这些变量被设置或从配置中读取。这些都是你的Elasticsearch吐露的参数。哪个是您的elasticsearch.ymljvm.optionslog4j2.properties文件所在的目录?你可以试试:

  1. ES_PATH_CONF=/path/to/my/config /usr/share/elasticsearch/bin/elasticsearch-plugin install --batch repository-s3
  2. 在运行脚本之前设置环境vars: 出口/usr/share/elasticsearch/bin/elasticsearch-plugin MINIMUM_MASTER_NODES=出口HTTP_PORT=出口NODE_DATA=出口NODE_MASTER=出口NODE_NAME= NODE_NAME= TRANSPORT_PORT=安装-批存储库-s3
  3. 在构建映像时,使用Dockerfile中的ENV关键字添加这些参数。Dockerfile: 从gcr.io/google_containers/elasticsearch:v6.3.0 ENV MINIMUM_MASTER_NODES= ENV HTTP_PORT= ENV NODE_DATA= ENV NODE_MASTER= NODE_NAME= ENV TRANSPORT_PORT=运行MINIMUM_MASTER_NODES=安装-批存储库-S3
票数 0
EN

Stack Overflow用户

发布于 2018-09-18 20:10:09

按照下面的方式配置Dockerfile就可以了。拥有ARG而不是ENV是很重要的,因为ARG只在构建时使用。在运行时,是elasticsearch提供了环境变量,因此我们不必担心这个问题。

代码语言:javascript
复制
FROM gcr.io/google_containers/elasticsearch:v6.3.0
ARG MINIMUM_MASTER_NODES=${MINIMUM_MASTER_NODES}
ARG HTTP_PORT=${HTTP_PORT}
ARG NODE_DATA=${NODE_DATA}
ARG NODE_MASTER=${NODE_MASTER}
ARG NODE_NAME=${NODE_NAME}
ARG TRANSPORT_PORT=${TRANSPORT_PORT}
RUN su elasticsearch -c "/usr/share/elasticsearch/bin/elasticsearch-plugin install --batch repository-s3"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52375960

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档