Elasticsearch 8.x + Kinaba 安装记录

Elasticsearch 8.x 安装记录


前言

安装包获取位置 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

查看用户组
Elasticsearch 8.x + Kinaba 安装记录_第1张图片

二、首次启动

1.启动

# 进入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

Elasticsearch 8.x + Kinaba 安装记录_第2张图片

2.启动

3.启动报错

3.1 警告内容如图 localAddress=/IP1, remoteAddress=/IP2

Elasticsearch 8.x + Kinaba 安装记录_第3张图片

# 关闭配置 ,开发环境建议这么处理,生产环境需要安装证书,后面会详细讲解
xpack.security.http.ssl.enabled: false

3.2 提示文件, 最大线程数, 最大虚拟内存不足

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

3.3 日志和数据文件不存在或权限不足

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/

3.4. 错误的下载了图数据库

error downloading geoip database [GeoLite2-ASN.mmdb]

# 添加配置
ingest.geoip.downloader.enabled: false

3.集群搭建(虚拟机实现)(选装)

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端口就可以访问了,

4.Kibana(未安全模式)

由于我们未启用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填入页面即可 

4.CA证书安装(开启安全模式)

4.1 ES的安全证书配置

# 在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才能访问

4.2 Kibana安全模式下的配置

# 签发Https证书
./bin/elasticsearch-certutil http ./config/certs/elastic-stack-ca.p12

4.2.1 此处有很多步骤,此处一一列举

CSR
Elasticsearch 8.x + Kinaba 安装记录_第4张图片Elasticsearch 8.x + Kinaba 安装记录_第5张图片
请添加图片描述
请添加图片描述
Elasticsearch 8.x + Kinaba 安装记录_第6张图片Elasticsearch 8.x + Kinaba 安装记录_第7张图片

Elasticsearch 8.x + Kinaba 安装记录_第8张图片

# 执行后,会生成两个文件夹,移动证书文件
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 环境变量需要注释,否则会读取到,都是自己慢慢摸索的过程,加油!

你可能感兴趣的:(elasticsearch,linux,大数据)