Linux环境安装Elasticsearch8.16.6
安装Elastcisearch单节点
官网地址:https://www.elastic.co/guide/en/elasticsearch/reference/8.16/targz.html
1、安装步骤
- 下载elasticsearch tar包
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.16.6-linux-x86_64.tar.gz- 解压下载的tar包
tar -xzf elasticsearch-8.16.6-linux-x86_64.tar.gz- 启动elasticsearch
cd elasticsearch-8.16.6/./bin/elasticsearch注意:如果是root启动的上述命令的话,会报错,报错信息如下:

在解决下面的问题时,需要以root账号,进行如下设置,否则可能elasticsearch报错
# 在 /etc/sysctl.conf 末尾添加echo "vm.max_map_count=262144" >> /etc/sysctl.conf# 立即生效sysctl -p解决上述的办法,创建另外一个专门用户来启动elasticsearch,下面是具体的操作步骤:
# 创建名为 es 的用户组groupadd es# 创建名为 es 的用户,并加入 es 组useradd es -g es授权目录权限,我的目录是在/opt/es/elasticsearch-8.16.6,把目录的权限交给创建的es用户
# 将目录所有者改为 es 用户chown -R es:es /opt/es/elasticsearch-8.16.6切换为es用户,启动elasticsearch
# 切换到 es 用户su - es# 进入安装目录cd /opt/es/elasticsearch-8.16.6# 后台启动 ES./bin/elasticsearch -d启动成功后,ES 会在控制台打印出默认的 elastic 用户密码和 enrollment token(仅限第一次启动)
进行后续操作时,建议先停止elasticsearch。
2、手动配置Elasticsearch节点安全通信
官网地址:https://www.elastic.co/guide/en/elasticsearch/reference/8.16/security-basic-setup.html
进入elasticsearch存放位置
依次执行如下步骤:
./bin/elasticsearch-certutil ca
./bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12
将我们生成的2份证书,移动config/certs文件中
mv elastic-certificates.p12 ./config/certsmv elastic-stack-ca.p12 ./config/certs原来的配置如下:

将上述截图中的名称替换成elastic-certificates.p12 即可。
依次使用如下命令,将上述生成证书的密码,写入到config/elasticsearch.keystore文件中进行加密存储
./bin/elasticsearch-keystore add xpack.security.transport.ssl.keystore.secure_password./bin/elasticsearch-keystore add xpack.security.transport.ssl.truststore.secure_password需要注意:如果以root用户创建的elastic-stack-ca.p12和elastic-certificates.p12,需要修改文件的属组和用户,否则上述流程都执行完毕后,可能会因为读取不到文件权限问题导致报错。
上述的配置,都是用于elasticsearch多个节点通信的,虽然目前用的是单节点,也是需要进行配置。
如果此时安装Kibana并启动后,还是不能通过Kibana连接elasticsearch,所以现在我们先进行其他配置,最后才安装Kibana,并使用Kibana连接elasticsearch。
3、配置HTTP层TLS加密步骤
进入到elasticsearch所在目录,执行如下命令
./bin/elasticsearch-certutil http该命令会生成一个 .zip 文件,包含用于 Elasticsearch 和 Kibana 的证书和密钥。每个文件夹内都有一个 README.txt 说明如何使用这些文件。
执行操作流程


填入步骤2生成的证书所在的路径




上述的流程含义如下:
交互式配置指南:
- 是否生成 CSR:输入 n(否)。
- 是否使用现有 CA:输入 y(是)。
- CA 路径:输入你之前为集群生成的 elastic-stack-ca.p12 文件的绝对路径。
- CA 密码:输入该 CA 的密码。
- 有效期:输入证书过期时间(例如 90D 代表 90 天,或以年 y、月 M 为单位)。
- 是否为每个节点生成独立证书:输入 y(是)。每个证书将拥有独立的私钥,并针对特定的主机名或 IP 地址签发。
输入节点详情(针对每个节点重复):
- 节点名称:输入集群中第一个节点的名称(需与生成节点证书时使用的名称一致)。
- 主机名 (Hostnames):输入用于连接该节点的所有主机名。这些名称将作为 DNS 名称添加到证书的 SAN (使用者备用名称) 字段中。请列出所有通过 HTTPS 连接集群时可能用到的主机名及其变体。
- IP 地址:输入客户端连接该节点时可能使用的 IP 地址。
解压压缩包
unzip elasticsearch-ssl-http.zip将解压后有2个文件夹,一个kibana,另一个elasticsearch文件夹。
先需要将elasticsearch中的http.p12文件移动到es所在目录的config/certs文件中,覆盖原有文件。
后续步骤会用到kibana文件夹,现在暂时不用管它。
如果在生成http.p12,不管是否输入密码,都还需要进行如下的额外操作,输入如下命令,输入密码,如果之前没有输入密码,直接回车的话,执行如下命令时也是回车就行。否则后续在启动elasticsearch时会出现异常。
./bin/elasticsearch-keystore add xpack.security.http.ssl.keystore.secure_password4、安装Kibana
curl -O https://artifacts.elastic.co/downloads/kibana/kibana-<SPECIFIC.VERSION.NUMBER>-linux-x86_64.tar.gz将上述中的<SPECIFIC.VERSION.NUMBER>替换成对应es的版本即可,例如我安装的是8.16.6,那下载命令如下:
curl -O https://artifacts.elastic.co/downloads/kibana/kibana-8.16.6-linux-x86_64.tar.gz解压下载的tar包即可,Kibana的启动和Elasticsearch启动一样的,不能用root用户启动,因为我们在安装ElaseticSearch的时候,以及创建了额外的es用户了,现在我们只需要将存放Kibana位置赋权给es用户就行。命令如下:
sudo chown -R es:es /opt/es/kibana-8.16.6启动时也需要切换到其他用,进入到Kibana目录中,执行如下命令就可启动
./bin/kibana5、为Kibana配置ES后端的安全连接
此步骤是接着第3步后续来的,将kibana中的elasticsearch-ca.pem文件复制到kibana所在目录的config文件夹下。
配置kibana config中的kibana.yml相关即可。
找到配置文件中的项,进行配置:elasticsearch.ssl.certificateAuthorities = [ "elasticsearch-ca.pem" ]
elasticsearch.hosts: https://<your_elasticsearch_host>:9200
6、配置浏览器到Kibana安全连接
-
为什么你需要这个步骤? 目前你访问 Kibana 可能遇到了以下情况: 情况 A:你没配置 Kibana 的 SSL,只能通过 http 访问,数据明文传输。 情况 B:你用了 ES 自动生成的证书,浏览器报 NET::ERR_CERT_COMMON_NAME_INVALID,因为证书里的名字不是 kaistudy.plus。
-
使用之前生成的
elastic-stack-ca.p12文件生成kibana-server.p12,后续kibana的证书信息从其中解析
./bin/elasticsearch-certutil cert --ca config/certs/elastic-stack-ca.p12 \ --name kibana-server --dns xxx.com,localhost \ --ip 127.0.0.1 --out config/certs/kibana-server.p12- 从生成的
elastic-stack-ca.p12提取 Kibana 所需的文件.crt和.key文件
openssl pkcs12 -in config/certs/kibana-server.p12 -nocerts -nodes -out /opt/es/kibana-8.16.6/config/certs/kibana-server.key
openssl pkcs12 -in config/certs/kibana-server.p12 -clcerts -nokeys -out /opt/es/kibana-8.16.6/config/certs/kibana-server.crt- 在
kibana.yml中进行如下配置
server.ssl.enabled: trueserver.ssl.certificate: $KBN_PATH_CONF/kibana-server.crtserver.ssl.key: $KBN_PATH_CONF/kibana-server.key需要使用elasticsearch配置生成kibana_system的新密码
./bin/elasticsearch-reset-password -u kibana_system --url https://127.0.0.1:9200将生成的密码配置在kibana.yml中
elasticsearch.username: "kibana_system"elasticsearch.password: "你刚才获取到的新密码"还需在kibana.yml中额外配置kibana秘钥信息,使用kibana中bin目录下的工具,命令如下:
./bin/kibana-encryption-keys generate它会输出三行配置(包含随机生成的长字符串),请把它们复制并粘贴到 kibana.yml 的末尾:
- xpack.encryptedSavedObjects.encryptionKey: ”…”
- xpack.reporting.encryptionKey: ”…”
- xpack.security.encryptionKey: ”…”