Elasticsearch参考[7.5] - 设置Elasticsearch(2)

总的来说,我们有很多用户遇到意外问题的经验,因为他们没有配置重要的设置。在以前版本的Elasticsearch中,对其中一些设置的错误配置被记录为警告。可以理解,用户有时会错过这些日志消息。为了确保这些设置得到应有的注意,Elasticsearch在启动时会进行引导检查。

这些引导检查将检查各种Elasticsearch和系统设置,并将它们与对Elasticsearch的操作安全的值进行比较。如果Elasticsearch处于开发模式,则任何失败的引导检查都会在Elasticsearch日志中显示为警告。如果Elasticsearch处于生产模式,则任何失败的引导检查都会导致Elasticsearch拒绝启动。

总会强制执行一些引导检查,以防止Elasticsearch以不兼容的设置运行。这些检查是单独记录的。

开发与生产模式

默认情况下,Elasticsearch绑定到用于HTTP 和传输(内部)通信的环回地址。对于下载和使用Elasticsearch以及日常开发来说,这是很好的选择,但对生产系统没有用。要加入集群,Elasticsearch节点必须可以通过传输通信到达。要通过非环回地址加入集群,节点必须将传输绑定到非环回地址,并且不能使用单节点发现。因此,如果Elasticsearch节点无法通过非环回地址与另一台机器形成集群,则认为该节点处于开发模式,如果它可以通过非环回地址加入集群,则该节点处于生产模式。

注意,可以通过http.hosttransport.host单独配置HTTP和transport 。这对于在不触发生产模式的情况下将单个节点配置为可通过HTTP访问以进行测试非常有用。

单节点发现

我们认识到,有些用户需要将传输绑定到外部接口,以测试他们对传输客户端的使用情况。对于这种情况,我们提供discovery type single node(通过将discovery.type设置为single-node进行配置);在这种情况下,节点将选择自己为主节点,而不会将集群与任何其他节点联接。

强制引导检查

如果在生产环境中运行单个节点,则可以逃避引导检查(不将传输绑定到外部接口,或将传输绑定到外部接口并将发现类型设置为single-node(单个节点))。在这种情况下,可以通过将系统属性es.enforce.bootstrap.checks设置为true (在Setting JVM options或将-Des.enforce.bootstrap.checks=true添加到环境变量ES_JAVA_OPTS中)强制执行引导检查。如果你处于这种特殊情况,我们强烈鼓励你这样做。此系统属性可用于强制执行与节点配置无关的引导检查。

堆大小检查

如果JVM以不相等的初始堆大小和最大堆大小启动,则在系统使用期间,由于JVM堆的大小调整,它可能容易暂停。为了避免这些调整大小的暂停,最好使用初始堆大小等于最大堆大小的JVM启动。此外,如果启用bootstrap.memory_lock,JVM将在启动时锁定堆的初始大小。如果初始堆大小不等于最大堆大小,则在调整大小之后,不会将所有JVM堆锁定在内存中。要通过堆大小检查,必须配置堆大小

文件描述符检查

文件描述符是用于跟踪打开的“文件”的Unix结构。不过,在Unix中,一切都是一个文件。例如,“文件”可以是物理文件、虚拟文件(例如/proc/loadavg)或网络套接字。Elasticsearch需要大量的文件描述符(例如,每个分片由多个片段和其他文件组成,加上与其他节点的连接等)。此引导检查在OS X和Linux上强制执行。要通过文件描述符检查,可能需要配置文件描述符

 

内存锁检查

当JVM进行主要的垃圾收集时,它会触及堆的每个页面。如果这些页面中的任何一个被交换到磁盘上,它们将不得不被交换回内存中。这会导致大量的磁盘抖动,Elasticsearch更愿意使用这些抖动来服务请求。有几种方法可以将系统配置为不允许交换。一种方法是通过mlockall(Unix)或virtual lock(Windows)请求JVM将堆锁定在内存中。这是通过Elasticsearch设置bootstrap.memory_lock完成的。但是,在某些情况下,此设置可以传递给Elasticsearch,但Elasticsearch无法锁定堆(例如,如果Elasticsearch用户没有memlock unlimited)。内存锁检查验证如果bootstrap.memory_lock设置已启用,则JVM是否能够成功锁定堆。要通过内存锁检查,可能需要配置bootstrap.memory_lock

最大线程检查次数

Elasticsearch通过将请求分解为阶段并将这些阶段传递给不同的线程池执行器来执行请求。Elasticsearch中有不同的线程池执行器,用于执行各种任务。因此,Elasticsearch需要创建大量线程的能力。检查线程的最大数量确保了Elasticsearch进程有权在正常使用下创建足够的线程。此检查仅在Linux上强制执行。如果你在Linux上,通过最大数量的线程检查,你必须配置你的系统以允许Elasticsearch进程创建至少4096个线程的能力。这可以通过/etc/security/limits.conf使用nproc设置来完成(注意,您可能还必须增加root用户的限制)。

最大文件大小检查

作为单个碎片组件的段文件和作为translog组件的translog代可能会变大(超过千兆字节)。在Elasticsearch进程可以创建的最大文件大小受到限制的系统上,这可能导致写入失败。因此,这里最安全的选项是最大文件大小是不受限制的,这就是最大文件大小引导检查所执行的操作。要通过最大文件检查,必须将系统配置为允许Elasticsearch进程能够写入大小不受限制的文件。这可以通过/etc/security/limits.conf完成,使用fsize设置为unlimited(注意,您可能还必须增加root用户的限制)。

最大尺寸虚拟内存

Elasticsearch和Lucene使用mmap非常有效地将索引的部分映射到Elasticsearch地址空间。这使得某些索引数据不在JVM堆中,而在内存中进行快速访问。为了有效,Elasticsearch应该有无限的地址空间。最大大小的虚拟内存检查强制了弹性搜索过程具有无限的地址空间,只在Linux上执行。要传递最大大小的虚拟内存检查,必须配置系统以允许弹性搜索过程具有无限的地址空间的能力。这可以通过向/etc/security/limits.conf添加<user> - as unlimited来完成。这可能需要您也增加root用户的限制。

最大的地图计数检查

上一点继续,为了有效地使用mmap,Elasticsearch还需要创建许多内存映射区域的能力。最大映射计数检查检查内核允许进程至少有262,144个内存映射区域,并且仅在Linux上强制执行。要通过最大的地图计数检查,您必须通过SysTTL配置vm.max_map_count计数至少为262144。

另外,如果使用MMAPFS或HybFiS作为索引的存储类型,则只需要最大的MAP计数检查。如果不允许使用mmap,则不会强制执行此引导检查。

客户端JVM检查

OpenJDK派生的JVM提供了两种不同的JVM:客户端JVM和服务器JVM。这些JVM使用不同的编译器从Java字节码生成可执行的机器代码。调整客户端JVM的启动时间和内存占用量,同时调整服务器JVM的性能以最大化性能。两个VM之间的性能差异可能很大。客户端JVM检查可确保Elasticsearch不在客户端JVM内运行。要通过客户端JVM检查,必须使用服务器VM启动Elasticsearch。在现代系统和操作系统上,服务器VM是默认设置。

使用串行收集器检查

针对不同的工作负载,OpenJDK派生的JVM有各种垃圾收集器。串行收集器尤其适合于单逻辑CPU机器或非常小的堆,这两种机器都不适合运行Elasticsearch。将串行收集器与Elasticsearch结合使用可能会对性能造成破坏。串行收集器检查确保Elasticsearch未配置为与串行收集器一起运行。要通过串行收集器检查,不能使用串行收集器启动Elasticsearch(无论是使用的JVM的默认值,还是使用--XX:+UseSerialGC显式指定的值)。注意,Elasticsearch附带的默认JVM配置将Elasticsearch配置为使用CMS收集器。

系统调用筛选器检查

Elasticsearch根据操作系统(例如,Linux上的seccomp)安装不同风格的系统调用过滤器。安装这些系统调用过滤器是为了防止执行与分叉相关的系统调用,以此作为对Elasticsearch上任意代码执行攻击的防御机制。系统调用筛选器检查确保如果启用了系统调用筛选器,则它们已成功安装。若要通过系统调用筛选器检查,必须修复系统上阻止安装系统调用筛选器的任何配置错误(检查日志),或者通过将bootstrap.system_call_filter设置为false禁用系统调用筛选器,风险自负。

OnError和OnOutOfMemoryError检查

如果JVM遇到OnError(致命错误)或OutOfMemoryError(内存不足错误),则JVM选项OnError和onootfmemoryerror可以执行任意命令。但是,默认情况下,Elasticsearch系统调用过滤器(seccomp)已启用,并且这些过滤器防止分叉。因此,使用OnError或OnOutOfMemoryError和系统调用过滤器是不兼容的。如果使用了这些JVM选项之一并且启用了系统调用筛选器,则OnError和OnOutOfMemoryError检查将阻止Elasticsearch启动。这个检查总是有效的。若要通过此检查,请不要启用OnError或OnOutOfMeMyCyror错误;相反,升级到Java8U92,并使用JVM标志ExExtOutOfMebug错误。虽然这不具备OnError或OnOutOfMemoryError的全部功能,但启用seccomp时将不支持任意分叉。

早期访问检查

OpenJDK项目提供了即将发布的版本的早期访问快照。这些版本不适合生产。早期访问检查检测这些早期访问快照。要通过此检查,必须在JVM的发布版本上启动Elasticsearch。

G1GC检查

众所周知,JDK 8附带的HotSpot JVM的早期版本在启用G1GC收集器时存在可能导致索引损坏的问题。受影响的版本是那些早于JDK 8u40附带的HotSpot版本的版本。G1GC检查检测这些早期版本的热点JVM。

所有权限检查

所有权限检查可确保引导期间使用的安全策略不会将java.security.AllPermission授予Elasticsearch。在授予所有权限的情况下运行等同于禁用安全管理器。

发现配置检查

默认情况下,当Elasticsearch首次启动时,它将尝试发现在同一主机上运行的其他节点。如果在几秒钟内找不到任何当选的主节点,则Elasticsearch将形成一个包含所有其他已发现节点的集群。无需在开发模式下进行任何额外配置就可以构成此群集很有用,但这不适用于生产,因为有可能形成多个群集并因此丢失数据。

此引导检查可确保发现未使用默认配置运行。可以通过设置以下至少一个属性来满足:

  • discovery.seed_hosts
  • discovery.seed_providers
  • cluster.initial_master_nodes

启动Elasticsearch

启动Elasticsearch的方法因您的安装方式而异。

存档包(.tar.gz

如果您使用.tar.gz软件包安装了Elasticsearch ,则可以从命令行启动Elasticsearch。

在命令行中运行Elasticsearch

可以从命令行启动Elasticsearch,如下所示:

./bin/elasticsearch

默认情况下,Elasticsearch在前台运行,将其日志打印到标准输出(stdout),可以通过按停止Ctrl-C

注意:所有与Elasticsearch打包的脚本都需要一个支持数组的Bash版本,并假设Bash在/bin/Bash中可用。因此,Bash应该可以在这个路径上直接使用,也可以通过符号链接使用。
 

作为守护程序运行

要将Elasticsearch作为守护进程运行,请在命令行中指定-d,并使用-p选项将进程ID记录在文件中:

./bin/elasticsearch -d -p pid

日志消息可以在$ES_HOME/logs/目录中找到。

要关闭Elasticsearch,请取消记录在pid文件中的进程ID:

pkill -F pid

RPM和Debian包中提供的启动脚本负责为您启动和停止Elasticsearch过程。

存档包(.zip

如果您在Windows上使用.zip软件包安装了Elasticsearch ,则可以从命令行启动Elasticsearch。如果您希望Elasticsearch在启动时自动启动而无需任何用户交互,则将Elasticsearch作为服务安装

在命令行中运行Elasticsearch

可以从命令行启动Elasticsearch,如下所示:

.\bin\elasticsearch.bat

默认情况下,Elasticsearch在前台运行,将其日志打印到STDOUT,可以通过按来停止Ctrl-C

Debian软件包

安装后,Elasticsearch不会自动启动。如何启动和停止Elasticsearch取决于您的系统是使用SysV init还是systemd(由较新的发行版使用)。通过运行此命令,您可以知道正在使用哪个:

ps -p 1

使用SysV initedit运行Elasticsearch

使用update-rc.d命令将Elasticsearch配置为在系统启动时自动启动:

sudo update-rc.d elasticsearch defaults 95 10

可以使用service命令启动和停止Elasticsearch:

sudo -i service elasticsearch start
sudo -i service elasticsearch stop

如果Elasticsearch由于任何原因无法启动,它将打印未能STDOUT的原因。日志文件可以在/var/Log/elasticsearch/中找到。


使用systemd运行Elasticsearch

要将Elasticsearch配置为在系统启动时自动启动,请运行以下命令:

sudo /bin/systemctl daemon-reload
sudo /bin/systemctl enable elasticsearch.service

Elasticsearch可以按如下方式启动和停止:

sudo systemctl start elasticsearch.service
sudo systemctl stop elasticsearch.service

这些命令没有提供有关Elasticsearch是否成功启动的反馈。而是将这些信息写入位于/var/log/elasticsearch/中的日志文件中。

默认情况下,Elasticsearch服务不会在systemd 日志中记录信息。要启用journalctl日志记录,必须从elasticsearch.service文件的ExecStart命令行中删除--quiet选项。

systemd启用了日志记录,可以使用journalctl命令获得日志记录信息:

日志信息使用可用journalctl的命令:

要跟踪日志:

sudo journalctl -f

要列出elasticsearch服务的日记条目,请执行以下操作:

sudo journalctl --unit elasticsearch

要列出elasticsearch服务从给定时间开始的日记条目,请执行以下操作:

sudo journalctl --unit elasticsearch --since  "2016-10-30 18:17:16"

有关更多命令行选项,请查看man journalctl或https://www.freedesktop.org/software/systemd/man/journalctl.html

Docker映像

如果安装了Docker映像,则可以从命令行启动Elasticsearch。根据使用的是开发模式还是生产模式,可以使用不同的方法。参见Docker Run

MSI套件

如果使用.msi软件包在Windows上安装了Elasticsearch ,则可以从命令行启动Elasticsearch。如果您希望它在启动时自动启动,而无需任何用户交互,则将 Elasticsearch安装为Windows服务

在命令行中运行Elasticsearch

一旦安装,Elasticsearch可以从命令行启动(如果未作为服务安装)并配置为在安装完成时启动,如下所示:

.\bin\elasticsearch.exe

命令行终端将显示类似于以下内容的输出:

 

默认情况下,Elasticsearch在前台运行,STDOUT除了将其<cluster name>.log内的文件打印到其日志外LOGSDIRECTORY,还可以按来停止Ctrl-C

RPM软件包

安装后,Elasticsearch不会自动启动。如何启动和停止Elasticsearch取决于您的系统使用的是SysV init还是 systemd(由较新的发行版使用)。您可以通过运行以下命令来确定正在使用哪个:

ps -p 1

使用SysV initedit运行Elasticsearch

使用chkconfig命令将Elasticsearch配置为在系统启动时自动启动:

sudo chkconfig --add elasticsearch

可以使用service命令启动和停止Elasticsearch:

sudo -i service elasticsearch start
sudo -i service elasticsearch stop

如果Elasticsearch由于任何原因无法启动,它将打印未能STDOUT的原因。日志文件可以在/var/Log/elasticsearch/中找到。

使用systemd运行Elasticsearch

要将Elasticsearch配置为在系统启动时自动启动,请运行以下命令:

sudo /bin/systemctl daemon-reload
sudo /bin/systemctl enable elasticsearch.service

Elasticsearch可以按如下方式启动和停止:

sudo systemctl start elasticsearch.service
sudo systemctl stop elasticsearch.service

这些命令不提供有关Elasticsearch是否已成功启动的反馈。相反,这些信息将写入/var/log/elasticsearch/中的日志文件中。

默认情况下,Elasticsearch服务不会在systemd日志中记录信息。要启用journalctl日志记录,必须从elasticsearch.service文件的ExecStart命令行中删除--quiet选项。

启用systemd日志记录时,可以使用journalctl命令获得日志记录信息:

要跟踪日志:

sudo journalctl -f

要列出elasticsearch服务的日记条目,请执行以下操作:

sudo journalctl --unit elasticsearch

要列出elasticsearch服务从给定时间开始的日记条目,请执行以下操作:

sudo journalctl --unit elasticsearch --since  "2016-10-30 18:17:16"

有关更多命令行选项,请查看man journalctl或https://www.freedesktop.org/software/systemd/man/journalctl.html

 

停止Elasticsearch

Elasticsearch的有序关闭可确保Elasticsearch有机会清理和关闭未使用的资源。例如,以有序方式关闭的节点将其自身从群集中删除,将跨日志同步到磁盘,并执行其他相关的清理活动。您可以通过适当地停止Elasticsearch来帮助确保有序关闭。

如果您将Elasticsearch作为服务运行,则可以通过安装提供的服务管理功能来停止Elasticsearch。

如果直接运行Elasticsearch,则可以通过发送control-C(如果在控制台中运行Elasticsearch)或将SIGTERM发送到POSIX系统上的Elasticsearch进程来停止Elasticsearch。您可以通过各种工具(如ps或jps)获取发送信号的PID:

 

$ jps | grep Elasticsearch
14542 Elasticsearch

从Elasticsearch启动日志中:

[2016-07-07 12:26:18,908][INFO ][node                     ] [I8hydUG] version[5.0.0-alpha4], pid[15399], build[3f5b994/2016-06-27T16:23:46.861Z], OS[Mac OS X/10.11.5/x86_64], JVM[Oracle Corporation/Java HotSpot(TM) 64-Bit Server VM/1.8.0_92/25.92-b14]

或者通过指定启动时将PID文件写入的位置(-p <path>):

$ ./bin/elasticsearch -p /tmp/elasticsearch-pid -d
$ cat /tmp/elasticsearch-pid && echo
15516
$ kill -SIGTERM 15516

发生致命错误时停止

在Elasticsearch虚拟机的生命周期中,可能会出现某些致命错误,使虚拟机处于可疑状态。这些致命错误包括内存不足错误、虚拟机内部错误和严重的I/O错误。

当Elasticsearch检测到虚拟机遇到此类致命错误时,Elasticsearch将尝试记录该错误,然后将停止虚拟机。当Elasticsearch启动此类关闭时,它不会按上述顺序进行关闭。Elasticsearch过程还将返回一个特殊的状态代码,指示错误的性质。

JVM internal error

128

Out of memory error

127

Stack overflow error

126

Unknown virtual machine error

125

Serious I/O error

124

Unknown fatal error

1

 

将节点添加到集群

当启动Elasticsearch实例时,即在启动node。Elasticsearch 集群 是一组具有相同cluster.name属性的节点。当节点加入或离开群集时,群集会自动重新组织以在可用节点之间平均分配数据。

如果您运行的是Elasticsearch的单个实例,那么您将拥有一个节点的集群。所有主分片都驻留在单个节点上。无法分配副本分片,因此群集状态保持黄色。该群集可以完全正常运行,但是如果发生故障,则存在数据丢失的风险。

 

您将节点添加到群集以增加其容量和可靠性。默认情况下,节点既是数据节点,又有资格被选为控制群集的主节点。您还可以为特定目的配置新节点,例如处理摄取请求。有关更多信息,请参见 Nodes

当您将更多节点添加到群集时,它将自动分配副本分片。当所有主分片和副本分片均处于活动状态时,群集状态将变为绿色。

 

要将节点添加到集群:

  1. 设置一个新的Elasticsearch实例。
  2. cluster.name属性中指定群集的名称。例如,要将节点添加到logging-prod集群,请在elasticsearch.yml中设置cluster.name: "logging-prod" 。
  3. 启动Elasticsearch。节点自动发现并加入指定的集群。

有关发现和分片分配的更多信息,请参阅 发现和集群形成以及分片分配和集群级路由

全集群重新启动和滚动重启

在某些情况下,您需要执行全集群重启或滚动重启。在完全集群重新启动的情况下 ,您将关闭并重新启动集群中的所有节点,而在滚动重新启动的情况下, 一次将仅关闭一个节点,因此服务不会中断。

全集群重启

1. 禁用分片分配。

     关闭节点时,分配进程等待index.unassigned.node_left.delayed_timeout(默认为一分钟),然后开始将该节点上的碎片复制到群集中的其他节点,这可能会涉及大量I/O。由于该节点即将重新启动,因此不必执行此I/O。通过在关闭节点之前禁用副本的分配,可以避免使时钟加速:

PUT _cluster/settings
{
  "persistent": {
    "cluster.routing.allocation.enable": "primaries"
  }
}

2. 停止索引编制并执行同步刷新。

执行synced-flush加快分片恢复。

POST _flush/synced

执行同步刷新时,请检查响应以确保没有失败。尽管请求本身仍返回200 OK状态,但响应主体中列出了由于挂起索引操作而失败的同步刷新操作。如果失败,请重新发出请求。

3. 暂时停止与活动的机器学习作业和数据馈送相关的任务。(可选的)

机器学习功能需要白金级许可或更高级别。有关弹性许可证级别的更多信息,请参阅预订页面

关闭集群时,有两个选项可以处理机器学习作业和数据馈送:

  • 暂时停止与机器学习作业和数据源关联的任务,并使用设置升级模式API阻止打开新作业:

 

POST _ml/set_upgrade_mode?enabled=true

 

禁用升级模式时,作业将使用自动保存的最后一个模型状态继续。此选项避免了关闭期间管理活动作业的开销,并且比显式停止数据馈送和关闭作业更快。

  • 停止所有数据源并关闭所有作业。此选项保存关闭时的模型状态。在集群重新启动后重新打开作业时,它们使用完全相同的模型。但是,保存最新的模型状态比使用升级模式需要更长的时间,特别是当您有很多作业或具有较大模型状态的作业时。

4. 关闭所有节点。

  • 如果使用systemd运行Elasticsearch:
sudo systemctl stop elasticsearch.service
  • 如果使用SysV init运行Elasticsearch:
sudo -i service elasticsearch stop
  • 如果您以daemon运行Elasticsearch:
kill $(cat pid)

5. 执行任何需要的更改。

6. 重新启动节点。

如果您有专用的主节点,请先启动它们,然后等待它们形成集群并选举一个主节点,然后再继续处理数据节点。您可以通过查看日志来检查进度。

只要有足够的符合主机资格的节点相互发现,它们就会形成一个集群并选举一个主机。届时,您可以使用cat healthcat node API监视加入集群的节点:

GET _cat/health

GET _cat/nodes

_cat/health返回的status列显示集群中每个节点的运行状况:redyellow, 或green

7. 等待所有节点加入群集并报告黄色状态。

当一个节点加入集群时,它开始恢复本地存储的所有主碎片。_cat/health API最初报告的状态为红色,表示尚未分配所有主碎片。
一旦节点恢复其本地碎片,群集状态将切换为黄色,表示所有主碎片都已恢复,但并非所有副本碎片都已分配。这是意料之中的,因为您尚未重新启用分配。将副本的分配延迟到所有节点都为黄色时,允许主节点将副本分配给已经具有本地碎片副本的节点。

8. 重新启用分配。

当所有节点都已加入群集并恢复其主碎片时,通过将cluster.routing.allocation.enable恢复为默认值来重新启用分配:

PUT _cluster/settings
{
  "persistent": {
    "cluster.routing.allocation.enable": null
  }
}

重新启用分配后,群集将开始将副本分片分配给数据节点。此时,恢复索引和搜索是安全的,但是如果您可以等待直到成功分配了所有主分片和副本分片并且所有节点的状态为,集群就会恢复得更快green

您可以使用_cat/health和 _cat/recoveryAPI 监视进度:

GET _cat/health

GET _cat/recovery

9. 重新启动机器学习作业。(可选)

如果您暂时中止了与机器学习作业相关的任务,请使用 设置升级模式API将它们恢复为活动状态:

POST _ml/set_upgrade_mode?enabled=false

如果在停止节点之前关闭了所有机器学习作业,请打开作业并从Kibana或使用 open jobsstart datafeed API。

设置X-Pack 

X-Pack是Elastic Stack扩展,提供安全性,警报,监视,报告,机器学习和许多其他功能。默认情况下,当您安装Elasticsearch时,会安装X-Pack。

如果您想尝试所有X-Pack功能,可以开始30天的试用期。在试用期结束时,您可以购买订阅以继续使用X-Pack组件的全部功能。有关更多信息,请参见 https://www.elastic.co/subscriptions

配置X-Pack Java客户端

在7.0.0中弃用。
不推荐使用TransportClient,而推荐使用Java High Level REST Client,并将在Elasticsearch 8.0中删除。该迁移指南描述了所有需要迁移的步骤。
 

如果要将Java 传输客户端与安装了X-Pack的群集一起使用,则必须下载并配置X-Pack传输客户端。

  1. 将X-Pack传输JAR文件添加到CLASSPATH中。您可以下载X-Pack发行版并手动提取JAR文件,也可以从Elasticsearch Maven存储库中获取它 。与任何依赖项一样,您还将需要其传递性依赖项。下载以供离线使用时,请参考您的版本的 X-Pack POM文件
  2. 如果使用Maven,则需要将X-Pack JAR文件作为依赖项添加到项目的pom.xml文件中:

<project ...>
     <repositories>
     <!-- add the elasticsearch repo -->
      <repository>
         <id>elasticsearch-releases</id>
         <url>https://artifacts.elastic.co/maven</url>
         <releases>
          <enabled>true</enabled>
         </releases>
         <snapshots>
            <enabled>false</enabled>
         </snapshots>
      </repository>
      ...
   </repositories>
   ...

   <dependencies>
      <!-- add the x-pack jar as a dependency -->
      <dependency>
         <groupId>org.elasticsearch.client</groupId>
         <artifactId>x-pack-transport</artifactId>
              <version>{version}</version>
      </dependency>
      ...
   </dependencies>
   ...

</project>

3. 如果使用Gradle,则需要将X-Pack JAR文件作为依赖项添加到build.Gradle文件中:

repositories {
  /* ... Any other repositories ... */

  // Add the Elasticsearch Maven Repository
  maven {
    name "elastic"
    url "https://artifacts.elastic.co/maven"
  }
}

dependencies {
  compile "org.elasticsearch.client:x-pack-transport:{version}"

  /* ... */
}

4. 如果您在公司内使用Nexus OSS等存储库管理器,则需要按照以下屏幕截图添加存储库:

 

然后,如果使用maven,请在项目的pom.xml中添加以下存储库和依赖项定义:

<dependencies>
    <dependency>
        <groupId>org.elasticsearch.client</groupId>
        <artifactId>x-pack-transport</artifactId>
        <version>{version}</version>
    </dependency>
</dependencies>

<repositories>
    <repository>
        <id>local-nexus</id>
        <name>Elastic Local Nexus</name>
        <url>http://0.0.0.0:8081/repository/elasticsearch/</url>
        <releases>
            <enabled>true</enabled>
        </releases>
        <snapshots>
            <enabled>false</enabled>
        </snapshots>
    </repository>
  </repositories>

5. 如果您使用的是Elastic Stack安全功能,则有更多的配置步骤。请参阅Java Client and security.。


Bootstrap检查X-Pack 

除了Elasticsearch引导检查之外,还有一些特定于X-Pack功能的检查。

加密敏感数据检查

如果您使用Watcher并选择了加密敏感数据(通过设置 xpack.watcher.encrypt_sensitive_datatrue),则还必须在安全设置存储区中放置一个密钥。

要通过此引导检查,必须在群集中的每个节点上设置xpack.watcher.encryption_key 为on。有关更多信息,请参阅在Watcher中加密敏感数据

PKI领域检查

如果使用Elasticsearch安全功能和公钥基础结构(PKI)域,则必须在群集上配置传输层安全性(TLS),并在网络层(传输层或http)上启用客户端身份验证。有关更多信息,请参阅PKI用户身份验证在群集上设置TLS

要通过此引导检查,如果启用了PKI域,则必须配置TLS并在至少一个网络通信层上启用客户端身份验证。

角色映射检查

如果您使用native或以外的file域对用户进行身份验证,则必须创建角色映射。这些角色映射定义将哪些角色分配给每个用户。

如果使用文件来管理角色映射,则必须配置YAML文件并将其复制到集群中的每个节点。默认情况下,角色映射存储在 ES_PATH_CONF/role_mapping.yml中。或者,您可以为每种域指定一个不同的角色映射文件,并在elasticsearch.yml文件中指定其位置。有关更多信息,请参见 使用角色映射文件

要通过此引导检查,角色映射文件必须存在并且必须有效。角色映射文件中列出的专有名称(DN)也必须有效。

SSL / TLS检查

如果启用Elasticsearch安全功能,除非您具有试用许可证,否则必须配置SSL / TLS进行节点间通信。

使用回送接口的单节点群集没有此要求。有关更多信息,请参见 加密通信
 

要通过此引导检查,必须 在群集中设置SSL / TLS

令牌SSL检查

如果您使用Elasticsearch安全功能并且启用了内置令牌服务,则必须将集群配置为对HTTP接口使用SSL / TLS。为了使用令牌服务,需要HTTPS。

特别是如果在文件中xpack.security.authc.token.enabled设置为true,则elasticsearch.yml还必须设置 xpack.security.http.ssl.enabledtrue。有关这些设置的更多信息,请参阅“ 安全性设置”和“ HTTP”

要通过此引导检查,必须启用HTTPS或禁用内置令牌服务。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值