4.1.1 在Linux或者MacOS上安装ES
Posted 大军001
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了4.1.1 在Linux或者MacOS上安装ES相关的知识,希望对你有一定的参考价值。
翻译地址:Install Elasticsearch from archive on Linux or MacOS | Elasticsearch Guide [8.1] | Elastic
ES作为一个.tar.gz文件对于Linux和MacOS是可用的。
这个包既包含免费的,也包括订购的产品。Start a 30-day trial 去尝试所有的产品特点。ES最新的稳定版本可以在这个页面Download Elasticsearch找到。其他的版本可以在Past Releases page找到。
注意:ES包含了一个来自JDK维护者(GPLv2+CE)OpenJDK 版本。去使用你自己的Java版本,看这个JVM version requirements
下载和安装Linux的归档文件
对于ES8.1.2的Linux归档文件可以像下面这样被下载和安装:
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.1.2-linux-x86_64.tar.gz
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.1.2-linux-x86_64.tar.gz.sha512
shasum -a 512 -c elasticsearch-8.1.2-linux-x86_64.tar.gz.sha512
tar -xzf elasticsearch-8.1.2-linux-x86_64.tar.gz
cd elasticsearch-8.1.2/
下载和安装MacOS的归档文件
对于ES的8.1.2版本的MacOS归档文件,可以像下面这样下载和安装:
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.1.2-darwin-x86_64.tar.gz
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.1.2-darwin-x86_64.tar.gz.sha512
shasum -a 512 -c elasticsearch-8.1.2-darwin-x86_64.tar.gz.sha512
tar -xzf elasticsearch-8.1.2-darwin-x86_64.tar.gz
cd elasticsearch-8.1.2/
让系统索引可以自动创建
一些商业化的产品特点在ES内部可以自动创建。默认的,ES可以被配置为允许索引自动创建,另外没有额外的步骤被需要了,如果你已经停用了索引的自动创建,你必须在elasticsearch.yml文件中配置action.auto_create_index 去允许这个产品特点去创建下面的索引。
action.auto_create_index: .monitoring*,.watches,.triggered_watches,.watcher-history*,.ml*
重要:如果你正在使用Logstash或者Beats,然后你将会更有可能的在你的action.auto_create_index设置上需要额外的索引名称,并且这个明确的值将会依赖你的本地配置。如果对于你的环境你不确定明确的值,你可能考虑设置这个值为*,这个将会允许所有索引的自动创建。
通过命令行运行ES
运行下面的命令在命令行上启动ES。
./bin/elasticsearch
当第一次启动ES的时候,安全特征默认的启用和配置。下面的安全配置会自动发生:
- 身份认证和授权被启用了,对于这个内置的超级用户elastic生成了一个密码。
- 对于TLS的证书和秘钥在传输层和HTTP层被生成了,并且TLS伴随着这些秘钥和证书被启用和配置了。
- 对于Kibana,一个登记的token生成了,这个是30分钟有效。
对于elastic用户的密码,和对于Kibana的登记token被输出到了你的终端。例如:
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'.
如果你有一个密码保护的ES秘钥库,你将会被提示输入这个秘钥库的密码。看Secure settings 里面更多的细节。
默认的,ES打印它的日志到控制台(stdout),并且输出到logs directory的<cluster name>.log文件。当ES启动的时候,打印了一些日志信息,但是当它完成初始化之后,它将会继续运行在前台,并且不会打印更多的日志信息直到一些更值得记录的事情发生。当ES运行的时候,你可以通过HTTP接口进行交互,默认的是9200端口。
按Ctrl-C,可以停止ES服务。
注意:所有用ES打包的脚本需要一个支持排列的Bash的版本,并且假设这个Bash在这个/bin/bash目录下是可用的。同样的,Bash应该要么直接在这个目录下是可用的,要么通过一个负号链接。
在一个存在的集群中加入节点
当ES第一次启动的时候,这个安全的自动配置过程绑定到了HTTP层,既包括_site_,也包括_local_,但是只是绑定了这个传输层到_local_。这种设计的行为,可以确认你可以用默认的安全启用并且没有任何的额外配置去启动一个单独的节点集群。
在加入一个新的节点之前,额外的动作像绑定到一个除了localhost的一个地址或者让人满意的启动检查,这些在生产环境集群中是需要的。在那个时间期间,一个自动生成的登记token可以过期的,这就是为什么登记的token不会自动生成的原因。
另外,只有在相同的主机的节点不需要额外的配置可以加入到这个集群。如果你想让来自其他的主机的节点加入你的集群,你需要去设置transport.host为一个supported value 除了_local_(例如_site_),或者一个IP地址绑定到一个接口上,其他的主机可以访问到它。参照transport settings 得到更多的信息。
在你的集群要加入一个新的节点,你需要在你的集群中任意存在的节点上用elasticsearch-create-enrollment-token工具创建一个等级的token。然后你用--enrollment-token参数启动一个新的节点,以至于它就会加入到存在的集群中。
- 在一个正在运行的ES的一个单独的终端。到你安装ES的那个目录去运行这个 elasticsearch-create-enrollment-token工具,为你的新节点生成一个登记的token。
bin/elasticsearch-create-enrollment-token -s node
拷贝这个登记的token,你将会使用它加入新的节点到你的集群中。
- 从你的新的节点的安装目录,启动ES并且传送这个登记的token用这个--enrollment-token参数。
bin/elasticsearch --enrollment-token <enrollment-token>
ES将会自动的在下面的目录里生成证书和秘钥:
config/certs
- 对于你想加入的任何的新的节点,重复前面的步骤。
检查ES启动
你可以测试你的ES是否启动,通过发送一个HTTPS请求到端口9200在localhost上:
curl --cacert $ES_PATH_CONF/config/certs/http_ca.crt -u elastic https://localhost:9200
确定你正在使用https调用,否则这个请求将会失败。
--cacert,对于HTTP层生成的http_ca.crt证书的路径。
输入在安装期间生成的elastic用户的密码,然后应该返回像下面的一个响应:
"name" : "Cp8oag6",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "AT69_T_DTp-1qgIJlatQqA",
"version" :
"number" : "8.1.2",
"build_flavor" : "default",
"build_type" : "tar",
"build_hash" : "f27399d",
"build_date" : "2016-03-30T09:51:41.449Z",
"build_snapshot" : false,
"lucene_version" : "9.0.0",
"minimum_wire_compatibility_version" : "1.2.3",
"minimum_index_compatibility_version" : "1.2.3"
,
"tagline" : "You Know, for Search"
日志打印到stdout可以停用,通过在命令行上使用这个-q或者--quiet选项。
作为一个后台守护进程运行
去运行ES作为一个后台守护进程,在命令行上指定一个-d,并且使用-p选项在一个文件中记录这个进程ID:
./bin/elasticsearch -d -p pid
如果你有密码保护的秘钥库,你将会被提示输入这个秘钥库的密码。看 Secure settings 得到更多的信息。
日志信息可以在$ES_HOME/logs/
目录被发现。
要想停止ES服务,在pid文件中杀掉这个记录的进程ID。
pkill -F pid
注意:这个ES的.tar.gz包没有包括systemd模块。去管理ES作为一个服务,使用 Debian 或者 RPM 代替。
在命令行上配置ES
ES默认的从$ES_HOME/config/elasticsearch.yml文件加载它的配置。这个配置文件的格式在 Configuring Elasticsearch有说明。
任何设置都可以在配置文件被指定,也可以在命令行上指定。像下面使用这个-E
语法。
./bin/elasticsearch -d -Ecluster.name=my_cluster -Enode.name=node_1
提示:典型的,任何集群范围的设置(像cluster.name)应该被添加到elasticsearch.yml配置文件中,但是任何节点有关的设置,例如node.name,可以在命令行上指定。
链接客户端到ES
当你第一次启动ES的时候, 对于HTTP层,TLS被自动配置。一个CA证书被生成,它存储在磁盘目录$ES_HOME/config/certs/http_ca.crt。这个证书的hex-encoded SHA-256指纹也被输出到终端。任何一个连到ES的客户端,例如Elasticsearch Clients,Beats,独立运行的Elastic Agents和Logstash,必须确认他们信任这个ES用于HTTPS访问的证书。Fleet服务器和Fleet管理的Elastic Agents被自动的配置去信任这个CA证书。其他的客户端连接可以通过CA证书的指纹或者CA证书本身得到信任。
如果这个自动配置的进程已经完成了,你仍然可以获取这个安全证书的指纹。你也可以拷贝这个CA证书到你的机器上,并且配置你的客户端去使用它。
使用这个CA指纹
当ES启动的时候,拷贝那个输出到你终端的指纹值,并且配置你的客户端去使用这个指纹去建立信任,当它连接到ES的时候。
如果这个自动配置的进程已经完成了,你仍然可以获取这个安全证书的指纹通过运行下面的命令。这个路径对于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=<fingerprint>
使用这个CA证书
如果你的软件包不支持这个指纹的方法认证,这个自动生成的CA证书在每一个ES的节点上的$ES_HOME/config/certs/目录上被创建。拷贝http_ca.crt这个文件到你的机器,并且配置这个客户端去使用这个证书去建立连接到ES的信任。
文件目录布局
这个文件分布是完全独立的。所有的文件和目录默认在包含在$ES_HOME -- 当解压这个文件的时候这个目录被创建了。
这个是非常方便的,因为你不需要去创建任何的目录去开始使用ES,以及卸载ES就像移除$ES_HOME这个目录一样简单。然而,去改变这个配置目录,数据目录和日志目录的默认位置是明智的,以至于你后来不会删除重要的数据。
Type(类型) | Description(描述) | Default Location(默认位置) | Setting(设置) |
---|---|---|---|
home | ES根目录或者$ES_HOME | 通过解压归档文件,目录被创建 | |
bin | 包括elasticsearch的二进制脚本去启动一个节点或者elasticsearch-plugin去安装插件 | $ES_HOME/bin | |
conf | 包括elasticsearch.yml的配置文件 | $ES_HOME/config | ES_PATH_CONF |
conf | 对于传输层和HTTP层生成秘钥和证书 | $ES_HOME/config/certs | |
data | 每一个分配在节点上的索引/分片数据文件的位置 | $ES_HOME/data | path.data |
logs | 日志文件位置 | $ES_HOME/logs | path.logs |
plugins | 插件文件位置。每一个插件都包含一个子目录。 | $ES_HOME/plugins | |
repo | 共享的文件系统仓库位置。可以保持多个位置。一个文件系统仓库可以被放置在任何指定的目录的任何子目录。 | 未配置 | path.repo |
安全证书和秘钥
当你安装ES的时候,下面的证书和秘钥在ES的配置目录被生成了,这个是用来去连接一个Kibana实例到你的安全的集群上,以及加密节点之间的回话。这些文件被列出来了作为引导:
http_ca.crt
这个CA证书是用来签名这个ES集群的HTTP层的证书。
http.p12
秘钥库包含了这个节点的HTTP层的秘钥和证书。
transport.p12
秘钥库包含了你的集群的所有节点的传输层的秘钥和证书。
http.p12和transport.p12是被PKCS#12密码保护的秘钥库。ES对于这些秘钥库存储了这些密码作为secure settings。去获取这个密码,以至于你可以检查或者改变这个秘钥库的内容,使用这个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
下一步
你现在有一个测试环境的ES安装了。在你开始重要的开发或者进入生产环境之前,你必须做一些额外的安装:
以上是关于4.1.1 在Linux或者MacOS上安装ES的主要内容,如果未能解决你的问题,请参考以下文章