使用 RPM 安装 Elasticsearch
编辑使用 RPM 安装 Elasticsearch
编辑Elasticsearch 的 RPM 可以从我们的网站下载或从我们的 RPM 存储库下载。它可用于在任何基于 RPM 的系统上安装 Elasticsearch,例如 OpenSuSE、SLES、Centos、Red Hat 和 Oracle Enterprise。
在旧版本 RPM 的发行版(例如 SLES 11 和 CentOS 5)上不支持 RPM 安装。请改为参阅从 Linux 或 MacOS 上的存档安装 Elasticsearch。
此软件包包含免费和订阅功能。 开始 30 天试用以试用所有功能。
Elasticsearch 的最新稳定版本可以在下载 Elasticsearch页面上找到。其他版本可以在历史版本页面上找到。
有关在您自己的场所设置 Elastic Stack 的分步示例,请尝试我们的教程:安装自托管的 Elastic Stack。
导入 Elasticsearch GPG 密钥
编辑我们使用 Elasticsearch 签名密钥(PGP 密钥 D88E42B4,可从 https://pgp.mit.edu 获取)对我们所有的软件包进行签名,指纹为
4609 5ACC 8548 582C 1A26 99A9 D27D 666C D88E 42B4
下载并安装公共签名密钥
rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
从 RPM 存储库安装
编辑在基于 RedHat 的发行版的 /etc/yum.repos.d/
目录中创建一个名为 elasticsearch.repo
的文件,或者在基于 OpenSuSE 的发行版的 /etc/zypp/repos.d/
目录中创建一个名为 elasticsearch.repo
的文件,其中包含
[elasticsearch] name=Elasticsearch repository for 8.x packages baseurl=https://artifacts.elastic.co/packages/8.x/yum gpgcheck=1 gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch enabled=0 autorefresh=1 type=rpm-md
您的存储库已准备好使用。您现在可以使用以下命令之一安装 Elasticsearch
sudo yum install --enablerepo=elasticsearch elasticsearch sudo dnf install --enablerepo=elasticsearch elasticsearch sudo zypper modifyrepo --enable elasticsearch && \ sudo zypper install elasticsearch; \ sudo zypper modifyrepo --disable elasticsearch
在 CentOS 和较旧的基于 Red Hat 的发行版上使用 |
|
在 Fedora 和其他较新的 Red Hat 发行版上使用 |
|
在基于 OpenSUSE 的发行版上使用 |
默认情况下,配置的存储库处于禁用状态。这消除了在升级系统的其余部分时意外升级 elasticsearch
的可能性。每个安装或升级命令都必须显式启用存储库,如上面的示例命令所示。
手动下载并安装 RPM
编辑Elasticsearch v8.17.0 的 RPM 可以从网站下载并按如下方式安装
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.17.0-x86_64.rpm wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.17.0-x86_64.rpm.sha512 shasum -a 512 -c elasticsearch-8.17.0-x86_64.rpm.sha512 sudo rpm --install elasticsearch-8.17.0-x86_64.rpm
在基于 systemd 的发行版上,安装脚本将尝试设置内核参数(例如,vm.max_map_count
);您可以通过屏蔽 systemd-sysctl.service 单元来跳过此操作。
启用安全功能启动 Elasticsearch
编辑安装 Elasticsearch 时,默认情况下会启用并配置安全功能。当您安装 Elasticsearch 时,会自动执行以下安全配置
- 启用身份验证和授权,并为
elastic
内置超级用户生成密码。 - 为传输层和 HTTP 层生成 TLS 的证书和密钥,并启用 TLS 并使用这些密钥和证书进行配置。
密码以及证书和密钥将输出到您的终端。您可以使用 elasticsearch-reset-password
命令重置 elastic
用户的密码。
我们建议将 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 配置为允许自动创建索引,无需其他步骤。但是,如果您在 Elasticsearch 中禁用了自动创建索引,则必须在 elasticsearch.yml
中配置action.auto_create_index
,以允许商业功能创建以下索引
action.auto_create_index: .monitoring*,.watches,.triggered_watches,.watcher-history*,.ml*
使用 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 环境变量向 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。
较旧的 systemd
版本的启动超时
默认情况下,Elasticsearch 将 TimeoutStartSec
参数设置为 systemd
到 900s
。如果您运行的是至少 238 版本的 systemd
,则 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 是否正在运行
编辑您可以通过向 localhost
上的端口 9200
发送 HTTPS 请求来测试您的 Elasticsearch 节点是否正在运行
curl --cacert /etc/elasticsearch/certs/http_ca.crt -u elastic:$ELASTIC_PASSWORD https://127.0.0.1:9200
该调用返回如下响应
{ "name" : "Cp8oag6", "cluster_name" : "elasticsearch", "cluster_uuid" : "AT69_T_DTp-1qgIJlatQqA", "version" : { "number" : "8.17.0", "build_type" : "tar", "build_hash" : "f27399d", "build_flavor" : "default", "build_date" : "2016-03-30T09:51:41.449Z", "build_snapshot" : false, "lucene_version" : "9.12.0", "minimum_wire_compatibility_version" : "1.2.3", "minimum_index_compatibility_version" : "1.2.3" }, "tagline" : "You Know, for Search" }
配置 Elasticsearch
编辑/etc/elasticsearch
目录包含 Elasticsearch 的默认运行时配置。在此软件包安装中,此目录和所有包含文件的所有权都设置为 root:elasticsearch
。
setgid
标志将组权限应用于 /etc/elasticsearch
目录,以确保 Elasticsearch 可以读取任何包含的文件和子目录。所有文件和子目录都继承 root:elasticsearch
所有权。从此目录或任何子目录运行命令(例如,elasticsearch-keystore 工具)需要 root:elasticsearch
权限。
默认情况下,Elasticsearch 从 /etc/elasticsearch/elasticsearch.yml
文件加载其配置。在配置 Elasticsearch中解释了此配置文件的格式。
RPM 还有一个系统配置文件 (/etc/sysconfig/elasticsearch
),您可以使用该文件设置以下参数
|
设置要使用的自定义 Java 路径。 |
|
配置文件目录(需要包含 |
|
您可能要应用的任何其他 JVM 系统属性。 |
|
配置在软件包升级时重新启动,默认为 |
使用 systemd
的发行版要求通过 systemd
而不是通过 /etc/sysconfig/elasticsearch
文件来配置系统资源限制。有关详细信息,请参阅Systemd 配置。
将客户端连接到 Elasticsearch
编辑当您首次启动 Elasticsearch 时,会自动为 HTTP 层配置 TLS。会在磁盘上的以下位置生成并存储 CA 证书
/etc/elasticsearch/certs/http_ca.crt
此证书的十六进制编码 SHA-256 指纹也会输出到终端。任何连接到 Elasticsearch 的客户端,例如Elasticsearch 客户端、Beats、独立的 Elastic Agent 和 Logstash,都必须验证它们信任 Elasticsearch 用于 HTTPS 的证书。Fleet Server 和 Fleet 管理的 Elastic Agent 会自动配置为信任 CA 证书。其他客户端可以通过使用 CA 证书的指纹或 CA 证书本身来建立信任。
如果自动配置过程已经完成,您仍然可以获取安全证书的指纹。您也可以将 CA 证书复制到您的计算机,并配置您的客户端以使用它。
使用 CA 指纹
编辑复制 Elasticsearch 启动时输出到终端的指纹值,并配置您的客户端以使用此指纹在连接到 Elasticsearch 时建立信任。
如果自动配置过程已经完成,您仍然可以通过运行以下命令获取安全证书的指纹。路径指向 HTTP 层的自动生成 CA 证书。
openssl x509 -fingerprint -sha256 -in config/certs/http_ca.crt
该命令返回安全证书,包括指纹。 issuer
应该是 Elasticsearch security auto-configuration HTTP CA
。
issuer= /CN=Elasticsearch security auto-configuration HTTP CA SHA256 Fingerprint=<fingerprint>
使用 CA 证书
编辑如果您的库不支持验证指纹的方法,则会在每个 Elasticsearch 节点上的以下目录中创建自动生成的 CA 证书
/etc/elasticsearch/certs/http_ca.crt
将 http_ca.crt
文件复制到您的计算机,并配置您的客户端以使用此证书在连接到 Elasticsearch 时建立信任。
RPM 的目录布局
编辑RPM 将配置文件、日志和数据目录放置在基于 RPM 的系统的适当位置
类型 | 描述 | 默认位置 | 设置 |
---|---|---|---|
home |
Elasticsearch 主目录或 |
|
|
bin |
二进制脚本,包括用于启动节点的 |
|
|
conf |
配置文件,包括 |
|
|
conf |
环境变量,包括堆大小、文件描述符。 |
|
|
conf |
为传输层和 http 层生成的 TLS 密钥和证书。 |
|
|
data |
分配在节点上的每个索引/分片的数据文件的位置。 |
|
|
jdk |
用于运行 Elasticsearch 的捆绑 Java 开发工具包。可以通过在 |
|
|
logs |
日志文件的位置。 |
|
|
plugins |
插件文件的位置。每个插件将包含在子目录中。 |
|
|
repo |
共享文件系统存储库的位置。可以保存多个位置。文件系统存储库可以放置在此处指定的任何目录的任何子目录中。 |
未配置 |
|
安全证书和密钥
编辑当您安装 Elasticsearch 时,会在 Elasticsearch 配置目录中生成以下证书和密钥,这些证书和密钥用于将 Kibana 实例连接到您安全的 Elasticsearch 集群并加密节点间通信。此处列出这些文件以供参考。
-
http_ca.crt
- 用于签署此 Elasticsearch 集群的 HTTP 层的证书的 CA 证书。
-
http.p12
- 包含此节点 HTTP 层的密钥和证书的密钥库。
-
transport.p12
- 包含集群中所有节点的传输层的密钥和证书的密钥库。
http.p12
和 transport.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
下一步
编辑您现在已经设置了一个测试 Elasticsearch 环境。在开始进行认真的开发或使用 Elasticsearch 进行生产之前,您必须进行一些额外的设置
- 了解如何配置 Elasticsearch。
- 配置重要的 Elasticsearch 设置。
- 配置重要的系统设置。