原英文版地址: https://www.elastic.co/guide/en/elasticsearch/reference/7.7/deb.html, 原文档版权归 www.elastic.co 所有
本地英文版地址: ../en/deb.html

使用Debian安装包安装 Elasticsearch

Elasticsearch 的 Debian 安装包可以 从我们的站点下载APT 存储库。 它可以在任何基于Debian的系统上安装 Elasticsearch,比如 Debian 和 Ubuntu。

此软件包可在 Elastic 许可下免费使用。 它包含开放源码和免费的商业特性,并能访问付费商业特性。 开始为期30天的试用 尝试使用付费的商业特性。 有关 Elastic 许可等级的更多信息,请参考 订阅(Subscriptions) 页面。

Elasticsearch 最新的稳定版本可以在 下载 Elasticsearch 页面找到。 其他版本可以在 过去发布的版本(Past Releases) 页面上找到。

Elasticsearch 包含了一个绑定版本的 OpenJDK,它来自 JDK 维护者(GPLv2+CE)。 要使用你自己的Java版本,参考 JVM 版本要求

导入 Elasticsearch 的 PGP 秘钥

我们使用Elasticsearch 签名秘钥(PGP 秘钥 D88E42B4, 可以从 https://pgp.mit.edu 获得) 对所有的安装包都进行了签名,指纹是:

4609 5ACC 8548 582C 1A26 99A9 D27D 666C D88E 42B4

下载并安装签名用的公钥:

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -

从APT存储库安装

在继续之前,你可能需要在Debian上安装 apt-transport-https 包:

sudo apt-get install apt-transport-https

把存储库的定义保存到/etc/apt/sources.list.d/elastic-7.x.list

echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list

这些使用教程没有使用 add-apt-repository,有以下几个原因:

  1. add-apt-repository向系统文件 /etc/apt/sources.list 中添加记录,而不是向 /etc/apt/sources.list.d 中为每个存储库添加一个干净的文件
  2. add-apt-repository 不是许多发行版上默认安装的一部分,并且需要许多非默认的依赖项。
  3. 老版本的 add-apt-repository 总是会添加一个 deb-src 记录,而这个文件会因为缺少源安装包而引起错误。 如果你已经添加了 deb-src 记录,你会看到类似如下的错误直到你删除了 deb-src 行:

    Unable to find expected entry 'main/source/Sources' in Release file
    (Wrong sources.list entry or malformed file)

你可以这样安装Elasticsearch的Debian包:

sudo apt-get update && sudo apt-get install elasticsearch

如果同一个Elasticsearch存储库有两笔记录,你会在 apt-get update 升级期间看到一个类似这样的错误:

Duplicate sources.list entry https://artifacts.elastic.co/packages/7.x/apt/ ...`

检查 /etc/apt/sources.list.d/elasticsearch-7.x.list 中的重复记录,或者在 /etc/apt/sources.list.d//etc/apt/sources.list 文件中找到重复记录。

在基于 systemd 的发行版上,安装脚本将尝试设置内核参数(例如,vm.max_map_count);你可以通过屏蔽 systemd-sysctl.service 单元来跳过这一步。

还提供了一个替代包,其中仅包含在 Apache 2.0许可证下可用的功能。要安装它,请使用以下源列表:

echo "deb https://artifacts.elastic.co/packages/oss-7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list

手动下载并安装 Debian 安装包

Elasticsearch v7.7.1 的 Debian 安装包可以从这个网站下载并安装如下:

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.7.1-amd64.deb
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.7.1-amd64.deb.sha512
shasum -a 512 -c elasticsearch-7.7.1-amd64.deb.sha512 
sudo dpkg -i elasticsearch-7.7.1-amd64.deb

比较已经下载的 Debian 安装包和发布的 校验和(checksum)的 SHA,应该输出 elasticsearch-{version}-amd64.deb: OK 这样的内容。

或者,你也可以下载这个安装包,其中只包含Apache2.0许可代码:https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-oss-7.7.1-amd64.deb

开启自动创建系统索引

一些商业特性会自动在 Elasticearch 中创建索引。 默认情况下,Elasticsearch 被配置为允许自动创建索引,并且不需要其他步骤。 但是,如果在 Elasticsearch 中禁用了自动索引创建,则必须在 elasticsearch.yml 文件中配置 action.auto_create_index,以允许商业特性创建以下索引:

action.auto_create_index: .monitoring*,.watches,.triggered_watches,.watcher-history*,.ml*

如果你正在使用 LogstashBeats,那么你很可能在 action.auto_create_index 设置中需要额外的索引名,并且这个确切的值将取决于你的本地配置。 如果不确定环境的正确值,可以考虑将值设置为*,这将允许自动创建所有索引。

SysV initsystemd

Elasticsearch安装后并不会自动启动。 如何启动和停止 Elasticsearch 依赖于 你的系统使用的 SysV 是 init 还是 systemd (较新发布的系统中使用) 通过运行以下命令,就能知道你的系统使用的是哪个:

ps -p 1

在 SysV init 环境下运行 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 提供存储库密码。 如果该本地文件存在则应该受到保护,一旦 Elasticsearch 启动并运行,就可以安全删除。

echo "keystore_password" > /path/to/my_pwd_file.tmp
chmod 600 /path/to/my_pwd_file.tmp
sudo systemctl set-environment ES_KEYSTORE_PASSPHRASE_FILE=/path/to/my_pwd_file.tmp
sudo systemctl start elasticsearch.service

默认情况下,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 来获取更多的命令行选项。

检查 Elasticearch 是否正在运行

你可以通过向 localhost 上的端口 9200 发送一个 HTTP 请求来测试 Elasticsearch 节点是否正在运行:

GET /

应该会给你一个类似下面这样的响应:

{
  "name" : "Cp8oag6",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "AT69_T_DTp-1qgIJlatQqA",
  "version" : {
    "number" : "7.7.1",
    "build_flavor" : "default",
    "build_type" : "tar",
    "build_hash" : "f27399d",
    "build_date" : "2016-03-30T09:51:41.449Z",
    "build_snapshot" : false,
    "lucene_version" : "8.5.1",
    "minimum_wire_compatibility_version" : "1.2.3",
    "minimum_index_compatibility_version" : "1.2.3"
  },
  "tagline" : "You Know, for Search"
}

配置 Elasticsearch

Elasticsearch 默认使用 /etc/elasticsearch 作为在运行时配置的工具。 该文件夹及其下所有文件的拥有者(owner)都在包安装时被设置为 root:elasticsearch,该文件夹还有一个 setgid 标识以保证在 /etc/elasticsearch 下创建的文件及子目录都有相同的拥有者(比如,使用 秘钥库工具创建秘钥库)。 我们希望保持这个权限设置,以便 Elasticsearch 进程可以通过组权限读取这个目录下的文件。

Elasticsearch 默认从 /etc/elasticsearch/elasticsearch.yml 文件加载配置。 配置 Elasticsearch 中解释了此配置文件的格式。

Debian 的安装包还有一个系统配置文件(/etc/default/elasticsearch),这使得你可以设置以下参数:

JAVA_HOME

设置一个自定义的 Java 路径。

MAX_OPEN_FILES

最大的可开启文件数,默认为 65535

MAX_LOCKED_MEMORY

最大的可锁定内存大小。 如果在配置文件 elasticsearch.yml 中使用 bootstrap.memory_lock 选项,请设置为 unlimited

MAX_MAP_COUNT

一个进程可以拥有的最大内存映射区域数。 如果你使用 mmapfs 作为索引存储类型,请确保这个值设置得很大。 更多关于 max_map_count 的信息,请参看 linux 内核文档。 这个参数是在启动 Elasticsearch 前通过 sysctl 来设置的。 默认值为 262144

ES_PATH_CONF

配置文件的目录(必须包含elasticsearch.yml, jvm.options 以及 log4j2.properties 文件);默认为 /etc/elasticsearch

ES_JAVA_OPTS

你可能希望应用的任何其他 JVM 系统属性。

RESTART_ON_UPGRADE

配置包升级时是否重启,默认为 false。 这意味着你需要在安装包后手动重启 Elasticsearch 实例。 这样做的原因是,确保集群中的升级不会导致持续的分片重新分配,从而导致高网络流量和减少集群的响应时间。 (原文“ The reason for this is to ensure, that upgrades in a cluster do not result in a continuous shard reallocation resulting in high network traffic and reducing the response times of your cluster.”有点歧义)

使用 systemd 的发行版要求通过 systemd 配置系统资源限制,而不是通过 /etc/sysconfig/elasticsearch 文件。 更多信息参考 Systemd 配置

Debian 安装包的目录结构

对于基于 Debian 的系统,Debian 安装包将配置文件、日志和数据目录放在适当的位置:

类型 描述 默认位置 设置

home

Elasticsearch 主目录 或 $ES_HOME

/usr/share/elasticsearch

bin

二进制脚本,包含启动一个节点的elasticsearch,以及安装插件的elasticsearch-plugin

/usr/share/elasticsearch/bin

conf

包含elasticsearch.yml的配置文件

/etc/elasticsearch

ES_PATH_CONF

conf

环境变量,包括堆内存大小、文件描述符

/etc/default/elasticsearch

data

节点上的每个索引/分片的数据文件的位置。 可以设置多个位置。

/var/lib/elasticsearch

path.data

jdk

捆绑的Java开发套件,用于运行Elasticsearch。 可以通过在 /etc/default/elasticsearch 中设置环境变量 JAVA_HOME 来覆盖这个设置。

/usr/share/elasticsearch/jdk

logs

日志文件的存放位置

/var/log/elasticsearch

path.logs

plugins

插件文件的存放位置。每个插件都放在一个子文件夹中。

/usr/share/elasticsearch/plugins

repo

共享的文件系统存储库的位置。 可以设置多个位置。 可以将文件系统存储库放置到此处指定的任何目录的任何子目录中。

未配置

path.repo

下一步

你现在已经设置了一个 Elasticsearch 测试环境。 在开始正式开发或开始使用 Elasticsearch 进行生产之前,你还必须做一些额外的设置: