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
有以下几个原因:
-
个别仓库文件:
这些说明选择在/etc/apt/sources.list.d
而不是系统范围的/etc/apt/sources.list
文件中添加条目,以确保每个仓库都有一个清晰的仓库文件。这种方法更为清晰,特别是在处理多个仓库时更为有用。 -
依赖性问题:
add-apt-repository
并不是许多发行版默认安装的一部分,而且它需要一些非默认的依赖项。通过手动添加仓库定义,这些说明提供了一种更为直接和广泛适用的方法。 -
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
生成密码。 - 为传输和HTTP层生成TLS的证书和密钥,并使用这些证书和密钥启用和配置TLS。
- 密码、证书和密钥将输出到终端。
建议将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
- 列出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的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_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
网友评论