ElasticSearch

04. 在Debian系统上安装Elasticsearch

2023-11-28  本文已影响0人  ElasticSearch文档

Elasticsearch的Debian软件包可以从我们的网站仓库下载。它可用于在任何基于Debian的系统上安装Elasticsearch,例如Debian和Ubuntu。
此软件包包含免费和订阅功能。启动一个30天的试用期,以尝试所有功能。
Elasticsearch的最新稳定版本可以在“下载Elasticsearch”页面找到。其他版本可以在“过往版本发布”页面找到。
:::tips
Elasticsearch包含了来自JDK维护者的OpenJDK捆绑版本(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 gpg --dearmor -o /usr/share/keyrings/elasticsearch-keyring.gpg
从APT仓库安装:

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

sudo apt-get install apt-transport-https

将仓库定义保存到/etc/apt/sources.list.d/elastic-8.x.list

echo "deb [signed-by=/usr/share/keyrings/elasticsearch-keyring.gpg] https://artifacts.elastic.co/packages/8.x/apt stable main" | sudo tee /etc/apt/sources.list.d/elastic-8.x.list

这样就完成了APT仓库的设置,您现在可以使用这个仓库安装Elasticsearch。
:::tips
这些说明之所以不使用add-apt-repository有以下几个原因:

  1. 个别仓库文件:
    这些说明选择在/etc/apt/sources.list.d而不是系统范围的/etc/apt/sources.list文件中添加条目,以确保每个仓库都有一个清晰的仓库文件。这种方法更为清晰,特别是在处理多个仓库时更为有用。
  2. 依赖性问题:
    add-apt-repository并不是许多发行版默认安装的一部分,而且它需要一些非默认的依赖项。通过手动添加仓库定义,这些说明提供了一种更为直接和广泛适用的方法。
  3. Deb-src 条目问题:
    旧版本的add-apt-repository总是添加deb-src条目,如果没有提供源包,这可能导致问题。通过手动以特定格式添加仓库,这些说明避免了与不需要的deb-src条目相关的潜在错误。

这种方法确保以更为清晰和可控的方式将Elasticsearch仓库添加到基于Debian的系统的APT源列表中。
:::
你可以使用以下命令安装Elasticsearch Debian软件包:

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

如果存在相同的Elasticsearch仓库的两个条目,在执行 apt-get update 时可能会看到如下错误:

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

请检查 /etc/apt/sources.list.d/elasticsearch-8.x.list 文件,查找是否存在重复的条目,或者在 /etc/apt/sources.list.d//etc/apt/sources.list 文件中的其他文件中查找重复的条目。

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

手动下载和安装Elasticsearch Debian软件包的步骤如下:

下载Elasticsearch v8.11.1的Debian软件包并安装:

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

比较下载的Debian软件包的SHA和发布的校验和,输出应为 elasticsearch-{version}-amd64.deb: OK

启用安全性的情况下启动Elasticsearch:

在安装Elasticsearch时,默认情况下会启用并配置安全功能。安装Elasticsearch时,以下安全配置会自动进行:

建议将elastic密码存储为shell中的环境变量。例如:

export ELASTIC_PASSWORD="your_password"

重新配置节点以加入现有集群:

默认情况下,安装Elasticsearch时,安装过程会配置一个单节点集群。如果要使节点加入现有集群,可以在启动新节点之前在现有节点上生成一个注册令牌。

在现有集群的任何节点上,生成一个节点注册令牌:

/usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s node

复制在终端上输出的注册令牌。

在新的Elasticsearch节点上,将注册令牌作为参数传递给elasticsearch-reconfigure-node工具:

/usr/share/elasticsearch/bin/elasticsearch-reconfigure-node --enrollment-token <enrollment-token>

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 keystore设置了密码保护,则需要使用本地文件和systemd环境变量向systemd提供keystore密码。此本地文件在存在时应受到保护,一旦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
sudo journalctl --unit elasticsearch
sudo journalctl --unit elasticsearch --since "2016-10-30 18:17:16"

有关更多命令行选项,请参阅man journalctlhttps://www.freedesktop.org/software/systemd/man/journalctl.html

旧版systemd版本的启动超时:

默认情况下,Elasticsearch将TimeoutStartSec参数设置为systemd的900秒。如果运行的是systemd的至少238版本,则Elasticsearch可以自动延长启动超时,并将在启动完全完成之前重复执行此操作,即使时间超过了900秒。

在238版本之前的systemd版本不支持超时扩展机制,如果在配置的超时时间内Elasticsearch未完全启动,将终止Elasticsearch进程。如果发生这种情况,Elasticsearch将在启动后的短时间内报告它正常关闭:

[2022-01-31T01:22:31,077][INFO ][o.e.n.Node               ] [instance-0000000123] starting ...
...
[2022-01-31T01:37:15,077][INFO ][o.e.n.Node               ] [instance-0000000123] stopping ...

然而,systemd日志将报告启动超时:

Jan 31 01:22:30 debian systemd[1]: Starting Elasticsearch...
Jan 31 01:37:15 debian systemd[1]: elasticsearch.service: Start operation timed out. Terminating.
Jan 31 01:37:15 debian systemd[1]: elasticsearch.service: Main process exited, code=killed, status=15/TERM
Jan 31 01:37:15 debian systemd[1]: elasticsearch.service: Failed with result 'timeout'.
Jan 31 01:37:15 debian systemd[1]: Failed to start Elasticsearch.

为避免此问题,请将您的systemd升级至至少238版本。您还可以通过扩展TimeoutStartSec参数来临时解决问题。

检查Elasticsearch是否运行:

可以通过向本地的9200端口发送HTTPS请求来测试Elasticsearch节点是否正在运行:

curl --cacert /etc/elasticsearch/certs/http_ca.crt -u elastic:$ELASTIC_PASSWORD https://localhost:9200

确保在调用中使用https,否则请求将失败。

--cacert:指定用于HTTP

配置Elasticsearch:

/etc/elasticsearch目录包含Elasticsearch的默认运行时配置。在软件包安装时,该目录及其所有包含的文件的所有权都设置为root:elasticsearch

setgid标志将组权限应用于/etc/elasticsearch目录,以确保Elasticsearch可以读取任何包含的文件和子目录。所有文件和子目录都继承了root:elasticsearch的所有权。从该目录或任何子目录运行命令,如elasticsearch-keystore工具,需要root:elasticsearch权限。

Elasticsearch默认从/etc/elasticsearch/elasticsearch.yml文件加载其配置。这个配置文件的格式在“Configuring Elasticsearch”中有解释。

Debian软件包还包含一个系统配置文件(/etc/default/elasticsearch),允许您设置以下参数:

ES_JAVA_HOME Set a custom Java path to be used.
ES_PATH_CONF Configuration file directory (which needs to include elasticsearch.yml, jvm.options, and log4j2.properties files); defaults to /etc/elasticsearch.
ES_JAVA_OPTS Any additional JVM system properties you may want to apply.
RESTART_ON_UPGRADE Configure restart on package upgrade, defaults to false. This means you will have to restart your Elasticsearch instance after installing a package manually. 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.

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

连接客户端到Elasticsearch:

当您首次启动Elasticsearch时,TLS将自动配置为HTTP层。CA证书将生成并存储在磁盘上:

/etc/elasticsearch/certs/http_ca.crt

该证书的十六进制编码的SHA-256指纹也输出到终端。任何连接到Elasticsearch的客户端,如Elasticsearch Clients、Beats、独立的Elastic Agents和Logstash,都必须验证它们信任Elasticsearch用于HTTPS的证书。Fleet Server和Fleet管理的Elastic Agents会自动配置为信任CA证书。其他客户端可以通过使用CA证书的指纹或CA证书本身来建立信任关系。

如果自动配置过程已经完成,您仍然可以获取安全证书的指纹。您还可以将CA证书复制到您的计算机并配置客户端使用它。

使用CA指纹:

复制启动Elasticsearch时终端输出的指纹值,并配置您的客户端使用此指纹在连接到Elasticsearch时建立信任。

如果自动配置过程已经完成,您仍然可以通过运行以下命令获取安全证书的指纹。路径是指向HTTP层的自动生成的CA证书。

openssl x509 -fingerprint -sha256 -in config/certs/http_ca.crt

该命令返回包含指纹的安全证书。发行者应该是Elasticsearch security auto-configuration HTTP CA。

issuer= /CN=Elasticsearch security auto-configuration HTTP CA
SHA256 Fingerprint=<指纹>
使用CA证书:

如果您的库不支持验证指纹的方法,每个Elasticsearch节点上都会在以下目录中创建自动生成的CA证书:

/etc/elasticsearch/certs/http_ca.crt

http_ca.crt文件复制到您的计算机,并配置您的客户端使用此证书在连接到Elasticsearch时建立信任。

Debian软件包的目录结构:

Debian软件包将配置文件、日志和数据目录放置在适用于基于Debian的系统的适当位置。

The Debian package places config files, logs, and the data directory in the appropriate locations for a Debian-based system:

Type Description Default Location Setting
home Elasticsearch home directory or $ES_HOME /usr/share/elasticsearch
bin Binary scripts including elasticsearch to start a node and elasticsearch-plugin to install plugins /usr/share/elasticsearch/bin
conf Configuration files including elasticsearch.yml /etc/elasticsearch ES_PATH_CONF
conf Environment variables including heap size, file descriptors. /etc/default/elasticsearch
conf Generated TLS keys and certificates for the transport and http layer. /etc/elasticsearch/certs
data The location of the data files of each index / shard allocated on the node. /var/lib/elasticsearch path.data
jdk The bundled Java Development Kit used to run Elasticsearch. Can be overridden by setting the ES_JAVA_HOME environment variable in /etc/default/elasticsearch. /usr/share/elasticsearch/jdk
logs Log files location. /var/log/elasticsearch path.logs
plugins Plugin files location. Each plugin will be contained in a subdirectory. /usr/share/elasticsearch/plugins
repo Shared file system repository locations. Can hold multiple locations. A file system repository can be placed in to any subdirectory of any directory specified here. Not configured path.repo
安全证书和密钥:

当您安装Elasticsearch时,将在Elasticsearch配置目录中生成以下证书和密钥,用于将Kibana实例连接到您的安全Elasticsearch集群并加密节点间通信。以下是这些文件的列表,仅供参考。

http.p12transport.p12 是受密码保护的PKCS#12密钥库。Elasticsearch将这些密钥库的密码存储为安全设置。要检索密码以便查看或更改密钥库内容,请使用 bin/elasticsearch-keystore 工具。

使用以下命令检索 http.p12 的密码:
bin/elasticsearch-keystore show xpack.security.http.ssl.keystore.secure_password
使用以下命令检索 transport.p12 的密码:
bin/elasticsearch-keystore show xpack.security.transport.ssl.keystore.secure_password
上一篇下一篇

猜你喜欢

热点阅读