文章摘要(AI生成)
本内容讨论在 Linux 上下载和设置 Elasticsearch v8.8.1 的步骤。 它提供了下载存档文件、验证其完整性、提取文件以及导航到 Elasticsearch 目录的命令。 它还提到Elasticsearch默认配置为允许自动创建索引,但如果禁用,则需要调整配置。 内容进一步解释了从命令行启动 Elasticsearch 的命令,并提到了首次启动期间启用和配置的默认安全功能,例如身份验证、授权、TLS 证书和密钥生成以及 Kibana 注册令牌的生成。 最后给出了一个输出示例,其中包括为弹性超级用户生成的密码和 Kibana 的注册令牌。
ES下载和设置
Elasticsearch v8.8.1 的 Linux archive可以下载并安装,如下所示:
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.8.1-linux-x86_64.tar.gz
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.8.1-linux-x86_64.tar.gz.sha512
shasum -a 512 -c elasticsearch-8.8.1-linux-x86_64.tar.gz.sha512
tar -xzf elasticsearch-8.8.1-linux-x86_64.tar.gz
cd elasticsearch-8.8.1/
启用系统索引的自动创建
一些商业功能会自动在 Elasticsearch 中创建索引。默认情况下,Elasticsearch 配置为允许自动创建索引,无需执行任何其他步骤。但是,如果您在 Elasticsearch 中禁用了自动索引创建,则必须进行配置 action.auto_create_index
以elasticsearch.yml
允许商业功能创建以下索引:
action.auto_create_index: .monitoring*,.watches,.triggered_watches,.watcher-history*,.ml*
命令行启动
运行以下命令从命令行启动 Elasticsearch:
./bin/elasticsearch
首次启动 Elasticsearch 时,默认情况下会启用并配置安全功能。以下安全配置会自动发生:
elastic
启用身份验证和授权,并为内置超级用户 生成密码。- 为传输层和 HTTP 层生成 TLS 的证书和密钥,并使用这些密钥和证书启用和配置 TLS。
- 为 Kibana 生成注册令牌,有效期为 30 分钟。
用户的密码elastic
和 Kibana 的注册令牌将输出到您的终端。例如:
The generated password for the elastic built-in superuser is:
<password>
The enrollment token for Kibana instances, valid for the next 30 minutes:
<enrollment-token>
The hex-encoded SHA-256 fingerprint of the generated HTTPS CA DER-encoded certificate:
<fingerprint>
You can complete the following actions at any time:
Reset the password of the elastic built-in superuser with
'bin/elasticsearch-reset-password -u elastic'.
Generate an enrollment token for Kibana instances with
'bin/elasticsearch-create-enrollment-token -s kibana'.
Generate an enrollment token for Elasticsearch nodes with
'bin/elasticsearch-create-enrollment-token -s node'.
如果您对 Elasticsearch 密钥库进行了密码保护,系统将提示您输入密钥库的密码。有关更多详细信息,请参阅安全设置。
默认情况下,Elasticsearch 将其日志打印到控制台 ( stdout
) 以及日志目录<cluster name>.log
中的文件。Elasticsearch 在启动时会记录一些信息,但在完成初始化后,它将继续在前台运行,并且不会进一步记录任何内容,直到发生值得记录的事情为止。当 Elasticsearch 运行时,您可以通过默认端口上的 HTTP 接口9200
与其进行交互。
要停止 Elasticsearch,请按Ctrl-C
。
注意
所有与 Elasticsearch 一起打包的脚本都需要支持数组的 Bash 版本,并假设 Bash 在 上可用
/bin/bash
。因此,Bash 应该可以直接或通过符号链接在此路径上使用。
在现有集群中注册节点
当Elasticsearch第一次启动时,安全自动配置过程将HTTP层绑定到0.0.0.0
,但仅将传输层绑定到localhost。此预期行为可确保您无需任何其他配置即可启动默认启用安全性的单节点集群。
localhost
在注册新节点之前,在生产集群中通常需要执行其他操作,例如绑定到除引导程序检查之外的地址或满足引导程序检查。在此期间,自动生成的注册令牌可能会过期,这就是注册令牌不会自动生成的原因。
此外,只有同一主机上的节点才能加入集群,无需额外配置。如果您希望其他主机的节点加入您的集群,则需要设置transport.host
为 受支持的值 (例如取消注释建议值0.0.0.0
),或绑定到其他主机可以访问的接口的 IP 地址。有关详细信息,请参阅 传输设置。
elasticsearch-create-enrollment-token
要在集群中注册新节点,请使用该工具在集群中的任何现有节点上创建注册令牌 。然后,您可以使用该参数启动一个新节点,--enrollment-token
以便它加入现有集群。
-
在运行 Elasticsearch 的单独终端中,导航到安装 Elasticsearch 的目录并运行该
elasticsearch-create-enrollment-token
工具来为新节点生成注册令牌。bin/elasticsearch-create-enrollment-token -s node
复制注册令牌,您将使用该令牌向 Elasticsearch 集群注册新节点。
-
从新节点的安装目录中,启动 Elasticsearch 并通过参数传递注册令牌
--enrollment-token
。bin/elasticsearch --enrollment-token <enrollment-token>
Elasticsearch 自动在以下目录中生成证书和密钥:
config/certs
-
对要注册的任何新节点重复上一步。
检查 Elasticsearch 是否正在运行
您可以通过向9200
端口发送 HTTPS 请求来测试您的 Elasticsearch 节点是否正在运行 localhost
:
curl --cacert $ES_HOME/config/certs/http_ca.crt -u elastic https://localhost:9200
注意
确保您
https
在通话中使用,否则请求将失败。
--cacert
http_ca.crt
为 HTTP 层 生成的证书的路径。
输入elastic
安装期间生成的用户密码,该密码应返回如下响应:
{
"name" : "Cp8oag6",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "AT69_T_DTp-1qgIJlatQqA",
"version" : {
"number" : "8.8.1",
"build_type" : "tar",
"build_hash" : "f27399d",
"build_flavor" : "default",
"build_date" : "2016-03-30T09:51:41.449Z",
"build_snapshot" : false,
"lucene_version" : "9.6.0",
"minimum_wire_compatibility_version" : "1.2.3",
"minimum_index_compatibility_version" : "1.2.3"
},
"tagline" : "You Know, for Search"
}
可以使用stdout
命令行上的-q
或--quiet
选项禁用日志打印。
作为守护进程运行
要将 Elasticsearch 作为守护进程运行,请在命令行上指定-d
,并使用-p
将进程 ID 记录在文件中:
./bin/elasticsearch -d -p pid
如果您对 Elasticsearch 密钥库进行了密码保护,系统将提示您输入密钥库的密码。有关更多详细信息,请参阅安全设置。
可以在$ES_HOME/logs/
目录中找到日志消息。
要关闭 Elasticsearch,请杀死pid
文件中记录的进程 ID:
pkill -F pid
命令行配置Elasticsearch
$ES_HOME/config/elasticsearch.yml
Elasticsearch默认从文件加载其配置。配置 Elasticsearch中解释了此配置文件的格式 。
可以在配置文件中指定的任何设置也可以在命令行上指定,语法-E
如下:
./bin/elasticsearch -d -Ecluster.name=my_cluster -Enode.name=node_1
注意
通常,任何集群范围的设置(例如
cluster.name
)都应添加到elasticsearch.yml
配置文件中,而任何特定于节点的设置(例如node.name
可以在命令行上指定)。
将客户端连接到 Elasticsearch
当您第一次启动 Elasticsearch 时,会自动为 HTTP 层配置 TLS。生成 CA 证书并将其存储在磁盘上:
$ES_HOME/config/certs/http_ca.crt
该证书的十六进制编码的 SHA-256 指纹也会输出到终端。连接到 Elasticsearch 的任何客户端(例如 Elasticsearch 客户端、Beats、独立 Elastic Agent 和 Logstash)必须验证它们是否信任 Elasticsearch 用于 HTTPS 的证书。队列服务器和队列管理的 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
.
$ES_HOME/config/certs/http_ca.crt
将http_ca.crt
文件复制到您的计算机,并将客户端配置为在连接到 Elasticsearch 时使用此证书建立信任。
ES结构
默认情况下,所有文件和目录都包含在$ES_HOME
解压存档时创建的目录中。
这非常方便,因为您无需创建任何目录即可开始使用 Elasticsearch,并且卸载 Elasticsearch 就像删除目录一样简单$ES_HOME
。但是,建议更改 config 目录、数据目录和日志目录的默认位置,以免以后删除重要数据。
类型 | 描述 | 默认位置 | 环境 |
---|---|---|---|
家 | Elasticsearch 主目录或$ES_HOME |
通过解压存档创建的目录 | |
bin | 二进制脚本,包括elasticsearch 启动节点和elasticsearch-plugin 安装插件 |
$ES_HOME/bin |
|
conf | 配置文件包括elasticsearch.yml |
$ES_HOME/config |
ES_PATH_CONF |
conf | 为传输层和 HTTP 层生成 TLS 密钥和证书。 | $ES_HOME/config/certs |
|
数据 | 节点上分配的每个索引/分片的数据文件的位置。 | $ES_HOME/data |
path.data |
日志 | 日志文件位置。 | $ES_HOME/logs |
path.logs |
插件 | 插件文件位置。每个插件都将包含在一个子目录中。 | $ES_HOME/plugins |
|
仓库 | 共享文件系统存储库位置。可以容纳多个位置。文件系统存储库可以放置在此处指定的任何目录的任何子目录中。 | 未配置 | path.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.http.ssl.keystore.secure_password
评论区