安装包获取位置 https://www.elastic.co/cn/downloads/elasticsearch
打开链接选择对应操作系统,软件和版本,本文是 8.x 虚拟机安装
# 关闭防火墙 自己的虚拟机 我是直接进行禁用
# 启动:
systemctl start firewalld
# 停止:
systemctl disable firewalld
# 禁用:
systemctl stop firewalld
# 解压文件
tar xf elasticsearch-XXX.tar.gz
# 如果没有创建用户和用户组,执行以下命令
sudo groupadd 组名
# 查看用户组, 查看最后一行是否有添加,如果需要删除 sudo groupdel 组名
cat /etc/group
# 创建用户 -m 自动为新建的用户创建家目录
sudo useradd -m -g 组名 新建用户名
# 修改用户密码
sudo passwd 用户名
# 将文件移动到目录并简化名称
mv ./elasticsearch-8.4.2 /usr/local/es
cd /usr/local/
# 由于es不能用root启动,设置文件权限
chown -R es:my-es ./es
# 进入es目录, 切换用户 , 执行bin下的es
cd es
su es
# 建议安装后直接进行一次启动, 里面会将配置里注入一些属性,这些可以方便我们后续设置值
# 执行后 如下图 将下面内容复制一份出来,方便后面kibana的配置
./bin/elasticsearch
# Ctrl + C 退出进程
vi ./config/elasticsearch.yml
#集群名字,目前是单节点
cluster.name: "test"
#节点名
node.name: "es_test1"
#配置可进行数据交互的ip
network.host: 0.0.0.0
#允许http跨域访问,es_head插件必须开启
http.cors.enabled: true
http.cors.allow-origin: "*"
#数据存储路径
path.data: /home/es/data
#日志存储路径
path.logs: /home/es/logs
#不锁定jvm内存
bootstrap.memory_lock: false
#主节点
cluster.initial_master_nodes: ["es_test"]
#es_head连接时读取用户名密码
http.cors.allow-headers: Authorization,X-Requested-With,Content-Length,Content-Type
# 开启安全认证 , 本机测试可以使用关闭了安全验证,生产建议开启
# 由于ES 8.x的安全模块启用后集群的搭建和kibana需要证书验证才可以,因此此处不建议开启
xpack.security.enabled: false
xpack.license.self_generated.type: basic
xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.keystore.path: /usr/local/es/config/certs/elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: /usr/local/es/config/certs/elastic-certificates.p12
# 关闭配置 ,开发环境建议这么处理,生产环境需要安装证书,后面会详细讲解
xpack.security.http.ssl.enabled: false
bootstrap check failure [1] of [3]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65535]
bootstrap check failure [2] of [3]: max number of threads [3802] for user [es] is too low, increase to at least [4096]
bootstrap check failure [3] of [3]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
# 解决方案 修改文件
sudo vi /etc/security/limits.conf
# 最后添加, 带星号, 此处生效需要重启
* soft nproc 65535
* hard nproc 65535
* soft nofile 65536
* hard nofile 65536
# 重启后查看
ulimit -Hn
ulimit -Sn
sudo vi /etc/sysctl.conf
# 修改vm.max_map_count
vm.max_map_count = 262144
# 使之生效
sysctl -p
main ERROR Unable to create file /home/es/logs/my-es_server.json java.io.IOException: Could not create directory /home/es/logs
cd home
mkdir es
cd es/
mkdir data
mkdir logs
cd ..
chown -R es:my-es ./es/
error downloading geoip database [GeoLite2-ASN.mmdb]
# 添加配置
ingest.geoip.downloader.enabled: false
1.本步骤假设 防火墙, 用户 等内容已经配置,3.2, 3.3 的内容可以进行预设,本文节点1 已经配置完毕
# 启动node01 , 启动后执行下面命令查看token 查看token, 复制后执行时使用
./bin/elasticsearch-create-enrollment-token -s node
# 节点2 -节点n,解压文件 并修改位置和名称
# 注:非常重要
# 解压后千万不要启动,因为8.x默认会开启安全模式,会自己形成一个集群, 非常坑
tar xf elasticsearch-XXX.tar.gz
mv ./elasticsearch-8.4.2 /usr/local/es
chown -R es:my-es /usr/local/es
cd /usr/local/es
# 在节点1上执行获取到的内容
# 这种启动方式会自动创建成集群, 只需简单的修改es的基本配置就行
./bin/elasticsearch --enrollment-token xxx上面的token
# Ctrl + C 退出进程
vi ./config/elasticsearch.yml
# 修改
cluster.name: "test"
node.name: "es_test2"
network.host: 本机IP
path.data: /home/es/data
path.logs: /home/es/logs
xpack.security.enabled: false
ingest.geoip.downloader.enabled: false
http.cors.enabled: true
http.cors.allow-origin: "*"
此时环境就搭建好了 可以通过9200端口就可以访问了,
由于我们未启用security ,kibana启动非常简单, 简单配置如下:
server.port: 5601
server.host: 你的IP
elasticsearch.hosts: ["http://你的IP:9200"]
elasticsearch.username: "kibana_system"
elasticsearch.password: "123456"
# 如果密码不知道,可以在ES根目录执行进行设置 -i作用是自定义密码 不加将系统生成
./bin/elasticsearch-reset-password -u 用户名 -i
# eg:
./bin/elasticsearch-reset-password -u kibana_system -i
http://你的IP:5601即可登陆
# 如果提示需要token, 可以在es运行的情况下,通过下面密令获取token
./bin/elasticsearch-create-enrollment-token -s kibana
# 将token填入页面即可
# 在es根目录执行
# 切换用户
su es
# 签发CA证书,根据提示操作
./bin/elasticsearch-certutil ca
# 用CA证书签发节点证书
./bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12
# 将生成的证书文件移动到 config/certs 目录中
mv elastic-stack-ca.p12 elastic-certificates.p12 config/certs
# 修改es配置文件
vi ./config/elasticsearch.yml
# 修改以下配置
xpack.security.enabled: true
xpack.security.enrollment.enabled: true
xpack.security.http.ssl:
enabled: true
keystore.path: certs/http.p12
xpack.security.transport.ssl:
enabled: true
verification_mode: certificate
keystore.path: certs/elastic-certificates.p12
truststore.path: certs/elastic-certificates.p12
# 注:如果是集群,需要将证书复制到其他节点,并修改配置文件如上
开启后的ES,需要通过https://你的IP:9092才能访问
# 签发Https证书
./bin/elasticsearch-certutil http ./config/certs/elastic-stack-ca.p12
# 执行后,会生成两个文件夹,移动证书文件
mv elasticsearch/http.p12 kibana/elasticsearch-ca.pem config/certs
./bin/elasticsearch-keystore list
# 修改Kibana配置 注 需要修改为https
elasticsearch.hosts: ["https://IP:9200"]
elasticsearch.ssl.certificateAuthorities: [ "/usr/local/kibana/config/elasticsearch-ca.pem" ]
# 如果需要多个kibana ,需要同步配置和证书
过程中肯定会有乱七八糟的问题,包括博主自己的jdk 环境变量需要注释,否则会读取到,都是自己慢慢摸索的过程,加油!