CentOS7二进制安装elasticsearch集群

一、介绍及规划

1.1 介绍

ElasticSearch 是一款开源的全文检索搜索的数据库。在 ELK 中作为一个组件。

1.2 规划

主机名 ip地址 系统版本 软件版本
es101 192.168.10.101 centos7 8.19.9
es102 192.168.10.102 centos7 8.19.9
es103 192.168.10.103 centos7 8.19.9
1
2
3
4
5
cat >> /etc/hosts <<EOF
192.168.10.101 es101
192.168.10.102 es102
192.168.10.103 es103
EOF
1
hostnamectl set-hostname es101
1
hostnamectl set-hostname es102
1
hostnamectl set-hostname es103

1.3 参数调优

  1. 文件句柄
1
vim /etc/security/limits.conf
1
2
* soft nofile 65536
* hard nofile 65536

:需重新登录 shell 生效

  1. 内核参数
1
vim /etc/sysctl.conf
1
vm.max_map_count=262144

​ 生效

1
sysctl -p

二、下载及安装

选择 8 系列目前的最新版本,安装在 opt 目录下。

2.1 下载

官网最新版下载地址

历史版本下载地址,这里选择 8.19.9 版本

1
cd /opt
1
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.19.9-linux-x86_64.tar.gz

2.2 安装

  1. 创建用户
1
2
useradd es
echo es |passwd es --stdin
  1. 解压
1
cd /opt
1
tar -zxvf elasticsearch-8.19.9-linux-x86_64.tar.gz
  1. 创建软链接
1
ln -s /opt/elasticsearch-8.19.9 /opt/elasticsearch
  1. 修改文件权限
1
chown -R es:es /opt/elasticsearch-8.19.9
1
chown -h es:es /opt/elasticsearch
  • -h 专门处理软链接的权限
  1. 设置环境变量
1
2
echo 'export ES_HOME=/opt/elasticsearch' > /etc/profile.d/es.sh
echo 'export PATH=$ES_HOME/bin:$PATH' >> /etc/profile.d/es.sh
  1. 刷新环境变量
1
source /etc/profile
  1. 验证版本
1
elasticsearch  --version

三、配置启动

3.1 自签名证书创建及分发

流程es101 一台机器生成证书然后分发给其他机器,需要注意权限。

  1. 创建证书文件夹
1
mkdir -pv $ES_HOME/config/certs
  1. 创建根证书 ca
1
elasticsearch-certutil ca --out $ES_HOME/elastic-stack-ca.p12 --pass ""
  1. 生成集群通用证书
    注意: 证书默认是3年的。
1
2
3
elasticsearch-certutil cert --ca $ES_HOME/elastic-stack-ca.p12 \
--out $ES_HOME/config/certs/elastic-certificates.p12 \
--pass ""

​ 生成10年的证书

1
2
3
4
elasticsearch-certutil cert --ca $ES_HOME/elastic-stack-ca.p12 \
--days 3650 \
--out $ES_HOME/config/certs/elastic-certificates.p12 \
--pass ""
  1. 修改证书文件夹权限
1
chown -R es:es $ES_HOME/config/certs
  1. 分发到 es102
1
ssh root@192.168.10.102 "mkdir -p $ES_HOME/config/certs"
1
scp $ES_HOME/config/certs/elastic-certificates.p12 root@192.168.10.102:$ES_HOME/config/certs/
1
ssh root@192.168.10.102 "chown -R es:es $ES_HOME/config/certs"
  1. 分发到 es103
1
ssh root@192.168.10.103 "mkdir -p $ES_HOME/config/certs"
1
scp $ES_HOME/config/certs/elastic-certificates.p12 root@192.168.10.103:$ES_HOME/config/certs/
1
ssh root@192.168.10.103 "chown -R es:es $ES_HOME/config/certs"
  1. 查看权限
1
ls -l $ES_HOME/config/certs/elastic-certificates.p12
  1. 查看证书有效期
1
openssl pkcs12 -in 证书路径 -nokeys -passin pass: | openssl x509 -noout -dates

3.2 修改配置文件

  1. 备份配置文件
1
cp $ES_HOME/config/elasticsearch.yml{,.bak}
  1. 修改配置文件,三台机器只有 node.namenetwork.host 不一样。node.name 和主机名不是必须一样。
1
vi $ES_HOME/config/elasticsearch.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# ======================== 必须修改的部分 =========================
cluster.name: my-es-cluster
node.name: es101 # 【直接用你的主机名】
network.host: 192.168.10.101 # 【建议写IP,或者写 es101 也可以】

# ======================== 固定配置 (三台一样) =========================
http.port: 9200
transport.port: 9300

# 发现列表 (写IP或者主机名都可以,写主机名更优雅)
discovery.seed_hosts: ["es101", "es102", "es103"]

# 【重要】初始化主节点 (这里必须填 node.name 的值!)
cluster.initial_master_nodes: ["es101", "es102", "es103"]

# 路径配置
path.data: /opt/elasticsearch/data
path.logs: /opt/elasticsearch/logs

# 安全配置 (Security)
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.keystore.path: certs/elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: certs/elastic-certificates.p12
xpack.security.http.ssl.enabled: false

3.3 配置 systemd 并启动

  1. 创建必需的文件夹,顺带修改权限
1
2
mkdir -p /opt/elasticsearch/var/run
chown -R es:es /opt/elasticsearch/var/run
  1. 创建 systemd 文件
1
vi /etc/systemd/system/elasticsearch.service
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
[Unit]
Description=Elasticsearch
Documentation=https://www.elastic.co
Wants=network-online.target
After=network-online.target

[Service]
Type=simple
# 指定运行用户
User=es
Group=es

# 环境变量与路径 (全部使用绝对路径)
# 可以使用外部的JDK
# Environment=JAVA_HOME=/usr/local/java
Environment=ES_HOME=/opt/elasticsearch
Environment=ES_PATH_CONF=/opt/elasticsearch/config
Environment=PID_DIR=/opt/elasticsearch/var/run

# 启动命令
ExecStart=/opt/elasticsearch/bin/elasticsearch -p /opt/elasticsearch/var/run/elasticsearch.pid --quiet

# 资源限制 (对应之前的 ulimit 设置)
LimitNOFILE=65535
LimitMEMLOCK=infinity
LimitNPROC=4096
LimitAS=infinity

# 退出处理
KillMode=process
Restart=on-failure
RestartSec=3

[Install]
WantedBy=multi-user.target
  1. 重载配置并设置开机启动
1
2
systemctl daemon-reload
systemctl enable elasticsearch
  1. 启动
1
systemctl start elasticsearch
  1. 查看状态
1
systemctl status elasticsearch
  1. 查看日志
1
journalctl -u elasticsearch -f
1
tail -f /opt/elasticsearch/logs/my-es-cluster.log

3.4 修改密码

任意节点修改即可。

  1. 切换到 es 用户
1
su - es
  1. 交互式重置密码
1
/opt/elasticsearch/bin/elasticsearch-reset-password -u elastic -i
  • elastic
  • elastic
  1. 验证
1
curl -u elastic:elastic -X GET "http://192.168.10.101:9200/_cat/nodes?v"

3.5 修改 JVM 堆内存大小(可选)

不要直接去改 jvm.options 那个大文件(那样升级时容易被覆盖)。 ES 推荐在 jvm.options.d/ 目录下新建一个文件。

  1. 修改
1
vim /opt/elasticsearch/config/jvm.options.d/heap.options
1
2
-Xms2g
-Xmx2g
  1. 重载
1
systemctl restart elasticsearch

四、测试访问

浏览器插件

1
2
ES Client
Elasticvue